crypt_argon2_version:
   86|      1|{
   87|      1|	const char *version = "";
   88|       |
   89|      1|	if (crypt_backend_flags() & CRYPT_BACKEND_ARGON2)
  ------------------
  |  |   38|      1|#define CRYPT_BACKEND_ARGON2     (1 << 2) /* Backend provides native Argon2 implementation */
  ------------------
  |  Branch (89:6): [True: 1, False: 0]
  ------------------
   90|      1|		return version;
   91|       |
   92|       |#if HAVE_ARGON2_H /* this has priority over internal argon2 */
   93|       |	version = " [external libargon2]";
   94|       |#elif USE_INTERNAL_ARGON2
   95|       |	version = " [cryptsetup libargon2]";
   96|       |#endif
   97|      0|	return version;
   98|      1|}

crypt_backend_init:
  220|  10.1k|{
  221|  10.1k|	if (crypto_backend_initialised)
  ------------------
  |  Branch (221:6): [True: 10.1k, False: 1]
  ------------------
  222|  10.1k|		return 0;
  223|       |
  224|      1|	if (openssl_backend_init(crypt_fips_mode()))
  ------------------
  |  Branch (224:6): [True: 0, False: 1]
  ------------------
  225|      0|		return -EINVAL;
  226|       |
  227|      1|	crypto_backend_initialised = 1;
  228|      1|	return 0;
  229|      1|}
crypt_backend_flags:
  245|      2|{
  246|      2|	uint32_t flags = 0;
  247|       |#if !OPENSSL3_API
  248|       |	flags |= CRYPT_BACKEND_PBKDF2_INT;
  249|       |#endif
  250|      2|#if OPENSSL3_API && HAVE_DECL_OSSL_KDF_PARAM_ARGON2_VERSION
  251|      2|	flags |= CRYPT_BACKEND_ARGON2;
  ------------------
  |  |   38|      2|#define CRYPT_BACKEND_ARGON2     (1 << 2) /* Backend provides native Argon2 implementation */
  ------------------
  252|      2|#endif
  253|      2|	return flags;
  254|      2|}
crypt_backend_version:
  257|      1|{
  258|      1|	return openssl_backend_version();
  259|      1|}
crypt_hash_size:
  323|   783k|{
  324|   783k|	int size;
  325|   783k|	const EVP_MD *hash_id;
  326|       |
  327|   783k|	hash_id = hash_id_get(name);
  328|   783k|	if (!hash_id)
  ------------------
  |  Branch (328:6): [True: 486, False: 783k]
  ------------------
  329|    486|		return -EINVAL;
  330|       |
  331|   783k|	size = EVP_MD_size(hash_id);
  ------------------
  |  |  471|   783k|#define EVP_MD_size EVP_MD_get_size
  ------------------
  332|   783k|	hash_id_free(hash_id);
  333|   783k|	return size;
  334|   783k|}
crypt_hash_init:
  337|  9.59k|{
  338|  9.59k|	struct crypt_hash *h;
  339|       |
  340|  9.59k|	h = malloc(sizeof(*h));
  341|  9.59k|	if (!h)
  ------------------
  |  Branch (341:6): [True: 0, False: 9.59k]
  ------------------
  342|      0|		return -ENOMEM;
  343|       |
  344|  9.59k|	h->md = EVP_MD_CTX_new();
  345|  9.59k|	if (!h->md) {
  ------------------
  |  Branch (345:6): [True: 0, False: 9.59k]
  ------------------
  346|      0|		free(h);
  347|      0|		return -ENOMEM;
  348|      0|	}
  349|       |
  350|  9.59k|	h->hash_id = hash_id_get(name);
  351|  9.59k|	if (!h->hash_id) {
  ------------------
  |  Branch (351:6): [True: 0, False: 9.59k]
  ------------------
  352|      0|		EVP_MD_CTX_free(h->md);
  353|      0|		free(h);
  354|      0|		return -EINVAL;
  355|      0|	}
  356|       |
  357|  9.59k|	if (EVP_DigestInit_ex(h->md, h->hash_id, NULL) != 1) {
  ------------------
  |  Branch (357:6): [True: 0, False: 9.59k]
  ------------------
  358|      0|		hash_id_free(h->hash_id);
  359|      0|		EVP_MD_CTX_free(h->md);
  360|      0|		free(h);
  361|      0|		return -EINVAL;
  362|      0|	}
  363|       |
  364|  9.59k|	h->hash_len = EVP_MD_size(h->hash_id);
  ------------------
  |  |  471|  9.59k|#define EVP_MD_size EVP_MD_get_size
  ------------------
  365|  9.59k|	*ctx = h;
  366|  9.59k|	return 0;
  367|  9.59k|}
crypt_hash_write:
  378|  19.1k|{
  379|  19.1k|	if (EVP_DigestUpdate(ctx->md, buffer, length) != 1)
  ------------------
  |  Branch (379:6): [True: 0, False: 19.1k]
  ------------------
  380|      0|		return -EINVAL;
  381|       |
  382|  19.1k|	return 0;
  383|  19.1k|}
crypt_hash_final:
  386|  9.59k|{
  387|  9.59k|	unsigned char tmp[EVP_MAX_MD_SIZE];
  388|  9.59k|	unsigned int tmp_len = 0;
  389|       |
  390|  9.59k|	if (length > (size_t)ctx->hash_len)
  ------------------
  |  Branch (390:6): [True: 0, False: 9.59k]
  ------------------
  391|      0|		return -EINVAL;
  392|       |
  393|  9.59k|	if (EVP_DigestFinal_ex(ctx->md, tmp, &tmp_len) != 1)
  ------------------
  |  Branch (393:6): [True: 0, False: 9.59k]
  ------------------
  394|      0|		return -EINVAL;
  395|       |
  396|  9.59k|	if (tmp_len < length) {
  ------------------
  |  Branch (396:6): [True: 0, False: 9.59k]
  ------------------
  397|      0|		crypt_backend_memzero(tmp, sizeof(tmp));
  398|      0|		return -EINVAL;
  399|      0|	}
  400|       |
  401|  9.59k|	crypt_backend_memcpy(buffer, tmp, length);
  402|  9.59k|	crypt_backend_memzero(tmp, sizeof(tmp));
  403|       |
  404|  9.59k|	if (crypt_hash_restart(ctx))
  ------------------
  |  Branch (404:6): [True: 0, False: 9.59k]
  ------------------
  405|      0|		return -EINVAL;
  406|       |
  407|  9.59k|	return 0;
  408|  9.59k|}
crypt_hash_destroy:
  411|  9.59k|{
  412|  9.59k|	hash_id_free(ctx->hash_id);
  413|  9.59k|	EVP_MD_CTX_free(ctx->md);
  414|  9.59k|	free(ctx);
  415|  9.59k|}
crypt_fips_mode:
  954|  6.27k|bool crypt_fips_mode(void) { return false; }
crypto_openssl.c:openssl_backend_init:
  161|      1|{
  162|       |/*
  163|       | * OpenSSL >= 3.0.0 provides some algorithms in legacy provider
  164|       | */
  165|      1|#if OPENSSL3_API
  166|      1|	int r;
  167|      1|	bool ossl_threads = false;
  168|       |
  169|       |	/*
  170|       |	 * In FIPS mode we keep default OpenSSL context & global config
  171|       |	 */
  172|      1|	if (!fips) {
  ------------------
  |  Branch (172:6): [True: 1, False: 0]
  ------------------
  173|      1|		ossl_ctx = OSSL_LIB_CTX_new();
  174|      1|		if (!ossl_ctx)
  ------------------
  |  Branch (174:7): [True: 0, False: 1]
  ------------------
  175|      0|			return -EINVAL;
  176|       |
  177|      1|		ossl_default = OSSL_PROVIDER_try_load(ossl_ctx, "default", 0);
  178|      1|		if (!ossl_default) {
  ------------------
  |  Branch (178:7): [True: 0, False: 1]
  ------------------
  179|      0|			OSSL_LIB_CTX_free(ossl_ctx);
  180|      0|			return -EINVAL;
  181|      0|		}
  182|       |
  183|       |		/* Optional */
  184|      1|		ossl_legacy = OSSL_PROVIDER_try_load(ossl_ctx, "legacy", 0);
  185|      1|	}
  186|       |
  187|      1|	if (OSSL_set_max_threads(ossl_ctx, MAX_THREADS) == 1 &&
  ------------------
  |  |   39|      1|#define MAX_THREADS 64
  ------------------
  |  Branch (187:6): [True: 1, False: 0]
  ------------------
  188|      1|	    OSSL_get_max_threads(ossl_ctx) == MAX_THREADS)
  ------------------
  |  |   39|      1|#define MAX_THREADS 64
  ------------------
  |  Branch (188:6): [True: 1, False: 0]
  ------------------
  189|      1|		ossl_threads = true;
  190|       |
  191|      1|	r = snprintf(backend_version, sizeof(backend_version), "%s %s%s%s%s%s",
  192|      1|		OpenSSL_version(OPENSSL_VERSION),
  ------------------
  |  |  188|      1|#define OPENSSL_VERSION 0
  ------------------
  193|      1|		ossl_default ? "[default]" : "",
  ------------------
  |  Branch (193:3): [True: 1, False: 0]
  ------------------
  194|      1|		ossl_legacy  ? "[legacy]" : "",
  ------------------
  |  Branch (194:3): [True: 1, False: 0]
  ------------------
  195|      1|		fips  ? "[fips]" : "",
  ------------------
  |  Branch (195:3): [True: 0, False: 1]
  ------------------
  196|      1|		ossl_threads ? "[threads]" : "",
  ------------------
  |  Branch (196:3): [True: 1, False: 0]
  ------------------
  197|      1|		crypt_backend_flags() & CRYPT_BACKEND_ARGON2 ? "[argon2]" : "");
  ------------------
  |  |   38|      1|#define CRYPT_BACKEND_ARGON2     (1 << 2) /* Backend provides native Argon2 implementation */
  ------------------
  |  Branch (197:3): [True: 1, False: 0]
  ------------------
  198|       |
  199|      1|	if (r < 0 || (size_t)r >= sizeof(backend_version)) {
  ------------------
  |  Branch (199:6): [True: 0, False: 1]
  |  Branch (199:15): [True: 0, False: 1]
  ------------------
  200|      0|		openssl_backend_exit();
  201|      0|		return -EINVAL;
  202|      0|	}
  203|       |#else
  204|       |	UNUSED(fips);
  205|       |#endif
  206|      1|	return 0;
  207|      1|}
crypto_openssl.c:openssl_backend_version:
  210|      1|{
  211|      1|#if OPENSSL3_API
  212|      1|	return backend_version;
  213|       |#else
  214|       |	return OpenSSL_version(OPENSSL_VERSION);
  215|       |#endif
  216|      1|}
crypto_openssl.c:hash_id_get:
  286|   793k|{
  287|   793k|#if OPENSSL3_API
  288|   793k|	return EVP_MD_fetch(ossl_ctx, crypt_hash_compat_name(name), NULL);
  289|       |#else
  290|       |	return EVP_get_digestbyname(crypt_hash_compat_name(name));
  291|       |#endif
  292|   793k|}
crypto_openssl.c:crypt_hash_compat_name:
  262|   793k|{
  263|   793k|	const char *hash_name = name;
  264|   793k|	int i;
  265|   793k|	static struct hash_alg hash_algs[] = {
  266|   793k|	{ "blake2b-512", "blake2b512" },
  267|   793k|	{ "blake2s-256", "blake2s256" },
  268|   793k|	{ NULL,          NULL,         }};
  269|       |
  270|   793k|	if (!name)
  ------------------
  |  Branch (270:6): [True: 0, False: 793k]
  ------------------
  271|      0|		return NULL;
  272|       |
  273|   793k|	i = 0;
  274|  2.36M|	while (hash_algs[i].name) {
  ------------------
  |  Branch (274:9): [True: 1.58M, False: 785k]
  ------------------
  275|  1.58M|		if (!strcasecmp(name, hash_algs[i].name)) {
  ------------------
  |  Branch (275:7): [True: 7.74k, False: 1.57M]
  ------------------
  276|  7.74k|			hash_name =  hash_algs[i].openssl_name;
  277|  7.74k|			break;
  278|  7.74k|		}
  279|  1.57M|		i++;
  280|  1.57M|	}
  281|       |
  282|   793k|	return hash_name;
  283|   793k|}
crypto_openssl.c:hash_id_free:
  295|   792k|{
  296|   792k|#if OPENSSL3_API
  297|   792k|	EVP_MD_free(CONST_CAST(EVP_MD*)hash_id);
  ------------------
  |  |   50|   792k|#define CONST_CAST(x) (x)(uintptr_t)
  ------------------
  298|       |#else
  299|       |	UNUSED(hash_id);
  300|       |#endif
  301|   792k|}
crypto_openssl.c:crypt_hash_restart:
  370|  9.59k|{
  371|  9.59k|	if (EVP_DigestInit_ex(ctx->md, ctx->hash_id, NULL) != 1)
  ------------------
  |  Branch (371:6): [True: 0, False: 9.59k]
  ------------------
  372|      0|		return -EINVAL;
  373|       |
  374|  9.59k|	return 0;
  375|  9.59k|}

crypt_backend_memzero:
   27|  33.3k|{
   28|  33.3k|#if HAVE_EXPLICIT_BZERO
   29|  33.3k|	explicit_bzero(s, n);
   30|       |#else
   31|       |	volatile uint8_t *p = (volatile uint8_t *)s;
   32|       |	while(n--) *p++ = 0;
   33|       |#endif
   34|  33.3k|}
crypt_backend_memcpy:
   39|  9.59k|{
   40|  9.59k|	volatile uint8_t *d = (volatile uint8_t *)dst;
   41|  9.59k|	const volatile uint8_t *s = (const volatile uint8_t *)src;
   42|       |
   43|   428k|	while(n--) *d++ = *s++;
  ------------------
  |  Branch (43:8): [True: 419k, False: 9.59k]
  ------------------
   44|       |
   45|  9.59k|	return dst;
   46|  9.59k|}

crypt_pbkdf_get_limits:
   30|  4.18k|{
   31|  4.18k|	if (!kdf || !limits)
  ------------------
  |  Branch (31:6): [True: 0, False: 4.18k]
  |  Branch (31:14): [True: 0, False: 4.18k]
  ------------------
   32|      0|		return -EINVAL;
   33|       |
   34|  4.18k|	if (!strcmp(kdf, "pbkdf2")) {
  ------------------
  |  Branch (34:6): [True: 0, False: 4.18k]
  ------------------
   35|      0|		limits->min_iterations = 1000; /* recommendation in NIST SP 800-132 */
   36|      0|		limits->max_iterations = UINT32_MAX;
   37|      0|		limits->min_memory     = 0; /* N/A */
   38|      0|		limits->min_bench_memory=0; /* N/A */
   39|      0|		limits->max_memory     = 0; /* N/A */
   40|      0|		limits->min_parallel   = 0; /* N/A */
   41|      0|		limits->max_parallel   = 0; /* N/A */
   42|      0|		return 0;
   43|  4.18k|	} else if (!strcmp(kdf, "argon2i") || !strcmp(kdf, "argon2id")) {
  ------------------
  |  Branch (43:13): [True: 0, False: 4.18k]
  |  Branch (43:40): [True: 4.18k, False: 0]
  ------------------
   44|  4.18k|		limits->min_iterations = 4;
   45|  4.18k|		limits->max_iterations = UINT32_MAX;
   46|  4.18k|		limits->min_memory     = 32;      /* hard limit */
   47|  4.18k|		limits->min_bench_memory=64*1024; /* 64 MiB minimum for benchmark */
   48|  4.18k|		limits->max_memory     = 4*1024*1024; /* 4GiB */
   49|  4.18k|		limits->min_parallel   = 1;
   50|  4.18k|		limits->max_parallel   = 4;
   51|  4.18k|		return 0;
   52|  4.18k|	}
   53|       |
   54|      0|	return -EINVAL;
   55|  4.18k|}

setup.c:crypt_zalloc:
  272|  5.94k|static inline void *crypt_zalloc(size_t size) { return calloc(1, size); }

dm_backend_init:
  395|  5.94k|{
  396|  5.94k|	if (!_dm_use_count++) {
  ------------------
  |  Branch (396:6): [True: 5.94k, False: 0]
  ------------------
  397|  5.94k|		log_dbg(cd, "Initialising device-mapper backend library.");
  ------------------
  |  |  186|  5.94k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  5.94k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  398|  5.94k|		dm_log_init(set_dm_error);
  399|  5.94k|		dm_log_init_verbose(10);
  400|  5.94k|	}
  401|  5.94k|}
dm_backend_exit:
  404|  5.94k|{
  405|  5.94k|	if (_dm_use_count && (!--_dm_use_count)) {
  ------------------
  |  Branch (405:6): [True: 5.94k, False: 0]
  |  Branch (405:23): [True: 5.94k, False: 0]
  ------------------
  406|  5.94k|		log_dbg(cd, "Releasing device-mapper backend.");
  ------------------
  |  |  186|  5.94k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  5.94k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  407|  5.94k|		dm_log_init_verbose(0);
  408|       |		dm_log_init(NULL);
  409|  5.94k|		dm_lib_release();
  410|  5.94k|	}
  411|  5.94k|}

LUKS2_disk_hdr_read:
  642|  8.02k|{
  643|  8.02k|	enum { HDR_OK, HDR_OBSOLETE, HDR_FAIL, HDR_FAIL_IO } state_hdr1, state_hdr2;
  644|  8.02k|	struct luks2_hdr_disk hdr_disk1, hdr_disk2;
  645|  8.02k|	char *json_area1 = NULL, *json_area2 = NULL;
  646|  8.02k|	json_object *jobj_hdr1 = NULL, *jobj_hdr2 = NULL;
  647|  8.02k|	unsigned int i;
  648|  8.02k|	int r;
  649|  8.02k|	uint64_t hdr_size, json_area_end1 = 0, json_area_end2 = 0;
  650|  8.02k|	uint64_t hdr2_offsets[] = LUKS2_HDR2_OFFSETS;
  ------------------
  |  |  155|  8.02k|#define LUKS2_HDR2_OFFSETS { 0x04000, 0x008000, 0x010000, 0x020000, \
  |  |  156|  8.02k|                             0x40000, 0x080000, 0x100000, 0x200000, LUKS2_HDR_OFFSET_MAX }
  |  |  ------------------
  |  |  |  |  150|  8.02k|#define LUKS2_HDR_OFFSET_MAX 0x400000 /* 4 MiB */
  |  |  ------------------
  ------------------
  651|       |
  652|       |	/* Skip auto-recovery if locks are disabled and we're not doing LUKS2 explicit repair */
  653|  8.02k|	if (do_recovery && do_blkprobe && !crypt_metadata_locking_enabled()) {
  ------------------
  |  Branch (653:6): [True: 8.02k, False: 0]
  |  Branch (653:21): [True: 8.02k, False: 0]
  |  Branch (653:36): [True: 0, False: 8.02k]
  ------------------
  654|      0|		do_recovery = 0;
  655|      0|		log_dbg(cd, "Disabling header auto-recovery due to locking being disabled.");
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  656|      0|	}
  657|       |
  658|       |	/*
  659|       |	 * Read primary LUKS2 header (offset 0).
  660|       |	 */
  661|  8.02k|	state_hdr1 = HDR_FAIL;
  662|  8.02k|	r = hdr_read_disk(cd, device, &hdr_disk1, &json_area1, 0, 0);
  663|  8.02k|	if (r == 0) {
  ------------------
  |  Branch (663:6): [True: 1.34k, False: 6.68k]
  ------------------
  664|  1.34k|		jobj_hdr1 = parse_and_validate_json(cd, json_area1, be64_to_cpu(hdr_disk1.hdr_size), &json_area_end1);
  ------------------
  |  |  107|  1.34k|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  665|  1.34k|		state_hdr1 = jobj_hdr1 ? HDR_OK : HDR_OBSOLETE;
  ------------------
  |  Branch (665:16): [True: 579, False: 762]
  ------------------
  666|  6.68k|	} else if (r == -EIO)
  ------------------
  |  Branch (666:13): [True: 0, False: 6.68k]
  ------------------
  667|      0|		state_hdr1 = HDR_FAIL_IO;
  668|       |
  669|       |	/*
  670|       |	 * Read secondary LUKS2 header (follows primary).
  671|       |	 */
  672|  8.02k|	state_hdr2 = HDR_FAIL;
  673|  8.02k|	if (state_hdr1 != HDR_FAIL && state_hdr1 != HDR_FAIL_IO) {
  ------------------
  |  Branch (673:6): [True: 1.34k, False: 6.68k]
  |  Branch (673:32): [True: 1.34k, False: 0]
  ------------------
  674|  1.34k|		r = hdr_read_disk(cd, device, &hdr_disk2, &json_area2, be64_to_cpu(hdr_disk1.hdr_size), 1);
  ------------------
  |  |  107|  1.34k|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  675|  1.34k|		if (r == 0) {
  ------------------
  |  Branch (675:7): [True: 0, False: 1.34k]
  ------------------
  676|      0|			jobj_hdr2 = parse_and_validate_json(cd, json_area2, be64_to_cpu(hdr_disk2.hdr_size), &json_area_end2);
  ------------------
  |  |  107|      0|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  677|      0|			state_hdr2 = jobj_hdr2 ? HDR_OK : HDR_OBSOLETE;
  ------------------
  |  Branch (677:17): [True: 0, False: 0]
  ------------------
  678|  1.34k|		} else if (r == -EIO)
  ------------------
  |  Branch (678:14): [True: 0, False: 1.34k]
  ------------------
  679|      0|			state_hdr2 = HDR_FAIL_IO;
  680|  6.68k|	} else {
  681|       |		/*
  682|       |		 * No header size, check all known offsets.
  683|       |		 */
  684|  6.68k|		hdr_disk2.hdr_size = 0;
  685|  34.2k|		for (r = -EINVAL,i = 0; r < 0 && i < ARRAY_SIZE(hdr2_offsets); i++)
  ------------------
  |  |   21|  28.8k|# define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
  ------------------
  |  Branch (685:27): [True: 28.8k, False: 5.42k]
  |  Branch (685:36): [True: 27.6k, False: 1.25k]
  ------------------
  686|  27.6k|			r = hdr_read_disk(cd, device, &hdr_disk2, &json_area2, hdr2_offsets[i], 1);
  687|       |
  688|  6.68k|		if (r == 0) {
  ------------------
  |  Branch (688:7): [True: 5.42k, False: 1.25k]
  ------------------
  689|  5.42k|			jobj_hdr2 = parse_and_validate_json(cd, json_area2, be64_to_cpu(hdr_disk2.hdr_size), &json_area_end2);
  ------------------
  |  |  107|  5.42k|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  690|  5.42k|			state_hdr2 = jobj_hdr2 ? HDR_OK : HDR_OBSOLETE;
  ------------------
  |  Branch (690:17): [True: 5.41k, False: 12]
  ------------------
  691|  5.42k|		} else if (r == -EIO)
  ------------------
  |  Branch (691:14): [True: 0, False: 1.25k]
  ------------------
  692|      0|			state_hdr2 = HDR_FAIL_IO;
  693|  6.68k|	}
  694|       |
  695|       |	/*
  696|       |	 * Check sequence id if both headers are read correctly.
  697|       |	 */
  698|  8.02k|	if (state_hdr1 == HDR_OK && state_hdr2 == HDR_OK) {
  ------------------
  |  Branch (698:6): [True: 579, False: 7.44k]
  |  Branch (698:30): [True: 0, False: 579]
  ------------------
  699|      0|		if (be64_to_cpu(hdr_disk1.seqid) > be64_to_cpu(hdr_disk2.seqid))
  ------------------
  |  |  107|      0|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
              		if (be64_to_cpu(hdr_disk1.seqid) > be64_to_cpu(hdr_disk2.seqid))
  ------------------
  |  |  107|      0|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  |  Branch (699:7): [True: 0, False: 0]
  ------------------
  700|      0|			state_hdr2 = HDR_OBSOLETE;
  701|      0|		else if (be64_to_cpu(hdr_disk1.seqid) < be64_to_cpu(hdr_disk2.seqid))
  ------------------
  |  |  107|      0|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
              		else if (be64_to_cpu(hdr_disk1.seqid) < be64_to_cpu(hdr_disk2.seqid))
  ------------------
  |  |  107|      0|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  |  Branch (701:12): [True: 0, False: 0]
  ------------------
  702|      0|			state_hdr1 = HDR_OBSOLETE;
  703|      0|	}
  704|       |
  705|       |	/* check header with keyslots to fit the device */
  706|  8.02k|	if (state_hdr1 == HDR_OK)
  ------------------
  |  Branch (706:6): [True: 579, False: 7.44k]
  ------------------
  707|    579|		hdr_size = LUKS2_hdr_and_areas_size_jobj(jobj_hdr1);
  708|  7.44k|	else if (state_hdr2 == HDR_OK)
  ------------------
  |  Branch (708:11): [True: 5.41k, False: 2.03k]
  ------------------
  709|  5.41k|		hdr_size = LUKS2_hdr_and_areas_size_jobj(jobj_hdr2);
  710|  2.03k|	else {
  711|  2.03k|		r = (state_hdr1 == HDR_FAIL_IO && state_hdr2 == HDR_FAIL_IO) ? -EIO : -EINVAL;
  ------------------
  |  Branch (711:8): [True: 0, False: 2.03k]
  |  Branch (711:37): [True: 0, False: 0]
  ------------------
  712|  2.03k|		goto err;
  713|  2.03k|	}
  714|       |
  715|  5.99k|	r = device_check_size(cd, device, hdr_size, 0);
  716|  5.99k|	if (r)
  ------------------
  |  Branch (716:6): [True: 1, False: 5.99k]
  ------------------
  717|      1|		goto err;
  718|       |
  719|       |	/*
  720|       |	 * Try to rewrite (recover) bad header. Always regenerate salt for bad header.
  721|       |	 */
  722|  5.99k|	if (state_hdr1 == HDR_OK && state_hdr2 != HDR_OK) {
  ------------------
  |  Branch (722:6): [True: 578, False: 5.41k]
  |  Branch (722:30): [True: 578, False: 0]
  ------------------
  723|    578|		log_dbg(cd, "Secondary LUKS2 header requires recovery.");
  ------------------
  |  |  186|    578|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|    578|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  724|       |
  725|    578|		if (do_blkprobe && (r = detect_device_signatures(cd, device_path(device)))) {
  ------------------
  |  Branch (725:7): [True: 578, False: 0]
  |  Branch (725:22): [True: 24, False: 554]
  ------------------
  726|     24|			log_err(cd, _("Device contains ambiguous signatures, cannot auto-recover LUKS2.\n"
  ------------------
  |  |  189|     24|#define log_err(c, x...) crypt_logf(c, CRYPT_LOG_ERROR, x)
  |  |  ------------------
  |  |  |  |  176|     24|#define CRYPT_LOG_ERROR  1
  |  |  ------------------
  ------------------
  727|     24|				      "Please run \"cryptsetup repair\" for recovery."));
  728|     24|			goto err;
  729|     24|		}
  730|       |
  731|    554|		if (do_recovery) {
  ------------------
  |  Branch (731:7): [True: 554, False: 0]
  ------------------
  732|    554|			memcpy(&hdr_disk2, &hdr_disk1, LUKS2_HDR_BIN_LEN);
  ------------------
  |  |  143|    554|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
  733|    554|			r = crypt_random_get(cd, (char*)hdr_disk2.salt, sizeof(hdr_disk2.salt), CRYPT_RND_SALT);
  734|    554|			if (r)
  ------------------
  |  Branch (734:8): [True: 0, False: 554]
  ------------------
  735|      0|				log_dbg(cd, "Cannot generate header salt.");
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  736|    554|			else {
  737|    554|				hdr_from_disk(&hdr_disk1, &hdr_disk2, hdr, 0);
  738|    554|				r = hdr_write_disk(cd, device, hdr, json_area1, hdr->hdr_size - LUKS2_HDR_BIN_LEN, 1);
  ------------------
  |  |  143|    554|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
  739|    554|			}
  740|    554|			if (r)
  ------------------
  |  Branch (740:8): [True: 277, False: 277]
  ------------------
  741|    277|				log_dbg(cd, "Secondary LUKS2 header recovery failed.");
  ------------------
  |  |  186|    277|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|    277|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  742|    554|		}
  743|  5.41k|	} else if (state_hdr1 != HDR_OK && state_hdr2 == HDR_OK) {
  ------------------
  |  Branch (743:13): [True: 5.41k, False: 0]
  |  Branch (743:37): [True: 5.41k, False: 0]
  ------------------
  744|  5.41k|		log_dbg(cd, "Primary LUKS2 header requires recovery.");
  ------------------
  |  |  186|  5.41k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  5.41k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  745|       |
  746|  5.41k|		if (do_blkprobe && (r = detect_device_signatures(cd, device_path(device)))) {
  ------------------
  |  Branch (746:7): [True: 5.41k, False: 0]
  |  Branch (746:22): [True: 1.78k, False: 3.62k]
  ------------------
  747|  1.78k|			log_err(cd, _("Device contains ambiguous signatures, cannot auto-recover LUKS2.\n"
  ------------------
  |  |  189|  1.78k|#define log_err(c, x...) crypt_logf(c, CRYPT_LOG_ERROR, x)
  |  |  ------------------
  |  |  |  |  176|  1.78k|#define CRYPT_LOG_ERROR  1
  |  |  ------------------
  ------------------
  748|  1.78k|				      "Please run \"cryptsetup repair\" for recovery."));
  749|  1.78k|			goto err;
  750|  1.78k|		}
  751|       |
  752|  3.62k|		if (do_recovery) {
  ------------------
  |  Branch (752:7): [True: 3.62k, False: 0]
  ------------------
  753|  3.62k|			memcpy(&hdr_disk1, &hdr_disk2, LUKS2_HDR_BIN_LEN);
  ------------------
  |  |  143|  3.62k|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
  754|  3.62k|			r = crypt_random_get(cd, (char*)hdr_disk1.salt, sizeof(hdr_disk1.salt), CRYPT_RND_SALT);
  755|  3.62k|			if (r)
  ------------------
  |  Branch (755:8): [True: 0, False: 3.62k]
  ------------------
  756|      0|				log_dbg(cd, "Cannot generate header salt.");
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  757|  3.62k|			else {
  758|  3.62k|				hdr_from_disk(&hdr_disk2, &hdr_disk1, hdr, 1);
  759|  3.62k|				r = hdr_write_disk(cd, device, hdr, json_area2, hdr->hdr_size - LUKS2_HDR_BIN_LEN, 0);
  ------------------
  |  |  143|  3.62k|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
  760|  3.62k|			}
  761|  3.62k|			if (r)
  ------------------
  |  Branch (761:8): [True: 1.81k, False: 1.81k]
  ------------------
  762|  1.81k|				log_dbg(cd, "Primary LUKS2 header recovery failed.");
  ------------------
  |  |  186|  1.81k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  1.81k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  763|  3.62k|		}
  764|  3.62k|	}
  765|       |
  766|  4.18k|	free(json_area1);
  767|  4.18k|	json_area1 = NULL;
  768|  4.18k|	free(json_area2);
  769|  4.18k|	json_area2 = NULL;
  770|       |
  771|       |	/* wrong lock for write mode during recovery attempt */
  772|  4.18k|	if (r == -EAGAIN)
  ------------------
  |  Branch (772:6): [True: 2.09k, False: 2.09k]
  ------------------
  773|  2.09k|		goto err;
  774|       |
  775|       |	/*
  776|       |	 * Even if status is failed, the second header includes salt.
  777|       |	 */
  778|  2.09k|	if (state_hdr1 == HDR_OK) {
  ------------------
  |  Branch (778:6): [True: 277, False: 1.81k]
  ------------------
  779|    277|		hdr_from_disk(&hdr_disk1, &hdr_disk2, hdr, 0);
  780|    277|		hdr->jobj = jobj_hdr1;
  781|    277|		json_object_put(jobj_hdr2);
  782|  1.81k|	} else if (state_hdr2 == HDR_OK) {
  ------------------
  |  Branch (782:13): [True: 1.81k, False: 0]
  ------------------
  783|  1.81k|		hdr_from_disk(&hdr_disk2, &hdr_disk1, hdr, 1);
  784|  1.81k|		hdr->jobj = jobj_hdr2;
  785|  1.81k|		json_object_put(jobj_hdr1);
  786|  1.81k|	}
  787|       |
  788|  2.09k|	if (json_area_end1 > json_area_end2)
  ------------------
  |  Branch (788:6): [True: 277, False: 1.81k]
  ------------------
  789|    277|		hdr->on_disk_json_end_offset = json_area_end1;
  790|  1.81k|	else
  791|  1.81k|		hdr->on_disk_json_end_offset = json_area_end2;
  792|       |
  793|       |	/*
  794|       |	 * FIXME: should this fail? At least one header was read correctly.
  795|       |	 * r = (state_hdr1 == HDR_FAIL_IO || state_hdr2 == HDR_FAIL_IO) ? -EIO : -EINVAL;
  796|       |	 */
  797|  2.09k|	return 0;
  798|  5.93k|err:
  799|  5.93k|	log_dbg(cd, "LUKS2 header read failed (%d).", r);
  ------------------
  |  |  186|  5.93k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  5.93k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  800|       |
  801|  5.93k|	free(json_area1);
  802|  5.93k|	free(json_area2);
  803|  5.93k|	json_object_put(jobj_hdr1);
  804|  5.93k|	json_object_put(jobj_hdr2);
  805|       |	hdr->jobj = NULL;
  806|  5.93k|	return r;
  807|  4.18k|}
LUKS2_hdr_version_unlocked:
  810|  5.94k|{
  811|  5.94k|	struct {
  812|  5.94k|		char magic[LUKS2_MAGIC_L];
  813|  5.94k|		uint16_t version;
  814|  5.94k|	}  __attribute__ ((packed)) hdr;
  815|  5.94k|	struct device *device = NULL;
  816|  5.94k|	int r = 0, devfd = -1, flags;
  817|       |
  818|  5.94k|	if (!backup_file)
  ------------------
  |  Branch (818:6): [True: 5.94k, False: 0]
  ------------------
  819|  5.94k|		device = crypt_metadata_device(cd);
  820|      0|	else if (device_alloc(cd, &device, backup_file) < 0)
  ------------------
  |  Branch (820:11): [True: 0, False: 0]
  ------------------
  821|      0|		return 0;
  822|       |
  823|  5.94k|	if (!device)
  ------------------
  |  Branch (823:6): [True: 0, False: 5.94k]
  ------------------
  824|      0|		return 0;
  825|       |
  826|  5.94k|	flags = O_RDONLY;
  827|  5.94k|	if (device_direct_io(device))
  ------------------
  |  Branch (827:6): [True: 5.94k, False: 0]
  ------------------
  828|  5.94k|		flags |= O_DIRECT;
  829|       |
  830|  5.94k|	devfd = open(device_path(device), flags);
  831|  5.94k|	if (devfd != -1 && (read_lseek_blockwise(devfd, device_block_size(cd, device),
  ------------------
  |  Branch (831:6): [True: 5.94k, False: 0]
  |  Branch (831:21): [True: 5.94k, False: 0]
  ------------------
  832|  5.94k|	     device_alignment(device), &hdr, sizeof(hdr), 0) == sizeof(hdr)) &&
  833|  5.94k|	    !memcmp(hdr.magic, LUKS2_MAGIC_1ST, LUKS2_MAGIC_L))
  ------------------
  |  |   18|  5.94k|#define LUKS2_MAGIC_1ST "LUKS\xba\xbe"
  ------------------
              	    !memcmp(hdr.magic, LUKS2_MAGIC_1ST, LUKS2_MAGIC_L))
  ------------------
  |  |   20|  5.94k|#define LUKS2_MAGIC_L 6
  ------------------
  |  Branch (833:6): [True: 2.27k, False: 3.66k]
  ------------------
  834|  2.27k|		r = (int)be16_to_cpu(hdr.version);
  ------------------
  |  |  105|  2.27k|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  835|       |
  836|  5.94k|	if (devfd != -1)
  ------------------
  |  Branch (836:6): [True: 5.94k, False: 0]
  ------------------
  837|  5.94k|		close(devfd);
  838|       |
  839|  5.94k|	if (backup_file)
  ------------------
  |  Branch (839:6): [True: 0, False: 5.94k]
  ------------------
  840|      0|		device_free(cd, device);
  841|       |
  842|  5.94k|	return r;
  843|  5.94k|}
luks2_disk_metadata.c:hdr_write_disk:
  294|  4.18k|{
  295|  4.18k|	struct luks2_hdr_disk hdr_disk;
  296|  4.18k|	uint64_t offset = secondary ? hdr->hdr_size : 0;
  ------------------
  |  Branch (296:20): [True: 554, False: 3.62k]
  ------------------
  297|  4.18k|	size_t hdr_json_len;
  298|  4.18k|	int devfd, r;
  299|       |
  300|  4.18k|	hdr_json_len = hdr->hdr_size - LUKS2_HDR_BIN_LEN;
  ------------------
  |  |  143|  4.18k|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
  301|       |
  302|  4.18k|	assert(write_area_len <= hdr_json_len);
  ------------------
  |  Branch (302:2): [True: 0, False: 4.18k]
  |  Branch (302:2): [True: 4.18k, False: 0]
  ------------------
  303|       |
  304|  4.18k|	log_dbg(cd, "Trying to write LUKS2 header (%zu bytes) at offset %" PRIu64 ".",
  ------------------
  |  |  186|  4.18k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  4.18k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  305|  4.18k|		write_area_len, offset);
  306|       |
  307|  4.18k|	devfd = device_open_locked(cd, device, O_RDWR);
  308|  4.18k|	if (devfd < 0)
  ------------------
  |  Branch (308:6): [True: 2.09k, False: 2.09k]
  ------------------
  309|  2.09k|		return devfd == -1 ? -EINVAL : devfd;
  ------------------
  |  Branch (309:10): [True: 0, False: 2.09k]
  ------------------
  310|       |
  311|  2.09k|	hdr_to_disk(hdr, &hdr_disk, secondary, offset);
  312|       |
  313|       |	/*
  314|       |	 * Write header without checksum but with proper seqid.
  315|       |	 */
  316|  2.09k|	if (write_lseek_blockwise(devfd, device_block_size(cd, device),
  ------------------
  |  Branch (316:6): [True: 0, False: 2.09k]
  ------------------
  317|  2.09k|				  device_alignment(device), (char *)&hdr_disk,
  318|  2.09k|				  LUKS2_HDR_BIN_LEN, offset) < (ssize_t)LUKS2_HDR_BIN_LEN) {
  ------------------
  |  |  143|  2.09k|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
              				  LUKS2_HDR_BIN_LEN, offset) < (ssize_t)LUKS2_HDR_BIN_LEN) {
  ------------------
  |  |  143|  2.09k|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
  319|      0|		return -EIO;
  320|      0|	}
  321|       |
  322|       |	/*
  323|       |	 * Write json area.
  324|       |	 */
  325|  2.09k|	if (write_lseek_blockwise(devfd, device_block_size(cd, device),
  ------------------
  |  Branch (325:6): [True: 0, False: 2.09k]
  ------------------
  326|  2.09k|				  device_alignment(device),
  327|  2.09k|				  CONST_CAST(char*)json_area, write_area_len,
  ------------------
  |  |   13|  2.09k|#define CONST_CAST(x) (x)(uintptr_t)
  ------------------
  328|  2.09k|				  LUKS2_HDR_BIN_LEN + offset) < (ssize_t)write_area_len) {
  ------------------
  |  |  143|  2.09k|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
  329|      0|		return -EIO;
  330|      0|	}
  331|       |
  332|       |	/*
  333|       |	 * Calculate checksum and write header with checksum.
  334|       |	 */
  335|  2.09k|	r = hdr_checksum_calculate(hdr_disk.checksum_alg, &hdr_disk,
  336|  2.09k|				   json_area, hdr_json_len);
  337|  2.09k|	if (r < 0) {
  ------------------
  |  Branch (337:6): [True: 0, False: 2.09k]
  ------------------
  338|      0|		return r;
  339|      0|	}
  340|  2.09k|	log_dbg_checksum(cd, hdr_disk.csum, hdr_disk.checksum_alg, "in-memory");
  341|       |
  342|  2.09k|	if (write_lseek_blockwise(devfd, device_block_size(cd, device),
  ------------------
  |  Branch (342:6): [True: 0, False: 2.09k]
  ------------------
  343|  2.09k|				  device_alignment(device), (char *)&hdr_disk,
  344|  2.09k|				  LUKS2_HDR_BIN_LEN, offset) < (ssize_t)LUKS2_HDR_BIN_LEN)
  ------------------
  |  |  143|  2.09k|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
              				  LUKS2_HDR_BIN_LEN, offset) < (ssize_t)LUKS2_HDR_BIN_LEN)
  ------------------
  |  |  143|  2.09k|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
  345|      0|		r = -EIO;
  346|       |
  347|  2.09k|	device_sync(cd, device);
  348|  2.09k|	return r;
  349|  2.09k|}
luks2_disk_metadata.c:hdr_to_disk:
  152|  2.09k|{
  153|  2.09k|	assert(((char*)&(hdr_disk->_padding4096) - (char*)&(hdr_disk->magic)) == 512);
  ------------------
  |  Branch (153:2): [True: 0, False: 2.09k]
  |  Branch (153:2): [True: 2.09k, False: 0]
  ------------------
  154|       |
  155|  2.09k|	memset(hdr_disk, 0, LUKS2_HDR_BIN_LEN);
  ------------------
  |  |  143|  2.09k|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
  156|       |
  157|  2.09k|	memcpy(&hdr_disk->magic, secondary ? LUKS2_MAGIC_2ND : LUKS2_MAGIC_1ST, LUKS2_MAGIC_L);
  ------------------
  |  |   19|    277|#define LUKS2_MAGIC_2ND "SKUL\xba\xbe"
  ------------------
              	memcpy(&hdr_disk->magic, secondary ? LUKS2_MAGIC_2ND : LUKS2_MAGIC_1ST, LUKS2_MAGIC_L);
  ------------------
  |  |   18|  3.90k|#define LUKS2_MAGIC_1ST "LUKS\xba\xbe"
  ------------------
              	memcpy(&hdr_disk->magic, secondary ? LUKS2_MAGIC_2ND : LUKS2_MAGIC_1ST, LUKS2_MAGIC_L);
  ------------------
  |  |   20|  2.09k|#define LUKS2_MAGIC_L 6
  ------------------
  |  Branch (157:27): [True: 277, False: 1.81k]
  ------------------
  158|  2.09k|	hdr_disk->version     = cpu_to_be16(hdr->version);
  ------------------
  |  |   97|  2.09k|#define cpu_to_be16(x) ((uint16_t) htobe16(x))
  ------------------
  159|  2.09k|	hdr_disk->hdr_size    = cpu_to_be64(hdr->hdr_size);
  ------------------
  |  |   99|  2.09k|#define cpu_to_be64(x) ((uint64_t) htobe64(x))
  ------------------
  160|  2.09k|	hdr_disk->hdr_offset  = cpu_to_be64(offset);
  ------------------
  |  |   99|  2.09k|#define cpu_to_be64(x) ((uint64_t) htobe64(x))
  ------------------
  161|  2.09k|	hdr_disk->seqid       = cpu_to_be64(hdr->seqid);
  ------------------
  |  |   99|  2.09k|#define cpu_to_be64(x) ((uint64_t) htobe64(x))
  ------------------
  162|       |
  163|  2.09k|	memcpy(hdr_disk->label, hdr->label, MIN(strlen(hdr->label), LUKS2_LABEL_L));
  ------------------
  |  Branch (163:38): [True: 2.09k, False: 0]
  ------------------
  164|  2.09k|	hdr_disk->label[LUKS2_LABEL_L - 1] = '\0';
  ------------------
  |  |   22|  2.09k|#define LUKS2_LABEL_L 48
  ------------------
  165|  2.09k|	memcpy(hdr_disk->subsystem, hdr->subsystem, MIN(strlen(hdr->subsystem), LUKS2_LABEL_L));
  ------------------
  |  Branch (165:46): [True: 2.09k, False: 0]
  ------------------
  166|  2.09k|	hdr_disk->subsystem[LUKS2_LABEL_L - 1] = '\0';
  ------------------
  |  |   22|  2.09k|#define LUKS2_LABEL_L 48
  ------------------
  167|  2.09k|	memcpy(hdr_disk->checksum_alg, hdr->checksum_alg, MIN(strlen(hdr->checksum_alg), LUKS2_CHECKSUM_ALG_L));
  ------------------
  |  Branch (167:52): [True: 2.09k, False: 0]
  ------------------
  168|  2.09k|	hdr_disk->checksum_alg[LUKS2_CHECKSUM_ALG_L - 1] = '\0';
  ------------------
  |  |   24|  2.09k|#define LUKS2_CHECKSUM_ALG_L 32
  ------------------
  169|  2.09k|	memcpy(hdr_disk->uuid, hdr->uuid, MIN(strlen(hdr->uuid), LUKS2_UUID_L));
  ------------------
  |  Branch (169:36): [True: 2.09k, False: 0]
  ------------------
  170|  2.09k|	hdr_disk->uuid[LUKS2_UUID_L - 1] = '\0';
  ------------------
  |  |   21|  2.09k|#define LUKS2_UUID_L 40
  ------------------
  171|       |
  172|  2.09k|	memcpy(hdr_disk->salt, secondary ? hdr->salt2 : hdr->salt1, LUKS2_SALT_L);
  ------------------
  |  |   23|  2.09k|#define LUKS2_SALT_L 64
  ------------------
  |  Branch (172:25): [True: 277, False: 1.81k]
  ------------------
  173|  2.09k|}
luks2_disk_metadata.c:hdr_checksum_calculate:
   63|  9.58k|{
   64|  9.58k|	struct crypt_hash *hd = NULL;
   65|  9.58k|	int hash_size, r;
   66|       |
   67|  9.58k|	hash_size = crypt_hash_size(alg);
   68|  9.58k|	if (hash_size <= 0 || crypt_hash_init(&hd, alg))
  ------------------
  |  Branch (68:6): [True: 0, False: 9.58k]
  |  Branch (68:24): [True: 0, False: 9.58k]
  ------------------
   69|      0|		return -EINVAL;
   70|       |
   71|       |	/* Binary header, csum zeroed. */
   72|  9.58k|	r = crypt_hash_write(hd, (char*)hdr_disk, LUKS2_HDR_BIN_LEN);
  ------------------
  |  |  143|  9.58k|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
   73|       |
   74|       |	/* JSON area (including unused space) */
   75|  9.58k|	if (!r)
  ------------------
  |  Branch (75:6): [True: 9.58k, False: 0]
  ------------------
   76|  9.58k|		r = crypt_hash_write(hd, json_area, json_len);
   77|       |
   78|  9.58k|	if (!r)
  ------------------
  |  Branch (78:6): [True: 9.58k, False: 0]
  ------------------
   79|  9.58k|		r = crypt_hash_final(hd, (char*)hdr_disk->csum, (size_t)hash_size);
   80|       |
   81|  9.58k|	crypt_hash_destroy(hd);
   82|  9.58k|	return r;
   83|  9.58k|}
luks2_disk_metadata.c:log_dbg_checksum:
   45|  17.0k|{
   46|  17.0k|	char csum_txt[2*LUKS2_CHECKSUM_L+1];
   47|  17.0k|	int i;
   48|       |
   49|   763k|	for (i = 0; i < crypt_hash_size(csum_alg); i++)
  ------------------
  |  Branch (49:14): [True: 746k, False: 17.0k]
  ------------------
   50|   746k|		if (snprintf(&csum_txt[i*2], 3, "%02hhx", (const char)csum[i]) != 2)
  ------------------
  |  Branch (50:7): [True: 0, False: 746k]
  ------------------
   51|      0|			return;
   52|       |
   53|  17.0k|	log_dbg(cd, "Checksum:%s (%s)", &csum_txt[0], info);
  ------------------
  |  |  186|  17.0k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  17.0k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
   54|  17.0k|}
luks2_disk_metadata.c:hdr_read_disk:
  228|  36.9k|{
  229|  36.9k|	size_t hdr_json_size = 0;
  230|  36.9k|	int devfd, r;
  231|       |
  232|  36.9k|	log_dbg(cd, "Trying to read %s LUKS2 header at offset 0x%" PRIx64 ".",
  ------------------
  |  |  186|  73.9k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  36.9k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  |  |  |  Branch (186:57): [True: 28.9k, False: 8.02k]
  |  |  ------------------
  ------------------
  233|  36.9k|		secondary ? "secondary" : "primary", offset);
  234|       |
  235|  36.9k|	devfd = device_open_locked(cd, device, O_RDONLY);
  236|  36.9k|	if (devfd < 0)
  ------------------
  |  Branch (236:6): [True: 0, False: 36.9k]
  ------------------
  237|      0|		return devfd == -1 ? -EIO : devfd;
  ------------------
  |  Branch (237:10): [True: 0, False: 0]
  ------------------
  238|       |
  239|       |	/*
  240|       |	 * Read binary header and run sanity check before reading
  241|       |	 * JSON area and validating checksum.
  242|       |	 */
  243|  36.9k|	if (read_lseek_blockwise(devfd, device_block_size(cd, device),
  ------------------
  |  Branch (243:6): [True: 0, False: 36.9k]
  ------------------
  244|  36.9k|				 device_alignment(device), hdr_disk,
  245|  36.9k|				 LUKS2_HDR_BIN_LEN, offset) != LUKS2_HDR_BIN_LEN) {
  ------------------
  |  |  143|  36.9k|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
              				 LUKS2_HDR_BIN_LEN, offset) != LUKS2_HDR_BIN_LEN) {
  ------------------
  |  |  143|  36.9k|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
  246|      0|		memset(hdr_disk, 0, LUKS2_HDR_BIN_LEN);
  ------------------
  |  |  143|      0|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
  247|      0|		return -EIO;
  248|      0|	}
  249|       |
  250|       |	/*
  251|       |	 * hdr_json_size is validated if this call succeeds
  252|       |	 */
  253|  36.9k|	r = hdr_disk_sanity_check_pre(cd, hdr_disk, &hdr_json_size, secondary, offset);
  254|  36.9k|	if (r < 0)
  ------------------
  |  Branch (254:6): [True: 29.0k, False: 7.98k]
  ------------------
  255|  29.0k|		return r;
  256|       |
  257|       |	/*
  258|       |	 * Allocate and read JSON area. Always the whole area must be read.
  259|       |	 */
  260|  7.98k|	*json_area = malloc(hdr_json_size);
  261|  7.98k|	if (!*json_area)
  ------------------
  |  Branch (261:6): [True: 0, False: 7.98k]
  ------------------
  262|      0|		return -ENOMEM;
  263|       |
  264|  7.98k|	if (read_lseek_blockwise(devfd, device_block_size(cd, device),
  ------------------
  |  Branch (264:6): [True: 0, False: 7.98k]
  ------------------
  265|  7.98k|				 device_alignment(device), *json_area, hdr_json_size,
  266|  7.98k|				 offset + LUKS2_HDR_BIN_LEN) != (ssize_t)hdr_json_size) {
  ------------------
  |  |  143|  7.98k|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
  267|      0|		free(*json_area);
  268|      0|		*json_area = NULL;
  269|      0|		return -EIO;
  270|      0|	}
  271|       |
  272|       |	/*
  273|       |	 * Calculate and validate checksum and zero it afterwards.
  274|       |	 */
  275|  7.98k|	if (hdr_checksum_check(cd, hdr_disk->checksum_alg, hdr_disk,
  ------------------
  |  Branch (275:6): [True: 1.21k, False: 6.76k]
  ------------------
  276|  7.98k|				*json_area, hdr_json_size)) {
  277|  1.21k|		log_dbg(cd, "LUKS2 header checksum error (offset %" PRIu64 ").", offset);
  ------------------
  |  |  186|  1.21k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  1.21k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  278|  1.21k|		free(*json_area);
  279|  1.21k|		*json_area = NULL;
  280|  1.21k|		r = -EINVAL;
  281|  1.21k|	}
  282|  7.98k|	memset(hdr_disk->csum, 0, LUKS2_CHECKSUM_L);
  ------------------
  |  |   25|  7.98k|#define LUKS2_CHECKSUM_L 64
  ------------------
  283|       |
  284|  7.98k|	return r;
  285|  7.98k|}
luks2_disk_metadata.c:hdr_disk_sanity_check_pre:
  182|  36.9k|{
  183|  36.9k|	uint64_t hdr_size;
  184|       |
  185|  36.9k|	if (memcmp(hdr->magic, secondary ? LUKS2_MAGIC_2ND : LUKS2_MAGIC_1ST, LUKS2_MAGIC_L))
  ------------------
  |  |   19|  28.9k|#define LUKS2_MAGIC_2ND "SKUL\xba\xbe"
  ------------------
              	if (memcmp(hdr->magic, secondary ? LUKS2_MAGIC_2ND : LUKS2_MAGIC_1ST, LUKS2_MAGIC_L))
  ------------------
  |  |   18|  45.0k|#define LUKS2_MAGIC_1ST "LUKS\xba\xbe"
  ------------------
              	if (memcmp(hdr->magic, secondary ? LUKS2_MAGIC_2ND : LUKS2_MAGIC_1ST, LUKS2_MAGIC_L))
  ------------------
  |  |   20|  36.9k|#define LUKS2_MAGIC_L 6
  ------------------
  |  Branch (185:6): [True: 28.6k, False: 8.34k]
  |  Branch (185:25): [True: 28.9k, False: 8.02k]
  ------------------
  186|  28.6k|		return -EINVAL;
  187|       |
  188|  8.34k|	if (be16_to_cpu(hdr->version) != 2) {
  ------------------
  |  |  105|  8.34k|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  |  Branch (188:6): [True: 66, False: 8.27k]
  ------------------
  189|     66|		log_dbg(cd, "Unsupported LUKS2 header version %u.", be16_to_cpu(hdr->version));
  ------------------
  |  |  186|     66|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|     66|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  190|     66|		return -EINVAL;
  191|     66|	}
  192|       |
  193|  8.27k|	if (offset != be64_to_cpu(hdr->hdr_offset)) {
  ------------------
  |  |  107|  8.27k|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  |  Branch (193:6): [True: 125, False: 8.15k]
  ------------------
  194|    125|		log_dbg(cd, "LUKS2 offset 0x%04" PRIx64 " on device differs to expected offset 0x%04" PRIx64 ".",
  ------------------
  |  |  186|    125|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|    125|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  195|    125|			be64_to_cpu(hdr->hdr_offset), offset);
  196|    125|		return -EINVAL;
  197|    125|	}
  198|       |
  199|  8.15k|	hdr_size = be64_to_cpu(hdr->hdr_size);
  ------------------
  |  |  107|  8.15k|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  200|       |
  201|  8.15k|	if (hdr_size < LUKS2_HDR_16K_LEN || hdr_size > LUKS2_HDR_OFFSET_MAX) {
  ------------------
  |  |  141|  16.3k|#define LUKS2_HDR_16K_LEN 0x4000
  ------------------
              	if (hdr_size < LUKS2_HDR_16K_LEN || hdr_size > LUKS2_HDR_OFFSET_MAX) {
  ------------------
  |  |  150|  8.12k|#define LUKS2_HDR_OFFSET_MAX 0x400000 /* 4 MiB */
  ------------------
  |  Branch (201:6): [True: 28, False: 8.12k]
  |  Branch (201:38): [True: 129, False: 7.99k]
  ------------------
  202|    157|		log_dbg(cd, "LUKS2 header has bogus size 0x%04" PRIx64 ".", hdr_size);
  ------------------
  |  |  186|    157|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|    157|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  203|    157|		return -EINVAL;
  204|    157|	}
  205|       |
  206|  7.99k|	if (secondary && (offset != hdr_size)) {
  ------------------
  |  Branch (206:6): [True: 5.71k, False: 2.28k]
  |  Branch (206:19): [True: 15, False: 5.69k]
  ------------------
  207|     15|		log_dbg(cd, "LUKS2 offset 0x%04" PRIx64 " in secondary header does not match size 0x%04" PRIx64 ".",
  ------------------
  |  |  186|     15|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|     15|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  208|     15|			offset, hdr_size);
  209|     15|		return -EINVAL;
  210|     15|	}
  211|       |
  212|       |	/* FIXME: sanity check checksum alg. */
  213|       |
  214|  7.98k|	log_dbg(cd, "LUKS2 header version %u of size %" PRIu64 " bytes, checksum %s.",
  ------------------
  |  |  186|  7.98k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  7.98k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  215|  7.98k|		be16_to_cpu(hdr->version), hdr_size,
  216|  7.98k|		hdr->checksum_alg);
  217|       |
  218|  7.98k|	*hdr_json_size = hdr_size - LUKS2_HDR_BIN_LEN;
  ------------------
  |  |  143|  7.98k|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
  219|  7.98k|	return 0;
  220|  7.99k|}
luks2_disk_metadata.c:hdr_checksum_check:
   91|  7.98k|{
   92|  7.98k|	struct luks2_hdr_disk hdr_tmp;
   93|  7.98k|	int hash_size, r;
   94|       |
   95|  7.98k|	hash_size = crypt_hash_size(alg);
   96|  7.98k|	if (hash_size <= 0)
  ------------------
  |  Branch (96:6): [True: 490, False: 7.49k]
  ------------------
   97|    490|		return -EINVAL;
   98|       |
   99|       |	/* Copy header and zero checksum. */
  100|  7.49k|	memcpy(&hdr_tmp, hdr_disk, LUKS2_HDR_BIN_LEN);
  ------------------
  |  |  143|  7.49k|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
  101|  7.49k|	memset(&hdr_tmp.csum, 0, sizeof(hdr_tmp.csum));
  102|       |
  103|  7.49k|	r = hdr_checksum_calculate(alg, &hdr_tmp, json_area, json_len);
  104|  7.49k|	if (r < 0)
  ------------------
  |  Branch (104:6): [True: 0, False: 7.49k]
  ------------------
  105|      0|		return r;
  106|       |
  107|  7.49k|	log_dbg_checksum(cd, hdr_disk->csum, alg, "on-disk");
  108|  7.49k|	log_dbg_checksum(cd, hdr_tmp.csum, alg, "in-memory");
  109|       |
  110|  7.49k|	if (memcmp(hdr_tmp.csum, hdr_disk->csum, (size_t)hash_size))
  ------------------
  |  Branch (110:6): [True: 721, False: 6.76k]
  ------------------
  111|    721|		return -EINVAL;
  112|       |
  113|  6.76k|	return 0;
  114|  7.49k|}
luks2_disk_metadata.c:parse_and_validate_json:
  554|  6.76k|{
  555|  6.76k|	int json_len, r;
  556|  6.76k|	json_object *jobj;
  557|  6.76k|	uint64_t max_length;
  558|       |
  559|  6.76k|	assert(json_area_end);
  ------------------
  |  Branch (559:2): [True: 0, False: 6.76k]
  |  Branch (559:2): [True: 6.76k, False: 0]
  ------------------
  560|       |
  561|  6.76k|	if (hdr_size <= LUKS2_HDR_BIN_LEN || hdr_size > LUKS2_HDR_OFFSET_MAX) {
  ------------------
  |  |  143|  13.5k|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
              	if (hdr_size <= LUKS2_HDR_BIN_LEN || hdr_size > LUKS2_HDR_OFFSET_MAX) {
  ------------------
  |  |  150|  6.76k|#define LUKS2_HDR_OFFSET_MAX 0x400000 /* 4 MiB */
  ------------------
  |  Branch (561:6): [True: 0, False: 6.76k]
  |  Branch (561:39): [True: 0, False: 6.76k]
  ------------------
  562|      0|		log_dbg(cd, "LUKS2 header JSON has bogus size 0x%04" PRIx64 ".", hdr_size);
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  563|      0|		return NULL;
  564|      0|	}
  565|       |
  566|  6.76k|	max_length = hdr_size - LUKS2_HDR_BIN_LEN;
  ------------------
  |  |  143|  6.76k|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
  567|       |
  568|  6.76k|	jobj = parse_json_len(cd, json_area, max_length, &json_len);
  569|  6.76k|	if (!jobj)
  ------------------
  |  Branch (569:6): [True: 397, False: 6.37k]
  ------------------
  570|    397|		return NULL;
  571|       |
  572|       |	/* successful parse_json_len must not return offset <= 0 */
  573|  6.76k|	assert(json_len > 0);
  ------------------
  |  Branch (573:2): [True: 0, False: 6.37k]
  |  Branch (573:2): [True: 6.37k, False: 0]
  ------------------
  574|       |
  575|  6.37k|	r = validate_json_area(cd, json_area, json_len, max_length);
  576|  6.37k|	if (!r)
  ------------------
  |  Branch (576:6): [True: 6.26k, False: 109]
  ------------------
  577|  6.26k|		r = validate_luks2_json_object(cd, jobj, max_length);
  578|       |
  579|  6.37k|	if (r) {
  ------------------
  |  Branch (579:6): [True: 377, False: 5.99k]
  ------------------
  580|    377|		json_object_put(jobj);
  581|    377|		jobj = NULL;
  582|    377|	}
  583|       |
  584|  6.37k|	*json_area_end = json_len;
  585|       |
  586|  6.37k|	return jobj;
  587|  6.37k|}
luks2_disk_metadata.c:parse_json_len:
   16|  6.76k|{
   17|  6.76k|	json_object *jobj;
   18|  6.76k|	json_tokener *jtok;
   19|       |
   20|       |	 /* INT32_MAX is internal (json-c) json_tokener_parse_ex() limit */
   21|  6.76k|	if (!json_area || max_length > INT32_MAX)
  ------------------
  |  Branch (21:6): [True: 0, False: 6.76k]
  |  Branch (21:20): [True: 0, False: 6.76k]
  ------------------
   22|      0|		return NULL;
   23|       |
   24|  6.76k|	jtok = json_tokener_new();
   25|  6.76k|	if (!jtok) {
  ------------------
  |  Branch (25:6): [True: 0, False: 6.76k]
  ------------------
   26|      0|		log_dbg(cd, "ERROR: Failed to init json tokener");
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
   27|      0|		return NULL;
   28|      0|	}
   29|       |
   30|  6.76k|	jobj = json_tokener_parse_ex(jtok, json_area, max_length);
   31|  6.76k|	if (!jobj)
  ------------------
  |  Branch (31:6): [True: 397, False: 6.37k]
  ------------------
   32|    397|		log_dbg(cd, "ERROR: Failed to parse json data (%d): %s",
  ------------------
  |  |  186|    397|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|    397|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
   33|  6.76k|			json_tokener_get_error(jtok),
   34|  6.76k|			json_tokener_error_desc(json_tokener_get_error(jtok)));
   35|  6.37k|	else
   36|  6.37k|		*json_len = jtok->char_offset;
   37|       |
   38|  6.76k|	json_tokener_free(jtok);
   39|       |
   40|  6.76k|	return jobj;
   41|  6.76k|}
luks2_disk_metadata.c:validate_json_area:
  492|  6.37k|{
  493|  6.37k|	char c;
  494|       |
  495|       |	/* Enforce there are no needless opening bytes */
  496|  6.37k|	if (*json_area != '{') {
  ------------------
  |  Branch (496:6): [True: 98, False: 6.27k]
  ------------------
  497|     98|		log_dbg(cd, "ERROR: Opening character must be left curly bracket: '{'.");
  ------------------
  |  |  186|     98|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|     98|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  498|     98|		return -EINVAL;
  499|     98|	}
  500|       |
  501|  6.27k|	if (json_len >= max_length) {
  ------------------
  |  Branch (501:6): [True: 0, False: 6.27k]
  ------------------
  502|      0|		log_dbg(cd, "ERROR: Missing trailing null byte beyond parsed json data string.");
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  503|      0|		return -EINVAL;
  504|      0|	}
  505|       |
  506|       |	/*
  507|       |	 * TODO:
  508|       |	 *	validate there are legal json format characters between
  509|       |	 *	'json_area' and 'json_area + json_len'
  510|       |	 */
  511|       |
  512|   368M|	do {
  513|   368M|		c = *(json_area + json_len);
  514|   368M|		if (c != '\0') {
  ------------------
  |  Branch (514:7): [True: 11, False: 368M]
  ------------------
  515|     11|			log_dbg(cd, "ERROR: Forbidden ascii code 0x%02hhx found beyond json data string at offset %" PRIu64,
  ------------------
  |  |  186|     11|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|     11|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  516|     11|				c, json_len);
  517|     11|			return -EINVAL;
  518|     11|		}
  519|   368M|	} while (++json_len < max_length);
  ------------------
  |  Branch (519:11): [True: 368M, False: 6.26k]
  ------------------
  520|       |
  521|  6.26k|	return 0;
  522|  6.27k|}
luks2_disk_metadata.c:validate_luks2_json_object:
  525|  6.26k|{
  526|  6.26k|	int r;
  527|       |
  528|       |	/* we require top level object to be of json_type_object */
  529|  6.26k|	r = !json_object_is_type(jobj_hdr, json_type_object);
  530|  6.26k|	if (r) {
  ------------------
  |  Branch (530:6): [True: 2, False: 6.26k]
  ------------------
  531|      2|		log_dbg(cd, "ERROR: Resulting object is not a json object type");
  ------------------
  |  |  186|      2|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      2|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  532|      2|		return r;
  533|      2|	}
  534|       |
  535|  6.26k|	r = LUKS2_hdr_validate(cd, jobj_hdr, length);
  536|  6.26k|	if (r) {
  ------------------
  |  Branch (536:6): [True: 266, False: 5.99k]
  ------------------
  537|    266|		log_dbg(cd, "Repairing JSON metadata.");
  ------------------
  |  |  186|    266|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|    266|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  538|       |		/* try to correct known glitches */
  539|    266|		LUKS2_hdr_repair(cd, jobj_hdr);
  540|       |
  541|       |		/* run validation again */
  542|    266|		r = LUKS2_hdr_validate(cd, jobj_hdr, length);
  543|    266|	}
  544|       |
  545|  6.26k|	if (r)
  ------------------
  |  Branch (545:6): [True: 266, False: 5.99k]
  ------------------
  546|    266|		log_dbg(cd, "ERROR: LUKS2 validation failed");
  ------------------
  |  |  186|    266|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|    266|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  547|       |
  548|  6.26k|	return r;
  549|  6.26k|}
luks2_disk_metadata.c:detect_device_signatures:
  590|  5.99k|{
  591|  5.99k|	blk_probe_status prb_state;
  592|  5.99k|	int r;
  593|  5.99k|	struct blkid_handle *h;
  594|       |
  595|  5.99k|	if (!blk_supported()) {
  ------------------
  |  Branch (595:6): [True: 0, False: 5.99k]
  ------------------
  596|      0|		log_dbg(cd, "Blkid probing of device signatures disabled.");
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  597|      0|		return 0;
  598|      0|	}
  599|       |
  600|  5.99k|	if ((r = blk_init_by_path(&h, path))) {
  ------------------
  |  Branch (600:6): [True: 0, False: 5.99k]
  ------------------
  601|      0|		log_dbg(cd, "Failed to initialize blkid_handle by path.");
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  602|      0|		return -EINVAL;
  603|      0|	}
  604|       |
  605|       |	/* We don't care about details. Be fast. */
  606|  5.99k|	blk_set_chains_for_fast_detection(h);
  607|       |
  608|       |	/* Filter out crypto_LUKS. we don't care now */
  609|  5.99k|	blk_superblocks_filter_luks(h);
  610|       |
  611|  5.99k|	prb_state = blk_safeprobe(h);
  612|       |
  613|  5.99k|	switch (prb_state) {
  ------------------
  |  Branch (613:10): [True: 5.99k, False: 0]
  ------------------
  614|      0|	case PRB_AMBIGUOUS:
  ------------------
  |  Branch (614:2): [True: 0, False: 5.99k]
  ------------------
  615|      0|		log_dbg(cd, "Blkid probe couldn't decide device type unambiguously.");
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  616|       |		/* fall through */
  617|    455|	case PRB_FAIL:
  ------------------
  |  Branch (617:2): [True: 455, False: 5.53k]
  ------------------
  618|    455|		log_dbg(cd, "Blkid probe failed.");
  ------------------
  |  |  186|    455|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|    455|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  619|    455|		r = -EINVAL;
  620|    455|		break;
  621|  1.35k|	case PRB_OK: /* crypto_LUKS type is filtered out */
  ------------------
  |  Branch (621:2): [True: 1.35k, False: 4.63k]
  ------------------
  622|  1.35k|		r = -EINVAL;
  623|       |
  624|  1.35k|		if (blk_is_partition(h))
  ------------------
  |  Branch (624:7): [True: 513, False: 844]
  ------------------
  625|    513|			log_dbg(cd, "Blkid probe detected partition type '%s'", blk_get_partition_type(h));
  ------------------
  |  |  186|    513|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|    513|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  626|    844|		else if (blk_is_superblock(h))
  ------------------
  |  Branch (626:12): [True: 844, False: 0]
  ------------------
  627|    844|			log_dbg(cd, "blkid probe detected superblock type '%s'", blk_get_superblock_type(h));
  ------------------
  |  |  186|    844|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|    844|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  628|  1.35k|		break;
  629|  4.18k|	case PRB_EMPTY:
  ------------------
  |  Branch (629:2): [True: 4.18k, False: 1.81k]
  ------------------
  630|  4.18k|		log_dbg(cd, "Blkid probe detected no foreign device signature.");
  ------------------
  |  |  186|  4.18k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  4.18k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  631|  5.99k|	}
  632|  5.99k|	blk_free(h);
  633|  5.99k|	return r;
  634|  5.99k|}
luks2_disk_metadata.c:hdr_from_disk:
  123|  6.27k|{
  124|  6.27k|	hdr->version  = be16_to_cpu(hdr_disk1->version);
  ------------------
  |  |  105|  6.27k|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  125|  6.27k|	hdr->hdr_size = be64_to_cpu(hdr_disk1->hdr_size);
  ------------------
  |  |  107|  6.27k|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  126|  6.27k|	hdr->seqid    = be64_to_cpu(hdr_disk1->seqid);
  ------------------
  |  |  107|  6.27k|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  127|       |
  128|  6.27k|	memcpy(hdr->label, hdr_disk1->label, LUKS2_LABEL_L);
  ------------------
  |  |   22|  6.27k|#define LUKS2_LABEL_L 48
  ------------------
  129|  6.27k|	hdr->label[LUKS2_LABEL_L - 1] = '\0';
  ------------------
  |  |   22|  6.27k|#define LUKS2_LABEL_L 48
  ------------------
  130|  6.27k|	memcpy(hdr->subsystem, hdr_disk1->subsystem, LUKS2_LABEL_L);
  ------------------
  |  |   22|  6.27k|#define LUKS2_LABEL_L 48
  ------------------
  131|  6.27k|	hdr->subsystem[LUKS2_LABEL_L - 1] = '\0';
  ------------------
  |  |   22|  6.27k|#define LUKS2_LABEL_L 48
  ------------------
  132|  6.27k|	memcpy(hdr->checksum_alg, hdr_disk1->checksum_alg, LUKS2_CHECKSUM_ALG_L);
  ------------------
  |  |   24|  6.27k|#define LUKS2_CHECKSUM_ALG_L 32
  ------------------
  133|  6.27k|	hdr->checksum_alg[LUKS2_CHECKSUM_ALG_L - 1] = '\0';
  ------------------
  |  |   24|  6.27k|#define LUKS2_CHECKSUM_ALG_L 32
  ------------------
  134|  6.27k|	memcpy(hdr->uuid, hdr_disk1->uuid, LUKS2_UUID_L);
  ------------------
  |  |   21|  6.27k|#define LUKS2_UUID_L 40
  ------------------
  135|  6.27k|	hdr->uuid[LUKS2_UUID_L - 1] = '\0';
  ------------------
  |  |   21|  6.27k|#define LUKS2_UUID_L 40
  ------------------
  136|       |
  137|  6.27k|	if (secondary) {
  ------------------
  |  Branch (137:6): [True: 5.44k, False: 831]
  ------------------
  138|  5.44k|		memcpy(hdr->salt1, hdr_disk2->salt, LUKS2_SALT_L);
  ------------------
  |  |   23|  5.44k|#define LUKS2_SALT_L 64
  ------------------
  139|  5.44k|		memcpy(hdr->salt2, hdr_disk1->salt, LUKS2_SALT_L);
  ------------------
  |  |   23|  5.44k|#define LUKS2_SALT_L 64
  ------------------
  140|  5.44k|	} else {
  141|    831|		memcpy(hdr->salt1, hdr_disk1->salt, LUKS2_SALT_L);
  ------------------
  |  |   23|    831|#define LUKS2_SALT_L 64
  ------------------
  142|    831|		memcpy(hdr->salt2, hdr_disk2->salt, LUKS2_SALT_L);
  ------------------
  |  |   23|    831|#define LUKS2_SALT_L 64
  ------------------
  143|    831|	}
  144|  6.27k|}

luks2_json_metadata.c:crypt_jobj_to_string_on_disk:
   56|  6.01k|{
   57|  6.01k|	return json_object_to_json_string_ext(jobj,
   58|  6.01k|			JSON_C_TO_STRING_PLAIN | JSON_C_TO_STRING_NOSLASHESCAPE);
  ------------------
  |  |   43|  6.01k|#define JSON_C_TO_STRING_PLAIN 0
  ------------------
              			JSON_C_TO_STRING_PLAIN | JSON_C_TO_STRING_NOSLASHESCAPE);
  ------------------
  |  |   75|  6.01k|#define JSON_C_TO_STRING_NOSLASHESCAPE (1 << 4)
  ------------------
   59|  6.01k|}

LUKS2_check_metadata_area_size:
  175|  6.07k|{
  176|       |	/* see LUKS2_HDR2_OFFSETS */
  177|  6.07k|	return (metadata_size != 0x004000 &&
  ------------------
  |  Branch (177:10): [True: 6.07k, False: 2]
  ------------------
  178|  6.07k|		metadata_size != 0x008000 && metadata_size != 0x010000 &&
  ------------------
  |  Branch (178:3): [True: 5.90k, False: 171]
  |  Branch (178:32): [True: 26, False: 5.88k]
  ------------------
  179|     26|		metadata_size != 0x020000 && metadata_size != 0x040000 &&
  ------------------
  |  Branch (179:3): [True: 26, False: 0]
  |  Branch (179:32): [True: 26, False: 0]
  ------------------
  180|     26|		metadata_size != 0x080000 && metadata_size != 0x100000 &&
  ------------------
  |  Branch (180:3): [True: 26, False: 0]
  |  Branch (180:32): [True: 26, False: 0]
  ------------------
  181|     26|		metadata_size != 0x200000 && metadata_size != 0x400000);
  ------------------
  |  Branch (181:3): [True: 26, False: 0]
  |  Branch (181:32): [True: 26, False: 0]
  ------------------
  182|  6.07k|}
LUKS2_check_keyslots_area_size:
  185|  6.05k|{
  186|  6.05k|	return (MISALIGNED_4K(keyslots_size) ||
  ------------------
  |  |   44|  6.05k|#define MISALIGNED_4K(a)	MISALIGNED((a), 1 << SHIFT_4K)
  |  |  ------------------
  |  |  |  |   43|  12.1k|#define MISALIGNED(a, b)	((a) & ((b) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:26): [True: 4, False: 6.04k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  187|  6.04k|		keyslots_size > LUKS2_MAX_KEYSLOTS_SIZE);
  ------------------
  |  |  148|  6.04k|#define LUKS2_MAX_KEYSLOTS_SIZE 0x8000000 /* 128 MiB */
  ------------------
  |  Branch (187:3): [True: 0, False: 6.04k]
  ------------------
  188|  6.05k|}

LUKS2_array_jobj:
   53|  1.85k|{
   54|  1.85k|	json_object *jobj1;
   55|  1.85k|	int i;
   56|       |
   57|  5.69k|	for (i = 0; i < (int) json_object_array_length(array); i++) {
  ------------------
  |  Branch (57:14): [True: 3.84k, False: 1.85k]
  ------------------
   58|  3.84k|		jobj1 = json_object_array_get_idx(array, i);
   59|  3.84k|		if (!strcmp(num, json_object_get_string(jobj1)))
  ------------------
  |  Branch (59:7): [True: 1, False: 3.84k]
  ------------------
   60|      1|			return jobj1;
   61|  3.84k|	}
   62|       |
   63|  1.85k|	return NULL;
   64|  1.85k|}
LUKS2_get_segment_jobj:
  170|  2.09k|{
  171|  2.09k|	if (!hdr)
  ------------------
  |  Branch (171:6): [True: 0, False: 2.09k]
  ------------------
  172|      0|		return NULL;
  173|       |
  174|  2.09k|	if (segment == CRYPT_DEFAULT_SEGMENT)
  ------------------
  |  |   44|  2.09k|#define CRYPT_DEFAULT_SEGMENT -2
  ------------------
  |  Branch (174:6): [True: 2.09k, False: 0]
  ------------------
  175|  2.09k|		segment = LUKS2_get_default_segment(hdr);
  176|       |
  177|  2.09k|	return json_segments_get_segment(json_get_segments_jobj(hdr->jobj), segment);
  178|  2.09k|}
LUKS2_get_segments_jobj:
  181|  4.18k|{
  182|  4.18k|	return hdr ? json_get_segments_jobj(hdr->jobj) : NULL;
  ------------------
  |  Branch (182:9): [True: 4.18k, False: 0]
  ------------------
  183|  4.18k|}
LUKS2_segments_count:
  186|  2.09k|{
  187|  2.09k|	if (!hdr)
  ------------------
  |  Branch (187:6): [True: 0, False: 2.09k]
  ------------------
  188|      0|		return -EINVAL;
  189|       |
  190|  2.09k|	return json_segments_count(LUKS2_get_segments_jobj(hdr));
  191|  2.09k|}
LUKS2_get_default_segment:
  194|  2.09k|{
  195|  2.09k|	int s = LUKS2_get_segment_id_by_flag(hdr, "backup-final");
  196|  2.09k|	if (s >= 0)
  ------------------
  |  Branch (196:6): [True: 1, False: 2.09k]
  ------------------
  197|      1|		return s;
  198|       |
  199|  2.09k|	if (LUKS2_segments_count(hdr) >= 1)
  ------------------
  |  Branch (199:6): [True: 2.09k, False: 0]
  ------------------
  200|  2.09k|		return 0;
  201|       |
  202|      0|	return -EINVAL;
  203|  2.09k|}
crypt_jobj_get_uint32:
  210|     12|{
  211|     12|	return json_object_get_int64(jobj);
  212|     12|}
crypt_jobj_get_uint64:
  232|  24.6k|{
  233|  24.6k|	uint64_t r;
  234|  24.6k|	json_str_to_uint64(jobj, &r);
  235|  24.6k|	return r;
  236|  24.6k|}
json_contains:
  270|  90.6k|{
  271|  90.6k|	json_object *sobj;
  272|       |
  273|  90.6k|	if (!json_object_object_get_ex(jobj, key, &sobj) ||
  ------------------
  |  Branch (273:6): [True: 224, False: 90.4k]
  ------------------
  274|  90.4k|	    !json_object_is_type(sobj, type)) {
  ------------------
  |  Branch (274:6): [True: 12, False: 90.4k]
  ------------------
  275|    236|		log_dbg(cd, "%s \"%s\" is missing \"%s\" (%s) specification.",
  ------------------
  |  |  186|    236|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|    236|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  276|    236|			section, name, key, json_type_to_name(type));
  277|    236|		return NULL;
  278|    236|	}
  279|       |
  280|  90.4k|	return sobj;
  281|  90.6k|}
json_contains_string:
  285|  32.8k|{
  286|  32.8k|	json_object *sobj = json_contains(cd, jobj, name, section, key, json_type_string);
  287|       |
  288|  32.8k|	if (!sobj)
  ------------------
  |  Branch (288:6): [True: 50, False: 32.7k]
  ------------------
  289|     50|		return NULL;
  290|       |
  291|  32.7k|	if (strlen(json_object_get_string(sobj)) < 1)
  ------------------
  |  Branch (291:6): [True: 12, False: 32.7k]
  ------------------
  292|     12|		return NULL;
  293|       |
  294|  32.7k|	return sobj;
  295|  32.7k|}
validate_json_uint32:
  298|    128|{
  299|    128|	int64_t tmp;
  300|       |
  301|    128|	errno = 0;
  302|    128|	tmp = json_object_get_int64(jobj);
  303|       |
  304|    128|	return (errno || tmp < 0 || tmp > UINT32_MAX) ? false : true;
  ------------------
  |  Branch (304:10): [True: 6, False: 122]
  |  Branch (304:19): [True: 16, False: 106]
  |  Branch (304:30): [True: 10, False: 96]
  ------------------
  305|    128|}
LUKS2_token_validate:
  439|     24|{
  440|     24|	json_object *jarr, *jobj_keyslots;
  441|       |
  442|       |	/* keyslots are not yet validated, but we need to know token doesn't reference missing keyslot */
  443|     24|	if (!json_object_object_get_ex(hdr_jobj, "keyslots", &jobj_keyslots))
  ------------------
  |  Branch (443:6): [True: 2, False: 22]
  ------------------
  444|      2|		return 1;
  445|       |
  446|     22|	if (!json_contains_string(cd, jobj_token, key, "Token", "type"))
  ------------------
  |  Branch (446:6): [True: 4, False: 18]
  ------------------
  447|      4|		return 1;
  448|       |
  449|     18|	jarr = json_contains(cd, jobj_token, key, "Token", "keyslots", json_type_array);
  450|     18|	if (!jarr)
  ------------------
  |  Branch (450:6): [True: 4, False: 14]
  ------------------
  451|      4|		return 1;
  452|       |
  453|     14|	if (!validate_keyslots_array(cd, jarr, jobj_keyslots))
  ------------------
  |  Branch (453:6): [True: 8, False: 6]
  ------------------
  454|      8|		return 1;
  455|       |
  456|      6|	return 0;
  457|     14|}
LUKS2_hdr_validate:
 1105|  6.52k|{
 1106|  6.52k|	struct {
 1107|  6.52k|		int (*validate)(struct crypt_device *, json_object *);
 1108|  6.52k|	} checks[] = {
 1109|  6.52k|		{ hdr_validate_requirements },
 1110|  6.52k|		{ hdr_validate_tokens   },
 1111|  6.52k|		{ hdr_validate_digests  },
 1112|  6.52k|		{ hdr_validate_segments },
 1113|  6.52k|		{ hdr_validate_keyslots },
 1114|  6.52k|		{ hdr_validate_config   },
 1115|  6.52k|		{ hdr_validate_areas    },
 1116|  6.52k|		{ NULL }
 1117|  6.52k|	};
 1118|  6.52k|	int i;
 1119|       |
 1120|  6.52k|	if (!hdr_jobj)
  ------------------
  |  Branch (1120:6): [True: 0, False: 6.52k]
  ------------------
 1121|      0|		return 1;
 1122|       |
 1123|  49.8k|	for (i = 0; checks[i].validate; i++)
  ------------------
  |  Branch (1123:14): [True: 43.8k, False: 6.01k]
  ------------------
 1124|  43.8k|		if (checks[i].validate && checks[i].validate(cd, hdr_jobj))
  ------------------
  |  Branch (1124:7): [True: 43.8k, False: 0]
  |  Branch (1124:29): [True: 512, False: 43.3k]
  ------------------
 1125|    512|			return 1;
 1126|       |
 1127|  6.01k|	if (hdr_validate_json_size(cd, hdr_jobj, json_size))
  ------------------
  |  Branch (1127:6): [True: 20, False: 5.99k]
  ------------------
 1128|     20|		return 1;
 1129|       |
 1130|       |	/* validate keyslot implementations */
 1131|  5.99k|	if (LUKS2_keyslots_validate(cd, hdr_jobj))
  ------------------
  |  Branch (1131:6): [True: 0, False: 5.99k]
  ------------------
 1132|      0|		return 1;
 1133|       |
 1134|  5.99k|	return 0;
 1135|  5.99k|}
LUKS2_hdr_read:
 1166|  5.93k|{
 1167|  5.93k|	int r;
 1168|       |
 1169|  5.93k|	r = device_read_lock(cd, crypt_metadata_device(cd));
 1170|  5.93k|	if (r) {
  ------------------
  |  Branch (1170:6): [True: 0, False: 5.93k]
  ------------------
 1171|      0|		log_err(cd, _("Failed to acquire read lock on device %s."),
  ------------------
  |  |  189|      0|#define log_err(c, x...) crypt_logf(c, CRYPT_LOG_ERROR, x)
  |  |  ------------------
  |  |  |  |  176|      0|#define CRYPT_LOG_ERROR  1
  |  |  ------------------
  ------------------
 1172|      0|			device_path(crypt_metadata_device(cd)));
 1173|      0|		return r;
 1174|      0|	}
 1175|       |
 1176|  5.93k|	r = LUKS2_disk_hdr_read(cd, hdr, crypt_metadata_device(cd), 1, !repair);
 1177|  5.93k|	if (r == -EAGAIN) {
  ------------------
  |  Branch (1177:6): [True: 2.09k, False: 3.84k]
  ------------------
 1178|       |		/* unlikely: auto-recovery is required and failed due to read lock being held */
 1179|  2.09k|		device_read_unlock(cd, crypt_metadata_device(cd));
 1180|       |
 1181|       |		/* Do not use LUKS2_device_write lock. Recovery. */
 1182|  2.09k|		r = device_write_lock(cd, crypt_metadata_device(cd));
 1183|  2.09k|		if (r < 0) {
  ------------------
  |  Branch (1183:7): [True: 0, False: 2.09k]
  ------------------
 1184|      0|			log_err(cd, _("Failed to acquire write lock on device %s."),
  ------------------
  |  |  189|      0|#define log_err(c, x...) crypt_logf(c, CRYPT_LOG_ERROR, x)
  |  |  ------------------
  |  |  |  |  176|      0|#define CRYPT_LOG_ERROR  1
  |  |  ------------------
  ------------------
 1185|      0|				device_path(crypt_metadata_device(cd)));
 1186|      0|			return r;
 1187|      0|		}
 1188|       |
 1189|  2.09k|		r = LUKS2_disk_hdr_read(cd, hdr, crypt_metadata_device(cd), 1, !repair);
 1190|       |
 1191|  2.09k|		device_write_unlock(cd, crypt_metadata_device(cd));
 1192|  2.09k|	} else
 1193|  3.84k|		device_read_unlock(cd, crypt_metadata_device(cd));
 1194|       |
 1195|  5.93k|	if (!r && (r = hdr_update_copy_for_rollback(cd, hdr)))
  ------------------
  |  Branch (1195:6): [True: 2.09k, False: 3.84k]
  |  Branch (1195:12): [True: 0, False: 2.09k]
  ------------------
 1196|      0|		log_dbg(cd, "Failed to update rollback LUKS2 metadata.");
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
 1197|       |
 1198|  5.93k|	return r;
 1199|  5.93k|}
LUKS2_hdr_free:
 1293|  2.09k|{
 1294|  2.09k|	json_object **jobj;
 1295|       |
 1296|  2.09k|	assert(hdr);
  ------------------
  |  Branch (1296:2): [True: 0, False: 2.09k]
  |  Branch (1296:2): [True: 2.09k, False: 0]
  ------------------
 1297|       |
 1298|  2.09k|	jobj = (json_object **)&hdr->jobj;
 1299|       |
 1300|  2.09k|	if (!hdr_json_free(jobj))
  ------------------
  |  Branch (1300:6): [True: 0, False: 2.09k]
  ------------------
 1301|      0|		log_dbg(cd, "LUKS2 header still in use");
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
 1302|       |
 1303|  2.09k|	jobj = (json_object **)&hdr->jobj_rollback;
 1304|       |
 1305|  2.09k|	if (!hdr_json_free(jobj))
  ------------------
  |  Branch (1305:6): [True: 0, False: 2.09k]
  ------------------
 1306|      0|		log_dbg(cd, "LUKS2 rollback metadata copy still in use");
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
 1307|  2.09k|}
LUKS2_hdr_and_areas_size_jobj:
 1327|  6.01k|{
 1328|  6.01k|	return 2 * LUKS2_metadata_size_jobj(jobj) + LUKS2_keyslots_size_jobj(jobj);
 1329|  6.01k|}
LUKS2_config_get_requirements:
 1785|  12.1k|{
 1786|  12.1k|	json_object *jobj_mandatory, *jobj;
 1787|  12.1k|	int i, len;
 1788|  12.1k|	const struct requirement_flag *req;
 1789|       |
 1790|  12.1k|	assert(hdr);
  ------------------
  |  Branch (1790:2): [True: 0, False: 12.1k]
  |  Branch (1790:2): [True: 12.1k, False: 0]
  ------------------
 1791|  12.1k|	assert(reqs);
  ------------------
  |  Branch (1791:2): [True: 0, False: 12.1k]
  |  Branch (1791:2): [True: 12.1k, False: 0]
  ------------------
 1792|       |
 1793|  12.1k|	*reqs = 0;
 1794|       |
 1795|  12.1k|	jobj_mandatory = mandatory_requirements_jobj(hdr);
 1796|  12.1k|	if (!jobj_mandatory)
  ------------------
  |  Branch (1796:6): [True: 12.0k, False: 116]
  ------------------
 1797|  12.0k|		return;
 1798|       |
 1799|    116|	len = (int) json_object_array_length(jobj_mandatory);
 1800|    116|	if (len <= 0)
  ------------------
  |  Branch (1800:6): [True: 0, False: 116]
  ------------------
 1801|      0|		return;
 1802|       |
 1803|    116|	log_dbg(cd, "LUKS2 requirements detected:");
  ------------------
  |  |  186|    116|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|    116|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
 1804|       |
 1805|    394|	for (i = 0; i < len; i++) {
  ------------------
  |  Branch (1805:14): [True: 278, False: 116]
  ------------------
 1806|    278|		jobj = json_object_array_get_idx(jobj_mandatory, i);
 1807|    278|		req = get_requirement_by_name(json_object_get_string(jobj));
 1808|    278|		log_dbg(cd, "%s - %sknown", json_object_get_string(jobj),
  ------------------
  |  |  186|    556|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|    278|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  |  |  |  Branch (186:57): [True: 186, False: 92]
  |  |  ------------------
  ------------------
 1809|    278|				        reqs_unknown(req->flag) ? "un" : "");
 1810|    278|		*reqs |= req->flag;
 1811|    278|	}
 1812|    116|}
LUKS2_get_sector_size:
 2518|  2.09k|{
 2519|  2.09k|	return json_segment_get_sector_size(LUKS2_get_segment_jobj(hdr, CRYPT_DEFAULT_SEGMENT));
  ------------------
  |  |   44|  2.09k|#define CRYPT_DEFAULT_SEGMENT -2
  ------------------
 2520|  2.09k|}
LUKS2_hdr_repair:
 3090|    266|{
 3091|    266|	json_object *jobj_keyslots;
 3092|       |
 3093|    266|	if (!json_object_object_get_ex(hdr_jobj, "keyslots", &jobj_keyslots))
  ------------------
  |  Branch (3093:6): [True: 4, False: 262]
  ------------------
 3094|      4|		return;
 3095|    262|	if (!json_object_is_type(jobj_keyslots, json_type_object))
  ------------------
  |  Branch (3095:6): [True: 0, False: 262]
  ------------------
 3096|      0|		return;
 3097|       |
 3098|    262|	LUKS2_keyslots_repair(cd, jobj_keyslots);
 3099|    262|}
json_object_copy:
 3141|  2.09k|{
 3142|  2.09k|	if (!jobj_src || !jobj_dst || *jobj_dst)
  ------------------
  |  Branch (3142:6): [True: 0, False: 2.09k]
  |  Branch (3142:19): [True: 0, False: 2.09k]
  |  Branch (3142:32): [True: 0, False: 2.09k]
  ------------------
 3143|      0|		return -1;
 3144|       |
 3145|  2.09k|#if HAVE_DECL_JSON_OBJECT_DEEP_COPY
 3146|  2.09k|	return json_object_deep_copy(jobj_src, jobj_dst, NULL);
 3147|       |#else
 3148|       |	*jobj_dst = json_tokener_parse(json_object_get_string(jobj_src));
 3149|       |	return *jobj_dst ? 0 : -1;
 3150|       |#endif
 3151|  2.09k|}
luks2_json_metadata.c:json_get_segments_jobj:
  160|  12.3k|{
  161|  12.3k|	json_object *jobj_segments;
  162|       |
  163|  12.3k|	if (!hdr_jobj || !json_object_object_get_ex(hdr_jobj, "segments", &jobj_segments))
  ------------------
  |  Branch (163:6): [True: 0, False: 12.3k]
  |  Branch (163:19): [True: 0, False: 12.3k]
  ------------------
  164|      0|		return NULL;
  165|       |
  166|  12.3k|	return jobj_segments;
  167|  12.3k|}
luks2_json_metadata.c:json_str_to_uint64:
  216|  68.3k|{
  217|  68.3k|	char *endptr;
  218|  68.3k|	unsigned long long tmp;
  219|       |
  220|  68.3k|	errno = 0;
  221|  68.3k|	tmp = strtoull(json_object_get_string(jobj), &endptr, 10);
  222|  68.3k|	if (*endptr || errno) {
  ------------------
  |  Branch (222:6): [True: 14, False: 68.3k]
  |  Branch (222:17): [True: 14, False: 68.3k]
  ------------------
  223|     28|		*value = 0;
  224|     28|		return false;
  225|     28|	}
  226|       |
  227|  68.3k|	*value = tmp;
  228|       |	return true;
  229|  68.3k|}
luks2_json_metadata.c:validate_keyslots_array:
  308|     32|{
  309|     32|	json_object *jobj;
  310|     32|	int i = 0, length = (int) json_object_array_length(jarr);
  311|       |
  312|     72|	while (i < length) {
  ------------------
  |  Branch (312:9): [True: 50, False: 22]
  ------------------
  313|     50|		jobj = json_object_array_get_idx(jarr, i);
  314|     50|		if (!json_object_is_type(jobj, json_type_string)) {
  ------------------
  |  Branch (314:7): [True: 0, False: 50]
  ------------------
  315|      0|			log_dbg(cd, "Illegal value type in keyslots array at index %d.", i);
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  316|      0|			return false;
  317|      0|		}
  318|       |
  319|     50|		if (!json_contains(cd, jobj_keys, "", "Keyslots section",
  ------------------
  |  Branch (319:7): [True: 10, False: 40]
  ------------------
  320|     50|				   json_object_get_string(jobj), json_type_object))
  321|     10|			return false;
  322|       |
  323|     40|		i++;
  324|     40|	}
  325|       |
  326|     22|	return true;
  327|     32|}
luks2_json_metadata.c:hdr_validate_json_size:
  460|  6.01k|{
  461|  6.01k|	json_object *jobj, *jobj1;
  462|  6.01k|	const char *json;
  463|  6.01k|	uint64_t json_area_size, json_size;
  464|       |
  465|  6.01k|	json_object_object_get_ex(hdr_jobj, "config", &jobj);
  466|  6.01k|	json_object_object_get_ex(jobj, "json_size", &jobj1);
  467|       |
  468|  6.01k|	json = crypt_jobj_to_string_on_disk(hdr_jobj);
  469|  6.01k|	if (!json)
  ------------------
  |  Branch (469:6): [True: 0, False: 6.01k]
  ------------------
  470|      0|		return 1;
  471|       |
  472|  6.01k|	json_area_size = crypt_jobj_get_uint64(jobj1);
  473|  6.01k|	json_size = (uint64_t)strlen(json);
  474|       |
  475|  6.01k|	if (hdr_json_size != json_area_size) {
  ------------------
  |  Branch (475:6): [True: 14, False: 6.00k]
  ------------------
  476|     14|		log_dbg(cd, "JSON area size does not match value in binary header.");
  ------------------
  |  |  186|     14|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|     14|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  477|     14|		return 1;
  478|     14|	}
  479|       |
  480|  6.00k|	if (json_size > json_area_size) {
  ------------------
  |  Branch (480:6): [True: 6, False: 5.99k]
  ------------------
  481|      6|		log_dbg(cd, "JSON does not fit in the designated area.");
  ------------------
  |  |  186|      6|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      6|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  482|      6|		return 1;
  483|      6|	}
  484|       |
  485|  5.99k|	return 0;
  486|  6.00k|}
luks2_json_metadata.c:LUKS2_metadata_size_jobj:
  857|  12.0k|{
  858|  12.0k|	json_object *jobj1, *jobj2;
  859|  12.0k|	uint64_t json_size;
  860|       |
  861|  12.0k|	json_object_object_get_ex(jobj, "config", &jobj1);
  862|  12.0k|	json_object_object_get_ex(jobj1, "json_size", &jobj2);
  863|  12.0k|	json_str_to_uint64(jobj2, &json_size);
  864|       |
  865|  12.0k|	return json_size + LUKS2_HDR_BIN_LEN;
  ------------------
  |  |  143|  12.0k|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
  866|  12.0k|}
luks2_json_metadata.c:hdr_validate_requirements:
 1066|  6.52k|{
 1067|  6.52k|	int i;
 1068|  6.52k|	json_object *jobj_config, *jobj, *jobj1;
 1069|  6.52k|	unsigned online_reencrypt_flag = 0;
 1070|       |
 1071|  6.52k|	if (!(jobj_config = json_contains(cd, hdr_jobj, "", "JSON area", "config", json_type_object)))
  ------------------
  |  Branch (1071:6): [True: 124, False: 6.40k]
  ------------------
 1072|    124|		return 1;
 1073|       |
 1074|       |	/* Requirements object is optional */
 1075|  6.40k|	if (json_object_object_get_ex(jobj_config, "requirements", &jobj)) {
  ------------------
  |  Branch (1075:6): [True: 234, False: 6.16k]
  ------------------
 1076|    234|		if (!json_contains(cd, jobj_config, "section", "Config", "requirements", json_type_object))
  ------------------
  |  Branch (1076:7): [True: 2, False: 232]
  ------------------
 1077|      2|			return 1;
 1078|       |
 1079|       |		/* Mandatory array is optional */
 1080|    232|		if (json_object_object_get_ex(jobj, "mandatory", &jobj1)) {
  ------------------
  |  Branch (1080:7): [True: 167, False: 65]
  ------------------
 1081|    167|			if (!json_contains(cd, jobj, "section", "Requirements", "mandatory", json_type_array))
  ------------------
  |  Branch (1081:8): [True: 2, False: 165]
  ------------------
 1082|      2|				return 1;
 1083|       |
 1084|       |			/* All array members must be strings */
 1085|  2.87k|			for (i = 0; i < (int) json_object_array_length(jobj1); i++) {
  ------------------
  |  Branch (1085:16): [True: 2.70k, False: 165]
  ------------------
 1086|  2.70k|				if (!json_object_is_type(json_object_array_get_idx(jobj1, i), json_type_string))
  ------------------
  |  Branch (1086:9): [True: 0, False: 2.70k]
  ------------------
 1087|      0|					return 1;
 1088|       |
 1089|  2.70k|				if (reencrypt_candidate_flag(json_object_get_string(json_object_array_get_idx(jobj1, i))))
  ------------------
  |  Branch (1089:9): [True: 612, False: 2.09k]
  ------------------
 1090|    612|					online_reencrypt_flag++;
 1091|       |
 1092|  2.70k|			}
 1093|    165|		}
 1094|    232|	}
 1095|       |
 1096|  6.39k|	if (online_reencrypt_flag > 1) {
  ------------------
  |  Branch (1096:6): [True: 20, False: 6.37k]
  ------------------
 1097|     20|		log_dbg(cd, "Multiple online reencryption requirement flags detected.");
  ------------------
  |  |  186|     20|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|     20|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
 1098|     20|		return 1;
 1099|     20|	}
 1100|       |
 1101|  6.37k|	return 0;
 1102|  6.39k|}
luks2_json_metadata.c:hdr_validate_tokens:
  511|  6.37k|{
  512|  6.37k|	json_object *jobj;
  513|       |
  514|  6.37k|	if (!(jobj = json_contains(cd, hdr_jobj, "", "JSON area", "tokens", json_type_object)))
  ------------------
  |  Branch (514:6): [True: 4, False: 6.37k]
  ------------------
  515|      4|		return 1;
  516|       |
  517|  6.37k|	json_object_object_foreach(jobj, key, val) {
  ------------------
  |  |  494|  6.37k|	char *key = NULL;                                                        \
  |  |  495|  6.37k|	struct json_object *val __attribute__((__unused__)) = NULL;              \
  |  |  496|  6.37k|	for (struct lh_entry *entry##key = lh_table_head(json_object_get_object(obj)),    \
  |  |  497|  6.37k|	                     *entry_next##key = NULL;                            \
  |  |  498|  6.38k|	     ({                                                                  \
  |  |  ------------------
  |  |  |  Branch (498:7): [True: 28, False: 6.35k]
  |  |  ------------------
  |  |  499|  6.38k|		     if (entry##key)                                             \
  |  |  ------------------
  |  |  |  Branch (499:12): [True: 28, False: 6.35k]
  |  |  ------------------
  |  |  500|  6.38k|		     {                                                           \
  |  |  501|     28|			     key = (char *)lh_entry_k(entry##key);               \
  |  |  502|     28|			     val = (struct json_object *)lh_entry_v(entry##key); \
  |  |  503|     28|			     entry_next##key = lh_entry_next(entry##key);        \
  |  |  504|     28|		     };                                                          \
  |  |  505|  6.38k|		     entry##key;                                                 \
  |  |  506|  6.38k|	     });                                                                 \
  |  |  507|  6.37k|	     entry##key = entry_next##key)
  ------------------
  518|     28|		if (!numbered(cd, "Token", key))
  ------------------
  |  Branch (518:7): [True: 4, False: 24]
  ------------------
  519|      4|			return 1;
  520|     24|		if (LUKS2_token_validate(cd, hdr_jobj, val, key))
  ------------------
  |  Branch (520:7): [True: 18, False: 6]
  ------------------
  521|     18|			return 1;
  522|     24|	}
  523|       |
  524|  6.35k|	return 0;
  525|  6.37k|}
luks2_json_metadata.c:numbered:
  257|  20.4k|{
  258|  20.4k|	int i;
  259|       |
  260|   100k|	for (i = 0; key[i]; i++)
  ------------------
  |  Branch (260:14): [True: 79.6k, False: 20.4k]
  ------------------
  261|  79.6k|		if (!isdigit(key[i])) {
  ------------------
  |  Branch (261:7): [True: 48, False: 79.6k]
  ------------------
  262|     48|			log_dbg(cd, "%s \"%s\" is not in numbered form.", name, key);
  ------------------
  |  |  186|     48|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|     48|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  263|     48|			return false;
  264|     48|		}
  265|  20.4k|	return true;
  266|  20.4k|}
luks2_json_metadata.c:hdr_validate_digests:
  943|  6.35k|{
  944|  6.35k|	json_object *jarr_keys, *jarr_segs, *jobj, *jobj_keyslots, *jobj_segments;
  945|       |
  946|  6.35k|	if (!(jobj = json_contains(cd, hdr_jobj, "", "JSON area", "digests", json_type_object)))
  ------------------
  |  Branch (946:6): [True: 8, False: 6.34k]
  ------------------
  947|      8|		return 1;
  948|       |
  949|       |	/* keyslots are not yet validated, but we need to know digest doesn't reference missing keyslot */
  950|  6.34k|	if (!(jobj_keyslots = json_contains(cd, hdr_jobj, "", "JSON area", "keyslots", json_type_object)))
  ------------------
  |  Branch (950:6): [True: 2, False: 6.34k]
  ------------------
  951|      2|		return 1;
  952|       |
  953|       |	/* segments are not yet validated, but we need to know digest doesn't reference missing segment */
  954|  6.34k|	if (!(jobj_segments = json_contains(cd, hdr_jobj, "", "JSON area", "segments", json_type_object)))
  ------------------
  |  Branch (954:6): [True: 4, False: 6.33k]
  ------------------
  955|      4|		return 1;
  956|       |
  957|  6.33k|	json_object_object_foreach(jobj, key, val) {
  ------------------
  |  |  494|  6.33k|	char *key = NULL;                                                        \
  |  |  495|  6.33k|	struct json_object *val __attribute__((__unused__)) = NULL;              \
  |  |  496|  6.33k|	for (struct lh_entry *entry##key = lh_table_head(json_object_get_object(obj)),    \
  |  |  497|  6.33k|	                     *entry_next##key = NULL;                            \
  |  |  498|  6.35k|	     ({                                                                  \
  |  |  ------------------
  |  |  |  Branch (498:7): [True: 32, False: 6.31k]
  |  |  ------------------
  |  |  499|  6.35k|		     if (entry##key)                                             \
  |  |  ------------------
  |  |  |  Branch (499:12): [True: 32, False: 6.31k]
  |  |  ------------------
  |  |  500|  6.35k|		     {                                                           \
  |  |  501|     32|			     key = (char *)lh_entry_k(entry##key);               \
  |  |  502|     32|			     val = (struct json_object *)lh_entry_v(entry##key); \
  |  |  503|     32|			     entry_next##key = lh_entry_next(entry##key);        \
  |  |  504|     32|		     };                                                          \
  |  |  505|  6.35k|		     entry##key;                                                 \
  |  |  506|  6.35k|	     });                                                                 \
  |  |  507|  6.33k|	     entry##key = entry_next##key)
  ------------------
  958|     32|		if (!numbered(cd, "Digest", key))
  ------------------
  |  Branch (958:7): [True: 4, False: 28]
  ------------------
  959|      4|			return 1;
  960|       |
  961|     28|		if (!json_contains_string(cd, val, key, "Digest", "type") ||
  ------------------
  |  Branch (961:7): [True: 2, False: 26]
  ------------------
  962|     26|		    !(jarr_keys = json_contains(cd, val, key, "Digest", "keyslots", json_type_array)) ||
  ------------------
  |  Branch (962:7): [True: 6, False: 20]
  ------------------
  963|     20|		    !(jarr_segs = json_contains(cd, val, key, "Digest", "segments", json_type_array)))
  ------------------
  |  Branch (963:7): [True: 2, False: 18]
  ------------------
  964|     10|			return 1;
  965|       |
  966|     18|		if (!validate_keyslots_array(cd, jarr_keys, jobj_keyslots))
  ------------------
  |  Branch (966:7): [True: 2, False: 16]
  ------------------
  967|      2|			return 1;
  968|     16|		if (!validate_segments_array(cd, jarr_segs, jobj_segments))
  ------------------
  |  Branch (968:7): [True: 4, False: 12]
  ------------------
  969|      4|			return 1;
  970|     16|	}
  971|       |
  972|  6.31k|	return 0;
  973|  6.33k|}
luks2_json_metadata.c:validate_segments_array:
  330|     16|{
  331|     16|	json_object *jobj;
  332|     16|	int i = 0, length = (int) json_object_array_length(jarr);
  333|       |
  334|     70|	while (i < length) {
  ------------------
  |  Branch (334:9): [True: 58, False: 12]
  ------------------
  335|     58|		jobj = json_object_array_get_idx(jarr, i);
  336|     58|		if (!json_object_is_type(jobj, json_type_string)) {
  ------------------
  |  Branch (336:7): [True: 0, False: 58]
  ------------------
  337|      0|			log_dbg(cd, "Illegal value type in segments array at index %d.", i);
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  338|      0|			return false;
  339|      0|		}
  340|       |
  341|     58|		if (!json_contains(cd, jobj_segments, "", "Segments section",
  ------------------
  |  Branch (341:7): [True: 4, False: 54]
  ------------------
  342|     58|				   json_object_get_string(jobj), json_type_object))
  343|      4|			return false;
  344|       |
  345|     54|		i++;
  346|     54|	}
  347|       |
  348|     12|	return true;
  349|     16|}
luks2_json_metadata.c:hdr_validate_segments:
  697|  6.31k|{
  698|  6.31k|	json_object *jobj_segments, *jobj_digests, *jobj_offset, *jobj_size, *jobj_type, *jobj_flags, *jobj;
  699|  6.31k|	uint64_t offset, size, opal_segment_size;
  700|  6.31k|	int i, r, count, first_backup = -1;
  701|  6.31k|	struct interval *intervals = NULL;
  702|       |
  703|  6.31k|	if (!(jobj_segments = json_contains(cd, hdr_jobj, "", "JSON area", "segments", json_type_object)))
  ------------------
  |  Branch (703:6): [True: 0, False: 6.31k]
  ------------------
  704|      0|		return 1;
  705|       |
  706|  6.31k|	count = json_object_object_length(jobj_segments);
  707|  6.31k|	if (count < 1) {
  ------------------
  |  Branch (707:6): [True: 4, False: 6.31k]
  ------------------
  708|      4|		log_dbg(cd, "Empty segments section.");
  ------------------
  |  |  186|      4|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      4|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  709|      4|		return 1;
  710|      4|	}
  711|       |
  712|       |	/* digests should already be validated */
  713|  6.31k|	if (!json_object_object_get_ex(hdr_jobj, "digests", &jobj_digests))
  ------------------
  |  Branch (713:6): [True: 0, False: 6.31k]
  ------------------
  714|      0|		return 1;
  715|       |
  716|  6.77k|	json_object_object_foreach(jobj_segments, key, val) {
  ------------------
  |  |  494|  6.31k|	char *key = NULL;                                                        \
  |  |  495|  6.31k|	struct json_object *val __attribute__((__unused__)) = NULL;              \
  |  |  496|  6.31k|	for (struct lh_entry *entry##key = lh_table_head(json_object_get_object(obj)),    \
  |  |  497|  6.31k|	                     *entry_next##key = NULL;                            \
  |  |  498|  12.9k|	     ({                                                                  \
  |  |  ------------------
  |  |  |  Branch (498:7): [True: 6.77k, False: 6.20k]
  |  |  ------------------
  |  |  499|  12.9k|		     if (entry##key)                                             \
  |  |  ------------------
  |  |  |  Branch (499:12): [True: 6.77k, False: 6.20k]
  |  |  ------------------
  |  |  500|  12.9k|		     {                                                           \
  |  |  501|  6.77k|			     key = (char *)lh_entry_k(entry##key);               \
  |  |  502|  6.77k|			     val = (struct json_object *)lh_entry_v(entry##key); \
  |  |  503|  6.77k|			     entry_next##key = lh_entry_next(entry##key);        \
  |  |  504|  6.77k|		     };                                                          \
  |  |  505|  12.9k|		     entry##key;                                                 \
  |  |  506|  12.9k|	     });                                                                 \
  |  |  507|  6.66k|	     entry##key = entry_next##key)
  ------------------
  717|  6.77k|		if (!numbered(cd, "Segment", key))
  ------------------
  |  Branch (717:7): [True: 8, False: 6.76k]
  ------------------
  718|      8|			return 1;
  719|       |
  720|       |		/* those fields are mandatory for all segment types */
  721|  6.76k|		if (!(jobj_type =   json_contains_string(cd, val, key, "Segment", "type")) ||
  ------------------
  |  Branch (721:7): [True: 12, False: 6.75k]
  ------------------
  722|  6.75k|		    !(jobj_offset = json_contains_string(cd, val, key, "Segment", "offset")) ||
  ------------------
  |  Branch (722:7): [True: 8, False: 6.74k]
  ------------------
  723|  6.74k|		    !(jobj_size =   json_contains_string(cd, val, key, "Segment", "size")))
  ------------------
  |  Branch (723:7): [True: 4, False: 6.74k]
  ------------------
  724|     24|			return 1;
  725|       |
  726|  6.74k|		if (!numbered(cd, "offset", json_object_get_string(jobj_offset)))
  ------------------
  |  Branch (726:7): [True: 6, False: 6.73k]
  ------------------
  727|      6|			return 1;
  728|       |
  729|  6.73k|		if (!json_str_to_uint64(jobj_offset, &offset)) {
  ------------------
  |  Branch (729:7): [True: 0, False: 6.73k]
  ------------------
  730|      0|			log_dbg(cd, "Illegal segment offset value.");
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  731|      0|			return 1;
  732|      0|		}
  733|       |
  734|       |		/* size "dynamic" means whole device starting at 'offset' */
  735|  6.73k|		if (strcmp(json_object_get_string(jobj_size), "dynamic")) {
  ------------------
  |  Branch (735:7): [True: 6.73k, False: 2]
  ------------------
  736|  6.73k|			if (!numbered(cd, "size", json_object_get_string(jobj_size)))
  ------------------
  |  Branch (736:8): [True: 8, False: 6.72k]
  ------------------
  737|      8|				return 1;
  738|  6.72k|			if (!json_str_to_uint64(jobj_size, &size) || !size) {
  ------------------
  |  Branch (738:8): [True: 6, False: 6.71k]
  |  Branch (738:49): [True: 2, False: 6.71k]
  ------------------
  739|      8|				log_dbg(cd, "Illegal segment size value.");
  ------------------
  |  |  186|      8|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      8|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  740|      8|				return 1;
  741|      8|			}
  742|  6.72k|		} else
  743|      2|			size = 0;
  744|       |
  745|       |		/* all device-mapper devices are aligned to 512 sector size */
  746|  6.71k|		if (MISALIGNED_512(offset)) {
  ------------------
  |  |   45|  6.71k|#define MISALIGNED_512(a)	MISALIGNED((a), 1 << SECTOR_SHIFT)
  |  |  ------------------
  |  |  |  |   43|  6.71k|#define MISALIGNED(a, b)	((a) & ((b) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:26): [True: 6, False: 6.71k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  747|      6|			log_dbg(cd, "Offset field has to be aligned to sector size: %" PRIu32, SECTOR_SIZE);
  ------------------
  |  |  186|      6|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      6|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  748|      6|			return 1;
  749|      6|		}
  750|  6.71k|		if (MISALIGNED_512(size)) {
  ------------------
  |  |   45|  6.71k|#define MISALIGNED_512(a)	MISALIGNED((a), 1 << SECTOR_SHIFT)
  |  |  ------------------
  |  |  |  |   43|  6.71k|#define MISALIGNED(a, b)	((a) & ((b) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:26): [True: 8, False: 6.70k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  751|      8|			log_dbg(cd, "Size field has to be aligned to sector size: %" PRIu32, SECTOR_SIZE);
  ------------------
  |  |  186|      8|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      8|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  752|      8|			return 1;
  753|      8|		}
  754|       |
  755|       |		/* flags array is optional and must contain strings */
  756|  6.70k|		if (json_object_object_get_ex(val, "flags", NULL)) {
  ------------------
  |  Branch (756:7): [True: 6.00k, False: 704]
  ------------------
  757|  6.00k|			if (!(jobj_flags = json_contains(cd, val, key, "Segment", "flags", json_type_array)))
  ------------------
  |  Branch (757:8): [True: 0, False: 6.00k]
  ------------------
  758|      0|				return 1;
  759|  19.2k|			for (i = 0; i < (int) json_object_array_length(jobj_flags); i++)
  ------------------
  |  Branch (759:16): [True: 13.2k, False: 5.99k]
  ------------------
  760|  13.2k|				if (!json_object_is_type(json_object_array_get_idx(jobj_flags, i), json_type_string))
  ------------------
  |  Branch (760:9): [True: 2, False: 13.2k]
  ------------------
  761|      2|					return 1;
  762|  6.00k|		}
  763|       |
  764|  6.70k|		i = atoi(key);
  765|  6.70k|		if (json_segment_is_backup(val)) {
  ------------------
  |  Branch (765:7): [True: 316, False: 6.38k]
  ------------------
  766|    316|			if (first_backup < 0 || i < first_backup)
  ------------------
  |  Branch (766:8): [True: 142, False: 174]
  |  Branch (766:28): [True: 78, False: 96]
  ------------------
  767|    220|				first_backup = i;
  768|  6.38k|		} else {
  769|  6.38k|			if ((first_backup >= 0) && i >= first_backup) {
  ------------------
  |  Branch (769:8): [True: 89, False: 6.29k]
  |  Branch (769:31): [True: 4, False: 85]
  ------------------
  770|      4|				log_dbg(cd, "Regular segment at %d is behind backup segment at %d", i, first_backup);
  ------------------
  |  |  186|      4|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      4|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  771|      4|				return 1;
  772|      4|			}
  773|  6.38k|		}
  774|       |
  775|       |		/* crypt */
  776|  6.69k|		if (!strcmp(json_object_get_string(jobj_type), "crypt") &&
  ------------------
  |  Branch (776:7): [True: 32, False: 6.66k]
  ------------------
  777|     32|		    hdr_validate_crypt_segment(cd, val, key, jobj_digests, size))
  ------------------
  |  Branch (777:7): [True: 32, False: 0]
  ------------------
  778|     32|			return 1;
  779|       |
  780|       |		/* opal */
  781|  6.66k|		if (!strncmp(json_object_get_string(jobj_type), "hw-opal", 7)) {
  ------------------
  |  Branch (781:7): [True: 2, False: 6.66k]
  ------------------
  782|      2|			if (!size) {
  ------------------
  |  Branch (782:8): [True: 0, False: 2]
  ------------------
  783|      0|				log_dbg(cd, "segment type %s does not support dynamic size.",
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  784|      0|					json_object_get_string(jobj_type));
  785|      0|				return 1;
  786|      0|			}
  787|      2|			if (!json_contains(cd, val, key, "Segment", "opal_segment_number", json_type_int) ||
  ------------------
  |  Branch (787:8): [True: 2, False: 0]
  ------------------
  788|      0|			    !json_contains(cd, val, key, "Segment", "opal_key_size", json_type_int) ||
  ------------------
  |  Branch (788:8): [True: 0, False: 0]
  ------------------
  789|      0|			    !(jobj_size = json_contains_string(cd, val, key, "Segment", "opal_segment_size")))
  ------------------
  |  Branch (789:8): [True: 0, False: 0]
  ------------------
  790|      2|				return 1;
  791|      0|			if (!numbered(cd, "opal_segment_size", json_object_get_string(jobj_size)))
  ------------------
  |  Branch (791:8): [True: 0, False: 0]
  ------------------
  792|      0|				return 1;
  793|      0|			if (!json_str_to_uint64(jobj_size, &opal_segment_size) || !opal_segment_size) {
  ------------------
  |  Branch (793:8): [True: 0, False: 0]
  |  Branch (793:62): [True: 0, False: 0]
  ------------------
  794|      0|				log_dbg(cd, "Illegal OPAL segment size value.");
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  795|      0|				return 1;
  796|      0|			}
  797|      0|			if (size > opal_segment_size) {
  ------------------
  |  Branch (797:8): [True: 0, False: 0]
  ------------------
  798|      0|				log_dbg(cd, "segment size overflows OPAL locking range size.");
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  799|      0|				return 1;
  800|      0|			}
  801|      0|			if (!strcmp(json_object_get_string(jobj_type), "hw-opal-crypt") &&
  ------------------
  |  Branch (801:8): [True: 0, False: 0]
  ------------------
  802|      0|			    hdr_validate_crypt_segment(cd, val, key, jobj_digests, size))
  ------------------
  |  Branch (802:8): [True: 0, False: 0]
  ------------------
  803|      0|				return 1;
  804|      0|		}
  805|  6.66k|	}
  806|       |
  807|  6.20k|	if (first_backup == 0) {
  ------------------
  |  Branch (807:6): [True: 2, False: 6.20k]
  ------------------
  808|      2|		log_dbg(cd, "No regular segment.");
  ------------------
  |  |  186|      2|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      2|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  809|      2|		return 1;
  810|      2|	}
  811|       |
  812|       |	/* avoid needlessly large allocation when first backup segment is invalid */
  813|  6.20k|	if (first_backup >= count) {
  ------------------
  |  Branch (813:6): [True: 18, False: 6.18k]
  ------------------
  814|     18|		log_dbg(cd, "Gap between last regular segment and backup segment at key %d.", first_backup);
  ------------------
  |  |  186|     18|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|     18|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  815|     18|		return 1;
  816|     18|	}
  817|       |
  818|  6.18k|	if (first_backup < 0)
  ------------------
  |  Branch (818:6): [True: 6.14k, False: 42]
  ------------------
  819|  6.14k|		first_backup = count;
  820|       |
  821|  6.18k|	if ((size_t)first_backup < SIZE_MAX / sizeof(*intervals))
  ------------------
  |  Branch (821:6): [True: 6.18k, False: 0]
  ------------------
  822|  6.18k|		intervals = malloc(first_backup * sizeof(*intervals));
  823|       |
  824|  6.18k|	if (!intervals) {
  ------------------
  |  Branch (824:6): [True: 0, False: 6.18k]
  ------------------
  825|      0|		log_dbg(cd, "Not enough memory.");
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  826|      0|		return 1;
  827|      0|	}
  828|       |
  829|  12.4k|	for (i = 0; i < first_backup; i++) {
  ------------------
  |  Branch (829:14): [True: 6.28k, False: 6.16k]
  ------------------
  830|  6.28k|		jobj = json_segments_get_segment(jobj_segments, i);
  831|  6.28k|		if (!jobj) {
  ------------------
  |  Branch (831:7): [True: 20, False: 6.26k]
  ------------------
  832|     20|			log_dbg(cd, "Gap at key %d in segments object.", i);
  ------------------
  |  |  186|     20|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|     20|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  833|     20|			free(intervals);
  834|     20|			return 1;
  835|     20|		}
  836|  6.26k|		intervals[i].offset = json_segment_get_offset(jobj, 0);
  837|  6.26k|		intervals[i].length = json_segment_get_size(jobj, 0) ?: UINT64_MAX;
  ------------------
  |  Branch (837:25): [True: 6.26k, False: 2]
  ------------------
  838|  6.26k|	}
  839|       |
  840|  6.16k|	r = !validate_segment_intervals(cd, first_backup, intervals);
  841|  6.16k|	free(intervals);
  842|       |
  843|  6.16k|	if (r)
  ------------------
  |  Branch (843:6): [True: 2, False: 6.16k]
  ------------------
  844|      2|		return 1;
  845|       |
  846|  6.24k|	for (; i < count; i++) {
  ------------------
  |  Branch (846:9): [True: 87, False: 6.15k]
  ------------------
  847|     87|		if (!json_segments_get_segment(jobj_segments, i)) {
  ------------------
  |  Branch (847:7): [True: 6, False: 81]
  ------------------
  848|      6|			log_dbg(cd, "Gap at key %d in segments object.", i);
  ------------------
  |  |  186|      6|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      6|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  849|      6|			return 1;
  850|      6|		}
  851|     87|	}
  852|       |
  853|  6.15k|	return validate_reencrypt_segments(cd, hdr_jobj, jobj_segments, first_backup, count);
  854|  6.16k|}
luks2_json_metadata.c:hdr_validate_crypt_segment:
  530|     32|{
  531|     32|	int r;
  532|     32|	json_object *jobj_ivoffset, *jobj_sector_size, *jobj_integrity;
  533|     32|	uint32_t sector_size;
  534|     32|	uint64_t ivoffset;
  535|       |
  536|     32|	if (!(jobj_ivoffset = json_contains_string(cd, jobj, key, "Segment", "iv_tweak")) ||
  ------------------
  |  Branch (536:6): [True: 6, False: 26]
  ------------------
  537|     26|	    !json_contains_string(cd, jobj, key, "Segment", "encryption") ||
  ------------------
  |  Branch (537:6): [True: 2, False: 24]
  ------------------
  538|     24|	    !(jobj_sector_size = json_contains(cd, jobj, key, "Segment", "sector_size", json_type_int)))
  ------------------
  |  Branch (538:6): [True: 4, False: 20]
  ------------------
  539|     12|		return 1;
  540|       |
  541|       |	/* integrity */
  542|     20|	if (json_object_object_get_ex(jobj, "integrity", &jobj_integrity)) {
  ------------------
  |  Branch (542:6): [True: 8, False: 12]
  ------------------
  543|      8|		if (!json_contains(cd, jobj, key, "Segment", "integrity", json_type_object) ||
  ------------------
  |  Branch (543:7): [True: 0, False: 8]
  ------------------
  544|      8|		    !json_contains_string(cd, jobj_integrity, key, "Segment integrity", "type") ||
  ------------------
  |  Branch (544:7): [True: 2, False: 6]
  ------------------
  545|      6|		    !json_contains_string(cd, jobj_integrity, key, "Segment integrity", "journal_encryption") ||
  ------------------
  |  Branch (545:7): [True: 2, False: 4]
  ------------------
  546|      4|		    !json_contains_string(cd, jobj_integrity, key, "Segment integrity", "journal_integrity"))
  ------------------
  |  Branch (546:7): [True: 2, False: 2]
  ------------------
  547|      6|			return 1;
  548|      8|	}
  549|       |
  550|       |	/* enforce uint32_t type */
  551|     14|	if (!validate_json_uint32(jobj_sector_size)) {
  ------------------
  |  Branch (551:6): [True: 2, False: 12]
  ------------------
  552|      2|		log_dbg(cd, "Illegal field \"sector_size\":%s.",
  ------------------
  |  |  186|      2|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      2|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  553|      2|			json_object_get_string(jobj_sector_size));
  554|      2|		return 1;
  555|      2|	}
  556|       |
  557|     12|	sector_size = crypt_jobj_get_uint32(jobj_sector_size);
  558|     12|	if (!sector_size || MISALIGNED_512(sector_size)) {
  ------------------
  |  |   45|     10|#define MISALIGNED_512(a)	MISALIGNED((a), 1 << SECTOR_SHIFT)
  |  |  ------------------
  |  |  |  |   43|     10|#define MISALIGNED(a, b)	((a) & ((b) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:26): [True: 2, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (558:6): [True: 2, False: 10]
  ------------------
  559|      4|		log_dbg(cd, "Illegal sector size: %" PRIu32, sector_size);
  ------------------
  |  |  186|      4|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      4|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  560|      4|		return 1;
  561|      4|	}
  562|       |
  563|      8|	if (!numbered(cd, "iv_tweak", json_object_get_string(jobj_ivoffset)) ||
  ------------------
  |  Branch (563:6): [True: 4, False: 4]
  ------------------
  564|      4|	    !json_str_to_uint64(jobj_ivoffset, &ivoffset)) {
  ------------------
  |  Branch (564:6): [True: 0, False: 4]
  ------------------
  565|      4|		log_dbg(cd, "Illegal iv_tweak value.");
  ------------------
  |  |  186|      4|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      4|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  566|      4|		return 1;
  567|      4|	}
  568|       |
  569|      4|	if (size % sector_size) {
  ------------------
  |  Branch (569:6): [True: 2, False: 2]
  ------------------
  570|      2|		log_dbg(cd, "Size field has to be aligned to sector size: %" PRIu32, sector_size);
  ------------------
  |  |  186|      2|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      2|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  571|      2|		return 1;
  572|      2|	}
  573|       |
  574|      2|	r = segment_has_digest(key, jobj_digests);
  575|       |
  576|      2|	if (!r)
  ------------------
  |  Branch (576:6): [True: 2, False: 0]
  ------------------
  577|      2|		log_dbg(cd, "Crypt segment %s not assigned to key digest.", key);
  ------------------
  |  |  186|      2|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      2|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  578|       |
  579|      2|	return !r;
  580|      4|}
luks2_json_metadata.c:segment_has_digest:
  352|      2|{
  353|      2|	json_object *jobj_segments;
  354|       |
  355|      2|	json_object_object_foreach(jobj_digests, key, val) {
  ------------------
  |  |  494|      2|	char *key = NULL;                                                        \
  |  |  495|      2|	struct json_object *val __attribute__((__unused__)) = NULL;              \
  |  |  496|      2|	for (struct lh_entry *entry##key = lh_table_head(json_object_get_object(obj)),    \
  |  |  497|      2|	                     *entry_next##key = NULL;                            \
  |  |  498|      2|	     ({                                                                  \
  |  |  ------------------
  |  |  |  Branch (498:7): [True: 0, False: 2]
  |  |  ------------------
  |  |  499|      2|		     if (entry##key)                                             \
  |  |  ------------------
  |  |  |  Branch (499:12): [True: 0, False: 2]
  |  |  ------------------
  |  |  500|      2|		     {                                                           \
  |  |  501|      0|			     key = (char *)lh_entry_k(entry##key);               \
  |  |  502|      0|			     val = (struct json_object *)lh_entry_v(entry##key); \
  |  |  503|      0|			     entry_next##key = lh_entry_next(entry##key);        \
  |  |  504|      0|		     };                                                          \
  |  |  505|      2|		     entry##key;                                                 \
  |  |  506|      2|	     });                                                                 \
  |  |  507|      2|	     entry##key = entry_next##key)
  ------------------
  356|      0|		UNUSED(key);
  ------------------
  |  |   18|      0|#define UNUSED(x) (void)(x)
  ------------------
  357|      0|		json_object_object_get_ex(val, "segments", &jobj_segments);
  358|      0|		if (LUKS2_array_jobj(jobj_segments, segment_name))
  ------------------
  |  Branch (358:7): [True: 0, False: 0]
  ------------------
  359|      0|			return true;
  360|      0|	}
  361|       |
  362|      2|	return false;
  363|      2|}
luks2_json_metadata.c:validate_segment_intervals:
  584|  6.16k|{
  585|  6.16k|	int j, i = 0;
  586|       |
  587|  12.4k|	while (i < length) {
  ------------------
  |  Branch (587:9): [True: 6.26k, False: 6.16k]
  ------------------
  588|  6.26k|		if (ix[i].length == UINT64_MAX && (i != (length - 1))) {
  ------------------
  |  Branch (588:7): [True: 2, False: 6.25k]
  |  Branch (588:37): [True: 0, False: 2]
  ------------------
  589|      0|			log_dbg(cd, "Only last regular segment is allowed to have 'dynamic' size.");
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  590|      0|			return false;
  591|      0|		}
  592|       |
  593|  12.8k|		for (j = 0; j < length; j++) {
  ------------------
  |  Branch (593:15): [True: 6.62k, False: 6.25k]
  ------------------
  594|  6.62k|			if (i == j)
  ------------------
  |  Branch (594:8): [True: 6.26k, False: 362]
  ------------------
  595|  6.26k|				continue;
  596|       |
  597|    362|			if (ix[j].length != UINT64_MAX && ix[j].offset > (UINT64_MAX - ix[j].length)) {
  ------------------
  |  Branch (597:8): [True: 362, False: 0]
  |  Branch (597:38): [True: 0, False: 362]
  ------------------
  598|      0|				log_dbg(cd, "Interval offset+length overflow.");
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  599|      0|				return false;
  600|      0|			}
  601|       |
  602|    362|			if ((ix[i].offset >= ix[j].offset) && (ix[j].length == UINT64_MAX || (ix[i].offset < (ix[j].offset + ix[j].length)))) {
  ------------------
  |  Branch (602:8): [True: 184, False: 178]
  |  Branch (602:43): [True: 0, False: 184]
  |  Branch (602:73): [True: 2, False: 182]
  ------------------
  603|      2|				log_dbg(cd, "Overlapping segments [%" PRIu64 ",%" PRIu64 "]%s and [%" PRIu64 ",%" PRIu64 "]%s.",
  ------------------
  |  |  186|      8|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      2|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  |  |  |  Branch (186:57): [True: 0, False: 2]
  |  |  |  Branch (186:57): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  604|      2|					ix[i].offset, ix[i].offset + ix[i].length, ix[i].length == UINT64_MAX ? "(dynamic)" : "",
  605|      2|					ix[j].offset, ix[j].offset + ix[j].length, ix[j].length == UINT64_MAX ? "(dynamic)" : "");
  606|      2|				return false;
  607|      2|			}
  608|    362|		}
  609|       |
  610|  6.25k|		i++;
  611|  6.25k|	}
  612|       |
  613|  6.16k|	return true;
  614|  6.16k|}
luks2_json_metadata.c:validate_reencrypt_segments:
  646|  6.15k|{
  647|  6.15k|	json_object *jobj, *jobj_backup_previous = NULL, *jobj_backup_final = NULL;
  648|  6.15k|	uint32_t reqs;
  649|  6.15k|	int i;
  650|  6.15k|	struct luks2_hdr dummy = {
  651|  6.15k|		.jobj = hdr_jobj
  652|  6.15k|	};
  653|       |
  654|  6.15k|	LUKS2_config_get_requirements(cd, &dummy, &reqs);
  655|       |
  656|  6.15k|	if (reqs_reencrypt_online(reqs)) {
  ------------------
  |  Branch (656:6): [True: 10, False: 6.14k]
  ------------------
  657|     22|		for (i = first_backup; i < segments_count; i++) {
  ------------------
  |  Branch (657:26): [True: 12, False: 10]
  ------------------
  658|     12|			jobj = json_segments_get_segment(jobj_segments, i);
  659|     12|			if (!jobj)
  ------------------
  |  Branch (659:8): [True: 0, False: 12]
  ------------------
  660|      0|				return 1;
  661|     12|			if (json_segment_contains_flag(jobj, "backup-final", 0))
  ------------------
  |  Branch (661:8): [True: 2, False: 10]
  ------------------
  662|      2|				jobj_backup_final = jobj;
  663|     10|			else if (json_segment_contains_flag(jobj, "backup-previous", 0))
  ------------------
  |  Branch (663:13): [True: 4, False: 6]
  ------------------
  664|      4|				jobj_backup_previous = jobj;
  665|     12|		}
  666|       |
  667|     10|		if (!jobj_backup_final || !jobj_backup_previous) {
  ------------------
  |  Branch (667:7): [True: 8, False: 2]
  |  Branch (667:29): [True: 0, False: 2]
  ------------------
  668|      8|			log_dbg(cd, "Backup segment is missing.");
  ------------------
  |  |  186|      8|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      8|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  669|      8|			return 1;
  670|      8|		}
  671|       |
  672|      2|		for (i = 0; i < first_backup; i++) {
  ------------------
  |  Branch (672:15): [True: 2, False: 0]
  ------------------
  673|      2|			jobj = json_segments_get_segment(jobj_segments, i);
  674|      2|			if (!jobj)
  ------------------
  |  Branch (674:8): [True: 0, False: 2]
  ------------------
  675|      0|				return 1;
  676|       |
  677|      2|			if (json_segment_contains_flag(jobj, "in-reencryption", 0)) {
  ------------------
  |  Branch (677:8): [True: 0, False: 2]
  ------------------
  678|      0|				if (!json_segment_cmp(jobj, jobj_backup_final)) {
  ------------------
  |  Branch (678:9): [True: 0, False: 0]
  ------------------
  679|      0|					log_dbg(cd, "Segment in reencryption does not match backup final segment.");
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  680|      0|					return 1;
  681|      0|				}
  682|      0|				continue;
  683|      0|			}
  684|       |
  685|      2|			if (!json_segment_cmp(jobj, jobj_backup_final) &&
  ------------------
  |  Branch (685:8): [True: 2, False: 0]
  ------------------
  686|      2|			    !json_segment_cmp(jobj, jobj_backup_previous)) {
  ------------------
  |  Branch (686:8): [True: 2, False: 0]
  ------------------
  687|      2|				log_dbg(cd, "Segment does not match neither backup final or backup previous segment.");
  ------------------
  |  |  186|      2|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      2|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  688|      2|				return 1;
  689|      2|			}
  690|      2|		}
  691|      2|	}
  692|       |
  693|  6.14k|	return 0;
  694|  6.15k|}
luks2_json_metadata.c:hdr_validate_keyslots:
  494|  6.14k|{
  495|  6.14k|	json_object *jobj;
  496|       |
  497|  6.14k|	if (!(jobj = json_contains(cd, hdr_jobj, "", "JSON area", "keyslots", json_type_object)))
  ------------------
  |  Branch (497:6): [True: 0, False: 6.14k]
  ------------------
  498|      0|		return 1;
  499|       |
  500|  6.14k|	json_object_object_foreach(jobj, key, val) {
  ------------------
  |  |  494|  6.14k|	char *key = NULL;                                                        \
  |  |  495|  6.14k|	struct json_object *val __attribute__((__unused__)) = NULL;              \
  |  |  496|  6.14k|	for (struct lh_entry *entry##key = lh_table_head(json_object_get_object(obj)),    \
  |  |  497|  6.14k|	                     *entry_next##key = NULL;                            \
  |  |  498|  6.23k|	     ({                                                                  \
  |  |  ------------------
  |  |  |  Branch (498:7): [True: 128, False: 6.10k]
  |  |  ------------------
  |  |  499|  6.23k|		     if (entry##key)                                             \
  |  |  ------------------
  |  |  |  Branch (499:12): [True: 128, False: 6.10k]
  |  |  ------------------
  |  |  500|  6.23k|		     {                                                           \
  |  |  501|    128|			     key = (char *)lh_entry_k(entry##key);               \
  |  |  502|    128|			     val = (struct json_object *)lh_entry_v(entry##key); \
  |  |  503|    128|			     entry_next##key = lh_entry_next(entry##key);        \
  |  |  504|    128|		     };                                                          \
  |  |  505|  6.23k|		     entry##key;                                                 \
  |  |  506|  6.23k|	     });                                                                 \
  |  |  507|  6.14k|	     entry##key = entry_next##key)
  ------------------
  501|    128|		if (!numbered(cd, "Keyslot", key))
  ------------------
  |  Branch (501:7): [True: 6, False: 122]
  ------------------
  502|      6|			return 1;
  503|    122|		if (LUKS2_keyslot_validate(cd, val, key))
  ------------------
  |  Branch (503:7): [True: 38, False: 84]
  ------------------
  504|     38|			return 1;
  505|    122|	}
  506|       |
  507|  6.10k|	return 0;
  508|  6.14k|}
luks2_json_metadata.c:LUKS2_keyslot_validate:
  419|    122|{
  420|    122|	json_object *jobj_key_size;
  421|       |
  422|    122|	if (!json_contains_string(cd, hdr_keyslot, key, "Keyslot", "type"))
  ------------------
  |  Branch (422:6): [True: 2, False: 120]
  ------------------
  423|      2|		return 1;
  424|    120|	if (!(jobj_key_size = json_contains(cd, hdr_keyslot, key, "Keyslot", "key_size", json_type_int)))
  ------------------
  |  Branch (424:6): [True: 6, False: 114]
  ------------------
  425|      6|		return 1;
  426|       |
  427|       |	/* enforce uint32_t type */
  428|    114|	if (!validate_json_uint32(jobj_key_size)) {
  ------------------
  |  Branch (428:6): [True: 30, False: 84]
  ------------------
  429|     30|		log_dbg(cd, "Illegal field \"key_size\":%s.",
  ------------------
  |  |  186|     30|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|     30|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  430|     30|			json_object_get_string(jobj_key_size));
  431|     30|		return 1;
  432|     30|	}
  433|       |
  434|     84|	return 0;
  435|    114|}
luks2_json_metadata.c:hdr_validate_config:
  977|  6.10k|{
  978|  6.10k|	json_object *jobj_config, *jobj;
  979|  6.10k|	int i;
  980|  6.10k|	uint64_t keyslots_size, metadata_size, segment_offset;
  981|       |
  982|  6.10k|	if (!(jobj_config = json_contains(cd, hdr_jobj, "", "JSON area", "config", json_type_object)))
  ------------------
  |  Branch (982:6): [True: 0, False: 6.10k]
  ------------------
  983|      0|		return 1;
  984|       |
  985|  6.10k|	if (!(jobj = json_contains_string(cd, jobj_config, "section", "Config", "json_size")))
  ------------------
  |  Branch (985:6): [True: 8, False: 6.09k]
  ------------------
  986|      8|		return 1;
  987|  6.09k|	if (!json_str_to_uint64(jobj, &metadata_size)) {
  ------------------
  |  Branch (987:6): [True: 6, False: 6.09k]
  ------------------
  988|      6|		log_dbg(cd, "Illegal config json_size value.");
  ------------------
  |  |  186|      6|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      6|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  989|      6|		return 1;
  990|      6|	}
  991|       |
  992|       |	/* single metadata instance is assembled from json area size plus
  993|       |	 * binary header size */
  994|  6.09k|	metadata_size += LUKS2_HDR_BIN_LEN;
  ------------------
  |  |  143|  6.09k|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
  995|       |
  996|  6.09k|	if (!(jobj = json_contains_string(cd, jobj_config, "section", "Config", "keyslots_size")))
  ------------------
  |  Branch (996:6): [True: 2, False: 6.08k]
  ------------------
  997|      2|		return 1;
  998|  6.08k|	if(!json_str_to_uint64(jobj, &keyslots_size)) {
  ------------------
  |  Branch (998:5): [True: 10, False: 6.07k]
  ------------------
  999|     10|		log_dbg(cd, "Illegal config keyslot_size value.");
  ------------------
  |  |  186|     10|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|     10|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
 1000|     10|		return 1;
 1001|     10|	}
 1002|       |
 1003|  6.07k|	if (LUKS2_check_metadata_area_size(metadata_size)) {
  ------------------
  |  Branch (1003:6): [True: 26, False: 6.05k]
  ------------------
 1004|     26|		log_dbg(cd, "Unsupported LUKS2 header size (%" PRIu64 ").", metadata_size);
  ------------------
  |  |  186|     26|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|     26|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
 1005|     26|		return 1;
 1006|     26|	}
 1007|       |
 1008|  6.05k|	if (LUKS2_check_keyslots_area_size(keyslots_size)) {
  ------------------
  |  Branch (1008:6): [True: 4, False: 6.04k]
  ------------------
 1009|      4|		log_dbg(cd, "Unsupported LUKS2 keyslots size (%" PRIu64 ").", keyslots_size);
  ------------------
  |  |  186|      4|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      4|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
 1010|      4|		return 1;
 1011|      4|	}
 1012|       |
 1013|       |	/*
 1014|       |	 * validate keyslots_size fits in between (2 * metadata_size) and first
 1015|       |	 * segment_offset (except detached header)
 1016|       |	 */
 1017|  6.04k|	segment_offset = json_segments_get_minimal_offset(json_get_segments_jobj(hdr_jobj), 0);
 1018|  6.04k|	if (segment_offset &&
  ------------------
  |  Branch (1018:6): [True: 3.49k, False: 2.55k]
  ------------------
 1019|  3.49k|	    (segment_offset < keyslots_size ||
  ------------------
  |  Branch (1019:7): [True: 10, False: 3.48k]
  ------------------
 1020|  3.48k|	     (segment_offset - keyslots_size) < (2 * metadata_size))) {
  ------------------
  |  Branch (1020:7): [True: 2, False: 3.47k]
  ------------------
 1021|     12|		log_dbg(cd, "keyslots_size is too large %" PRIu64 " (bytes). Data offset: %" PRIu64
  ------------------
  |  |  186|     12|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|     12|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
 1022|     12|			", keyslots offset: %" PRIu64, keyslots_size, segment_offset, 2 * metadata_size);
 1023|     12|		return 1;
 1024|     12|	}
 1025|       |
 1026|       |	/* Flags array is optional */
 1027|  6.03k|	if (json_object_object_get_ex(jobj_config, "flags", &jobj)) {
  ------------------
  |  Branch (1027:6): [True: 563, False: 5.47k]
  ------------------
 1028|    563|		if (!json_contains(cd, jobj_config, "section", "Config", "flags", json_type_array))
  ------------------
  |  Branch (1028:7): [True: 0, False: 563]
  ------------------
 1029|      0|			return 1;
 1030|       |
 1031|       |		/* All array members must be strings */
 1032|  3.81k|		for (i = 0; i < (int) json_object_array_length(jobj); i++)
  ------------------
  |  Branch (1032:15): [True: 3.25k, False: 561]
  ------------------
 1033|  3.25k|			if (!json_object_is_type(json_object_array_get_idx(jobj, i), json_type_string))
  ------------------
  |  Branch (1033:8): [True: 2, False: 3.25k]
  ------------------
 1034|      2|				return 1;
 1035|    563|	}
 1036|       |
 1037|  6.03k|	return 0;
 1038|  6.03k|}
luks2_json_metadata.c:hdr_validate_areas:
  874|  6.03k|{
  875|  6.03k|	struct interval *intervals;
  876|  6.03k|	json_object *jobj_keyslots, *jobj_offset, *jobj_length, *jobj_segments, *jobj_area;
  877|  6.03k|	int length, ret, i = 0;
  878|  6.03k|	uint64_t metadata_size;
  879|       |
  880|  6.03k|	if (!json_object_object_get_ex(hdr_jobj, "keyslots", &jobj_keyslots))
  ------------------
  |  Branch (880:6): [True: 0, False: 6.03k]
  ------------------
  881|      0|		return 1;
  882|       |
  883|       |	/* segments are already validated */
  884|  6.03k|	if (!json_object_object_get_ex(hdr_jobj, "segments", &jobj_segments))
  ------------------
  |  Branch (884:6): [True: 0, False: 6.03k]
  ------------------
  885|      0|		return 1;
  886|       |
  887|       |	/* config is already validated */
  888|  6.03k|	metadata_size = LUKS2_metadata_size_jobj(hdr_jobj);
  889|       |
  890|  6.03k|	length = json_object_object_length(jobj_keyslots);
  891|       |
  892|       |	/* Empty section */
  893|  6.03k|	if (length == 0)
  ------------------
  |  Branch (893:6): [True: 5.99k, False: 36]
  ------------------
  894|  5.99k|		return 0;
  895|       |
  896|     36|	if (length < 0) {
  ------------------
  |  Branch (896:6): [True: 0, False: 36]
  ------------------
  897|      0|		log_dbg(cd, "Invalid keyslot areas specification.");
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  898|      0|		return 1;
  899|      0|	}
  900|       |
  901|     36|	intervals = malloc(length * sizeof(*intervals));
  902|     36|	if (!intervals) {
  ------------------
  |  Branch (902:6): [True: 0, False: 36]
  ------------------
  903|      0|		log_dbg(cd, "Not enough memory.");
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  904|      0|		return -ENOMEM;
  905|      0|	}
  906|       |
  907|     36|	json_object_object_foreach(jobj_keyslots, key, val) {
  ------------------
  |  |  494|     36|	char *key = NULL;                                                        \
  |  |  495|     36|	struct json_object *val __attribute__((__unused__)) = NULL;              \
  |  |  496|     36|	for (struct lh_entry *entry##key = lh_table_head(json_object_get_object(obj)),    \
  |  |  497|     36|	                     *entry_next##key = NULL;                            \
  |  |  498|     52|	     ({                                                                  \
  |  |  ------------------
  |  |  |  Branch (498:7): [True: 36, False: 16]
  |  |  ------------------
  |  |  499|     52|		     if (entry##key)                                             \
  |  |  ------------------
  |  |  |  Branch (499:12): [True: 36, False: 16]
  |  |  ------------------
  |  |  500|     52|		     {                                                           \
  |  |  501|     36|			     key = (char *)lh_entry_k(entry##key);               \
  |  |  502|     36|			     val = (struct json_object *)lh_entry_v(entry##key); \
  |  |  503|     36|			     entry_next##key = lh_entry_next(entry##key);        \
  |  |  504|     36|		     };                                                          \
  |  |  505|     52|		     entry##key;                                                 \
  |  |  506|     52|	     });                                                                 \
  |  |  507|     36|	     entry##key = entry_next##key)
  ------------------
  908|       |
  909|     36|		if (!(jobj_area = json_contains(cd, val, key, "Keyslot", "area", json_type_object)) ||
  ------------------
  |  Branch (909:7): [True: 2, False: 34]
  ------------------
  910|     34|		    !json_contains_string(cd, jobj_area, key, "Keyslot area", "type") ||
  ------------------
  |  Branch (910:7): [True: 2, False: 32]
  ------------------
  911|     32|		    !(jobj_offset = json_contains_string(cd, jobj_area, key, "Keyslot", "offset")) ||
  ------------------
  |  Branch (911:7): [True: 2, False: 30]
  ------------------
  912|     30|		    !(jobj_length = json_contains_string(cd, jobj_area, key, "Keyslot", "size")) ||
  ------------------
  |  Branch (912:7): [True: 2, False: 28]
  ------------------
  913|     28|		    !numbered(cd, "offset", json_object_get_string(jobj_offset)) ||
  ------------------
  |  Branch (913:7): [True: 4, False: 24]
  ------------------
  914|     24|		    !numbered(cd, "size", json_object_get_string(jobj_length))) {
  ------------------
  |  Branch (914:7): [True: 4, False: 20]
  ------------------
  915|     16|			free(intervals);
  916|     16|			return 1;
  917|     16|		}
  918|       |
  919|       |		/* rule out values > UINT64_MAX */
  920|     20|		if (!json_str_to_uint64(jobj_offset, &intervals[i].offset) ||
  ------------------
  |  Branch (920:7): [True: 0, False: 20]
  ------------------
  921|     20|		    !json_str_to_uint64(jobj_length, &intervals[i].length)) {
  ------------------
  |  Branch (921:7): [True: 4, False: 16]
  ------------------
  922|      4|			log_dbg(cd, "Illegal keyslot area values.");
  ------------------
  |  |  186|      4|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      4|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  923|      4|			free(intervals);
  924|      4|			return 1;
  925|      4|		}
  926|       |
  927|     16|		i++;
  928|     16|	}
  929|       |
  930|     16|	if (length != i) {
  ------------------
  |  Branch (930:6): [True: 0, False: 16]
  ------------------
  931|      0|		free(intervals);
  932|      0|		return 1;
  933|      0|	}
  934|       |
  935|     16|	ret = validate_intervals(cd, length, intervals, metadata_size, LUKS2_hdr_and_areas_size_jobj(hdr_jobj)) ? 0 : 1;
  ------------------
  |  Branch (935:8): [True: 16, False: 0]
  ------------------
  936|       |
  937|     16|	free(intervals);
  938|       |
  939|     16|	return ret;
  940|     16|}
luks2_json_metadata.c:validate_intervals:
  369|     16|{
  370|     16|	int j, i = 0;
  371|       |
  372|     32|	while (i < length) {
  ------------------
  |  Branch (372:9): [True: 16, False: 16]
  ------------------
  373|       |		/* Offset cannot be inside primary or secondary JSON area */
  374|     16|		if (ix[i].offset < 2 * metadata_size) {
  ------------------
  |  Branch (374:7): [True: 0, False: 16]
  ------------------
  375|      0|			log_dbg(cd, "Illegal area offset: %" PRIu64 ".", ix[i].offset);
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  376|      0|			return false;
  377|      0|		}
  378|       |
  379|     16|		if (!ix[i].length) {
  ------------------
  |  Branch (379:7): [True: 0, False: 16]
  ------------------
  380|      0|			log_dbg(cd, "Area length must be greater than zero.");
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  381|      0|			return false;
  382|      0|		}
  383|       |
  384|     16|		if (ix[i].offset > (UINT64_MAX - ix[i].length)) {
  ------------------
  |  Branch (384:7): [True: 0, False: 16]
  ------------------
  385|      0|			log_dbg(cd, "Interval offset+length overflow.");
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  386|      0|			return false;
  387|      0|		}
  388|       |
  389|     16|		if ((ix[i].offset + ix[i].length) > keyslots_area_end) {
  ------------------
  |  Branch (389:7): [True: 0, False: 16]
  ------------------
  390|      0|			log_dbg(cd, "Area [%" PRIu64 ", %" PRIu64 "] overflows binary keyslots area (ends at offset: %" PRIu64 ").",
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  391|      0|				ix[i].offset, ix[i].offset + ix[i].length, keyslots_area_end);
  392|      0|			return false;
  393|      0|		}
  394|       |
  395|     32|		for (j = 0; j < length; j++) {
  ------------------
  |  Branch (395:15): [True: 16, False: 16]
  ------------------
  396|     16|			if (i == j)
  ------------------
  |  Branch (396:8): [True: 16, False: 0]
  ------------------
  397|     16|				continue;
  398|       |
  399|      0|			if (ix[j].offset > (UINT64_MAX - ix[j].length)) {
  ------------------
  |  Branch (399:8): [True: 0, False: 0]
  ------------------
  400|      0|				log_dbg(cd, "Interval offset+length overflow.");
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  401|      0|				return false;
  402|      0|			}
  403|       |
  404|      0|			if ((ix[i].offset >= ix[j].offset) && (ix[i].offset < (ix[j].offset + ix[j].length))) {
  ------------------
  |  Branch (404:8): [True: 0, False: 0]
  |  Branch (404:42): [True: 0, False: 0]
  ------------------
  405|      0|				log_dbg(cd, "Overlapping areas [%" PRIu64 ",%" PRIu64 "] and [%" PRIu64 ",%" PRIu64 "].",
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  406|      0|					ix[i].offset, ix[i].offset + ix[i].length,
  407|      0|					ix[j].offset, ix[j].offset + ix[j].length);
  408|      0|				return false;
  409|      0|			}
  410|      0|		}
  411|       |
  412|     16|		i++;
  413|     16|	}
  414|       |
  415|     16|	return true;
  416|     16|}
luks2_json_metadata.c:hdr_update_copy_for_rollback:
 1148|  2.09k|{
 1149|  2.09k|	json_object **jobj_copy;
 1150|       |
 1151|  2.09k|	assert(hdr);
  ------------------
  |  Branch (1151:2): [True: 0, False: 2.09k]
  |  Branch (1151:2): [True: 2.09k, False: 0]
  ------------------
 1152|  2.09k|	assert(hdr->jobj);
  ------------------
  |  Branch (1152:2): [True: 0, False: 2.09k]
  |  Branch (1152:2): [True: 2.09k, False: 0]
  ------------------
 1153|       |
 1154|  2.09k|	jobj_copy = (json_object **)&hdr->jobj_rollback;
 1155|       |
 1156|  2.09k|	if (!hdr_json_free(jobj_copy)) {
  ------------------
  |  Branch (1156:6): [True: 0, False: 2.09k]
  ------------------
 1157|      0|		log_dbg(cd, "LUKS2 rollback metadata copy still in use");
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
 1158|      0|		return -EINVAL;
 1159|      0|	}
 1160|       |
 1161|  2.09k|	return json_object_copy(hdr->jobj, jobj_copy) ? -ENOMEM : 0;
  ------------------
  |  Branch (1161:9): [True: 0, False: 2.09k]
  ------------------
 1162|  2.09k|}
luks2_json_metadata.c:hdr_json_free:
 1138|  6.27k|{
 1139|  6.27k|	assert(jobj);
  ------------------
  |  Branch (1139:2): [True: 0, False: 6.27k]
  |  Branch (1139:2): [True: 6.27k, False: 0]
  ------------------
 1140|       |
 1141|  6.27k|	if (json_object_put(*jobj))
  ------------------
  |  Branch (1141:6): [True: 4.18k, False: 2.09k]
  ------------------
 1142|  4.18k|		*jobj = NULL;
 1143|       |
 1144|       |	return (*jobj == NULL);
 1145|  6.27k|}
luks2_json_metadata.c:LUKS2_keyslots_size_jobj:
 1310|  6.01k|{
 1311|  6.01k|	json_object *jobj1, *jobj2;
 1312|  6.01k|	uint64_t keyslots_size;
 1313|       |
 1314|  6.01k|	json_object_object_get_ex(jobj, "config", &jobj1);
 1315|  6.01k|	json_object_object_get_ex(jobj1, "keyslots_size", &jobj2);
 1316|  6.01k|	json_str_to_uint64(jobj2, &keyslots_size);
 1317|       |
 1318|  6.01k|	return keyslots_size;
 1319|  6.01k|}
luks2_json_metadata.c:reqs_unknown:
  617|    278|{
  618|       |	return reqs & CRYPT_REQUIREMENT_UNKNOWN;
  ------------------
  |  | 1632|    278|#define CRYPT_REQUIREMENT_UNKNOWN		(UINT32_C(1) << 31)
  ------------------
  619|    278|}
luks2_json_metadata.c:mandatory_requirements_jobj:
 1667|  12.1k|{
 1668|  12.1k|	json_object *jobj_config, *jobj_requirements, *jobj_mandatory;
 1669|       |
 1670|  12.1k|	assert(hdr);
  ------------------
  |  Branch (1670:2): [True: 0, False: 12.1k]
  |  Branch (1670:2): [True: 12.1k, False: 0]
  ------------------
 1671|       |
 1672|  12.1k|	if (!json_object_object_get_ex(hdr->jobj, "config", &jobj_config))
  ------------------
  |  Branch (1672:6): [True: 0, False: 12.1k]
  ------------------
 1673|      0|		return NULL;
 1674|       |
 1675|  12.1k|	if (!json_object_object_get_ex(jobj_config, "requirements", &jobj_requirements))
  ------------------
  |  Branch (1675:6): [True: 12.0k, False: 154]
  ------------------
 1676|  12.0k|		return NULL;
 1677|       |
 1678|    154|	if (!json_object_object_get_ex(jobj_requirements, "mandatory", &jobj_mandatory))
  ------------------
  |  Branch (1678:6): [True: 38, False: 116]
  ------------------
 1679|     38|		return NULL;
 1680|       |
 1681|    116|	return jobj_mandatory;
 1682|    154|}
luks2_json_metadata.c:reencrypt_candidate_flag:
 1041|  2.70k|{
 1042|  2.70k|	const char *ptr;
 1043|       |
 1044|  2.70k|	assert(flag);
  ------------------
  |  Branch (1044:2): [True: 0, False: 2.70k]
  |  Branch (1044:2): [True: 2.70k, False: 0]
  ------------------
 1045|       |
 1046|  2.70k|	if (!strcmp(flag, "online-reencrypt"))
  ------------------
  |  Branch (1046:6): [True: 10, False: 2.69k]
  ------------------
 1047|     10|		return true;
 1048|       |
 1049|  2.69k|	if (strncmp(flag, "online-reencrypt-v", 18))
  ------------------
  |  Branch (1049:6): [True: 2.03k, False: 662]
  ------------------
 1050|  2.03k|		return false;
 1051|       |
 1052|    662|	ptr = flag + 18;
 1053|    662|	if (!*ptr)
  ------------------
  |  Branch (1053:6): [True: 10, False: 652]
  ------------------
 1054|     10|		return false;
 1055|       |
 1056|  1.33k|	while (*ptr) {
  ------------------
  |  Branch (1056:9): [True: 730, False: 602]
  ------------------
 1057|    730|		if (!isdigit(*ptr))
  ------------------
  |  Branch (1057:7): [True: 50, False: 680]
  ------------------
 1058|     50|			return false;
 1059|    680|		ptr++;
 1060|    680|	}
 1061|       |
 1062|    602|	return true;
 1063|    652|}
luks2_json_metadata.c:get_requirement_by_name:
 1656|    278|{
 1657|    278|	int i;
 1658|       |
 1659|  1.60k|	for (i = 0; requirements_flags[i].description; i++)
  ------------------
  |  Branch (1659:14): [True: 1.41k, False: 186]
  ------------------
 1660|  1.41k|		if (!strcmp(requirement, requirements_flags[i].description))
  ------------------
  |  Branch (1660:7): [True: 92, False: 1.32k]
  ------------------
 1661|     92|			return requirements_flags + i;
 1662|       |
 1663|    186|	return &unknown_requirement_flag;
 1664|    278|}
luks2_json_metadata.c:reqs_reencrypt_online:
  627|  6.15k|{
  628|       |	return reqs & CRYPT_REQUIREMENT_ONLINE_REENCRYPT;
  ------------------
  |  | 1626|  6.15k|#define CRYPT_REQUIREMENT_ONLINE_REENCRYPT	(UINT32_C(1) << 1)
  ------------------
  629|  6.15k|}

LUKS2_keyslots_validate:
  854|  5.99k|{
  855|  5.99k|	const keyslot_handler *h;
  856|  5.99k|	int keyslot;
  857|  5.99k|	json_object *jobj_keyslots, *jobj_type;
  858|  5.99k|	uint32_t reqs, reencrypt_count = 0;
  859|  5.99k|	struct luks2_hdr dummy = {
  860|  5.99k|		.jobj = hdr_jobj
  861|  5.99k|	};
  862|       |
  863|  5.99k|	if (!json_object_object_get_ex(hdr_jobj, "keyslots", &jobj_keyslots))
  ------------------
  |  Branch (863:6): [True: 0, False: 5.99k]
  ------------------
  864|      0|		return -EINVAL;
  865|       |
  866|  5.99k|	LUKS2_config_get_requirements(cd, &dummy, &reqs);
  867|       |
  868|  5.99k|	json_object_object_foreach(jobj_keyslots, slot, val) {
  ------------------
  |  |  494|  5.99k|	char *key = NULL;                                                        \
  |  |  495|  5.99k|	struct json_object *val __attribute__((__unused__)) = NULL;              \
  |  |  496|  5.99k|	for (struct lh_entry *entry##key = lh_table_head(json_object_get_object(obj)),    \
  |  |  497|  5.99k|	                     *entry_next##key = NULL;                            \
  |  |  498|  6.00k|	     ({                                                                  \
  |  |  ------------------
  |  |  |  Branch (498:7): [True: 10, False: 5.99k]
  |  |  ------------------
  |  |  499|  6.00k|		     if (entry##key)                                             \
  |  |  ------------------
  |  |  |  Branch (499:12): [True: 10, False: 5.99k]
  |  |  ------------------
  |  |  500|  6.00k|		     {                                                           \
  |  |  501|     10|			     key = (char *)lh_entry_k(entry##key);               \
  |  |  502|     10|			     val = (struct json_object *)lh_entry_v(entry##key); \
  |  |  503|     10|			     entry_next##key = lh_entry_next(entry##key);        \
  |  |  504|     10|		     };                                                          \
  |  |  505|  6.00k|		     entry##key;                                                 \
  |  |  506|  6.00k|	     });                                                                 \
  |  |  507|  5.99k|	     entry##key = entry_next##key)
  ------------------
  869|     10|		keyslot = atoi(slot);
  870|     10|		json_object_object_get_ex(val, "type", &jobj_type);
  871|     10|		h = LUKS2_keyslot_handler_type(json_object_get_string(jobj_type));
  872|     10|		if (!h)
  ------------------
  |  Branch (872:7): [True: 10, False: 0]
  ------------------
  873|     10|			continue;
  874|      0|		if (h->validate && h->validate(cd, val)) {
  ------------------
  |  Branch (874:7): [True: 0, False: 0]
  |  Branch (874:22): [True: 0, False: 0]
  ------------------
  875|      0|			log_dbg(cd, "Keyslot type %s validation failed on keyslot %d.", h->name, keyslot);
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  876|      0|			return -EINVAL;
  877|      0|		}
  878|       |
  879|      0|		if (!strcmp(h->name, "luks2") && LUKS2_get_keyslot_digests_count(hdr_jobj, keyslot) != 1) {
  ------------------
  |  Branch (879:7): [True: 0, False: 0]
  |  Branch (879:36): [True: 0, False: 0]
  ------------------
  880|      0|			log_dbg(cd, "Keyslot %d is not assigned to exactly 1 digest.", keyslot);
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  881|      0|			return -EINVAL;
  882|      0|		}
  883|       |
  884|      0|		if (!strcmp(h->name, "reencrypt"))
  ------------------
  |  Branch (884:7): [True: 0, False: 0]
  ------------------
  885|      0|			reencrypt_count++;
  886|      0|	}
  887|       |
  888|  5.99k|	if ((reqs & CRYPT_REQUIREMENT_ONLINE_REENCRYPT) && reencrypt_count == 0) {
  ------------------
  |  | 1626|  5.99k|#define CRYPT_REQUIREMENT_ONLINE_REENCRYPT	(UINT32_C(1) << 1)
  ------------------
  |  Branch (888:6): [True: 0, False: 5.99k]
  |  Branch (888:53): [True: 0, False: 0]
  ------------------
  889|      0|		log_dbg(cd, "Missing reencryption keyslot.");
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  890|      0|		return -EINVAL;
  891|      0|	}
  892|       |
  893|  5.99k|	if (reencrypt_count && !LUKS2_reencrypt_requirement_candidate(&dummy)) {
  ------------------
  |  Branch (893:6): [True: 0, False: 5.99k]
  |  Branch (893:25): [True: 0, False: 0]
  ------------------
  894|      0|		log_dbg(cd, "Missing reencryption requirement flag.");
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  895|      0|		return -EINVAL;
  896|      0|	}
  897|       |
  898|  5.99k|	if (reencrypt_count > 1) {
  ------------------
  |  Branch (898:6): [True: 0, False: 5.99k]
  ------------------
  899|      0|		log_dbg(cd, "Too many reencryption keyslots.");
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  900|      0|		return -EINVAL;
  901|      0|	}
  902|       |
  903|  5.99k|	return 0;
  904|  5.99k|}
LUKS2_keyslots_repair:
  907|    262|{
  908|    262|	const keyslot_handler *h;
  909|    262|	json_object *jobj_type;
  910|       |
  911|    504|	json_object_object_foreach(jobj_keyslots, slot, val) {
  ------------------
  |  |  494|    262|	char *key = NULL;                                                        \
  |  |  495|    262|	struct json_object *val __attribute__((__unused__)) = NULL;              \
  |  |  496|    262|	for (struct lh_entry *entry##key = lh_table_head(json_object_get_object(obj)),    \
  |  |  497|    262|	                     *entry_next##key = NULL;                            \
  |  |  498|    766|	     ({                                                                  \
  |  |  ------------------
  |  |  |  Branch (498:7): [True: 504, False: 262]
  |  |  ------------------
  |  |  499|    766|		     if (entry##key)                                             \
  |  |  ------------------
  |  |  |  Branch (499:12): [True: 504, False: 262]
  |  |  ------------------
  |  |  500|    766|		     {                                                           \
  |  |  501|    504|			     key = (char *)lh_entry_k(entry##key);               \
  |  |  502|    504|			     val = (struct json_object *)lh_entry_v(entry##key); \
  |  |  503|    504|			     entry_next##key = lh_entry_next(entry##key);        \
  |  |  504|    504|		     };                                                          \
  |  |  505|    766|		     entry##key;                                                 \
  |  |  506|    766|	     });                                                                 \
  |  |  507|    504|	     entry##key = entry_next##key)
  ------------------
  912|    504|		UNUSED(slot);
  ------------------
  |  |   18|    504|#define UNUSED(x) (void)(x)
  ------------------
  913|    504|		if (!json_object_is_type(val, json_type_object) ||
  ------------------
  |  Branch (913:7): [True: 32, False: 472]
  ------------------
  914|    472|		    !json_object_object_get_ex(val, "type", &jobj_type) ||
  ------------------
  |  Branch (914:7): [True: 85, False: 387]
  ------------------
  915|    387|		    !json_object_is_type(jobj_type, json_type_string))
  ------------------
  |  Branch (915:7): [True: 12, False: 375]
  ------------------
  916|    129|			continue;
  917|       |
  918|    375|		h = LUKS2_keyslot_handler_type(json_object_get_string(jobj_type));
  919|    375|		if (h && h->repair)
  ------------------
  |  Branch (919:7): [True: 270, False: 105]
  |  Branch (919:12): [True: 221, False: 49]
  ------------------
  920|    221|			h->repair(val);
  921|    375|	}
  922|    262|}
luks2_keyslot.c:LUKS2_keyslot_handler_type:
   26|    385|{
   27|    385|	int i;
   28|       |
   29|    664|	for (i = 0; i < LUKS2_KEYSLOTS_MAX && keyslot_handlers[i]; i++) {
  ------------------
  |  |   28|    664|#define LUKS2_KEYSLOTS_MAX LUKS2_OBJECTS_MAX
  |  |  ------------------
  |  |  |  |   27|  1.32k|#define LUKS2_OBJECTS_MAX  32
  |  |  ------------------
  ------------------
  |  Branch (29:14): [True: 664, False: 0]
  |  Branch (29:40): [True: 549, False: 115]
  ------------------
   30|    549|		if (!strcmp(keyslot_handlers[i]->name, type))
  ------------------
  |  Branch (30:7): [True: 270, False: 279]
  ------------------
   31|    270|			return keyslot_handlers[i];
   32|    549|	}
   33|       |
   34|    115|	return NULL;
   35|    385|}

luks2_keyslot_luks2.c:luks2_keyslot_repair:
  762|    221|{
  763|    221|	const char *type;
  764|    221|	json_object *jobj_kdf, *jobj_type;
  765|       |
  766|    221|	if (!json_object_object_get_ex(jobj_keyslot, "kdf", &jobj_kdf) ||
  ------------------
  |  Branch (766:6): [True: 54, False: 167]
  ------------------
  767|    167|	    !json_object_is_type(jobj_kdf, json_type_object))
  ------------------
  |  Branch (767:6): [True: 0, False: 167]
  ------------------
  768|     54|		return;
  769|       |
  770|    167|	if (!json_object_object_get_ex(jobj_kdf, "type", &jobj_type) ||
  ------------------
  |  Branch (770:6): [True: 19, False: 148]
  ------------------
  771|    148|	    !json_object_is_type(jobj_type, json_type_string))
  ------------------
  |  Branch (771:6): [True: 9, False: 139]
  ------------------
  772|     28|		return;
  773|       |
  774|    139|	type = json_object_get_string(jobj_type);
  775|       |
  776|    139|	if (!strcmp(type, CRYPT_KDF_PBKDF2)) {
  ------------------
  |  |  266|    139|#define CRYPT_KDF_PBKDF2   "pbkdf2"
  ------------------
  |  Branch (776:6): [True: 54, False: 85]
  ------------------
  777|       |		/* type, salt, hash, iterations only */
  778|    412|		json_object_object_foreach(jobj_kdf, key, val) {
  ------------------
  |  |  494|     54|	char *key = NULL;                                                        \
  |  |  495|     54|	struct json_object *val __attribute__((__unused__)) = NULL;              \
  |  |  496|     54|	for (struct lh_entry *entry##key = lh_table_head(json_object_get_object(obj)),    \
  |  |  497|     54|	                     *entry_next##key = NULL;                            \
  |  |  498|    466|	     ({                                                                  \
  |  |  ------------------
  |  |  |  Branch (498:7): [True: 412, False: 54]
  |  |  ------------------
  |  |  499|    466|		     if (entry##key)                                             \
  |  |  ------------------
  |  |  |  Branch (499:12): [True: 412, False: 54]
  |  |  ------------------
  |  |  500|    466|		     {                                                           \
  |  |  501|    412|			     key = (char *)lh_entry_k(entry##key);               \
  |  |  502|    412|			     val = (struct json_object *)lh_entry_v(entry##key); \
  |  |  503|    412|			     entry_next##key = lh_entry_next(entry##key);        \
  |  |  504|    412|		     };                                                          \
  |  |  505|    466|		     entry##key;                                                 \
  |  |  506|    466|	     });                                                                 \
  |  |  507|    412|	     entry##key = entry_next##key)
  ------------------
  779|    412|			UNUSED(val);
  ------------------
  |  |   18|    412|#define UNUSED(x) (void)(x)
  ------------------
  780|    412|			if (!strcmp(key, "type") || !strcmp(key, "salt") ||
  ------------------
  |  Branch (780:8): [True: 54, False: 358]
  |  Branch (780:32): [True: 47, False: 311]
  ------------------
  781|    311|			    !strcmp(key, "hash") || !strcmp(key, "iterations"))
  ------------------
  |  Branch (781:8): [True: 22, False: 289]
  |  Branch (781:32): [True: 37, False: 252]
  ------------------
  782|    160|					continue;
  783|    252|			json_object_object_del(jobj_kdf, key);
  784|    252|		}
  785|     85|	} else if (!strcmp(type, CRYPT_KDF_ARGON2I) || !strcmp(type, CRYPT_KDF_ARGON2ID)) {
  ------------------
  |  |  268|     85|#define CRYPT_KDF_ARGON2I  "argon2i"
  ------------------
              	} else if (!strcmp(type, CRYPT_KDF_ARGON2I) || !strcmp(type, CRYPT_KDF_ARGON2ID)) {
  ------------------
  |  |  270|     42|#define CRYPT_KDF_ARGON2ID "argon2id"
  ------------------
  |  Branch (785:13): [True: 43, False: 42]
  |  Branch (785:49): [True: 19, False: 23]
  ------------------
  786|       |		/* type, salt, time, memory, cpus only */
  787|    393|		json_object_object_foreach(jobj_kdf, key, val) {
  ------------------
  |  |  494|     62|	char *key = NULL;                                                        \
  |  |  495|     62|	struct json_object *val __attribute__((__unused__)) = NULL;              \
  |  |  496|     62|	for (struct lh_entry *entry##key = lh_table_head(json_object_get_object(obj)),    \
  |  |  497|     62|	                     *entry_next##key = NULL;                            \
  |  |  498|    455|	     ({                                                                  \
  |  |  ------------------
  |  |  |  Branch (498:7): [True: 393, False: 62]
  |  |  ------------------
  |  |  499|    455|		     if (entry##key)                                             \
  |  |  ------------------
  |  |  |  Branch (499:12): [True: 393, False: 62]
  |  |  ------------------
  |  |  500|    455|		     {                                                           \
  |  |  501|    393|			     key = (char *)lh_entry_k(entry##key);               \
  |  |  502|    393|			     val = (struct json_object *)lh_entry_v(entry##key); \
  |  |  503|    393|			     entry_next##key = lh_entry_next(entry##key);        \
  |  |  504|    393|		     };                                                          \
  |  |  505|    455|		     entry##key;                                                 \
  |  |  506|    455|	     });                                                                 \
  |  |  507|    393|	     entry##key = entry_next##key)
  ------------------
  788|    393|			UNUSED(val);
  ------------------
  |  |   18|    393|#define UNUSED(x) (void)(x)
  ------------------
  789|    393|			if (!strcmp(key, "type") || !strcmp(key, "salt") ||
  ------------------
  |  Branch (789:8): [True: 62, False: 331]
  |  Branch (789:32): [True: 57, False: 274]
  ------------------
  790|    274|			    !strcmp(key, "time") || !strcmp(key, "memory") ||
  ------------------
  |  Branch (790:8): [True: 37, False: 237]
  |  Branch (790:32): [True: 51, False: 186]
  ------------------
  791|    186|			    !strcmp(key, "cpus"))
  ------------------
  |  Branch (791:8): [True: 42, False: 144]
  ------------------
  792|    249|					continue;
  793|    144|			json_object_object_del(jobj_kdf, key);
  794|    144|		}
  795|     62|	}
  796|    139|}

LUKS2_reencrypt_free:
  877|  2.09k|{
  878|  2.09k|	if (!rh)
  ------------------
  |  Branch (878:6): [True: 2.09k, False: 0]
  ------------------
  879|  2.09k|		return;
  880|       |
  881|      0|	LUKS2_reencrypt_protection_erase(&rh->rp);
  882|      0|	LUKS2_reencrypt_protection_erase(&rh->rp_moved_segment);
  883|       |
  884|      0|	json_object_put(rh->jobj_segs_hot);
  885|      0|	rh->jobj_segs_hot = NULL;
  886|      0|	json_object_put(rh->jobj_segs_post);
  887|      0|	rh->jobj_segs_post = NULL;
  888|      0|	json_object_put(rh->jobj_segment_old);
  889|      0|	rh->jobj_segment_old = NULL;
  890|      0|	json_object_put(rh->jobj_segment_new);
  891|      0|	rh->jobj_segment_new = NULL;
  892|      0|	json_object_put(rh->jobj_segment_moved);
  893|      0|	rh->jobj_segment_moved = NULL;
  894|       |
  895|      0|	free(rh->reenc_buffer);
  896|      0|	rh->reenc_buffer = NULL;
  897|      0|	crypt_storage_wrapper_destroy(rh->cw1);
  898|      0|	rh->cw1 = NULL;
  899|      0|	crypt_storage_wrapper_destroy(rh->cw2);
  900|      0|	rh->cw2 = NULL;
  901|      0|	device_free(cd, rh->hotzone_device);
  902|      0|	rh->hotzone_device = NULL;
  903|       |
  904|      0|	free(rh->device_name);
  905|      0|	free(rh->overlay_name);
  906|      0|	free(rh->hotzone_name);
  907|      0|	crypt_drop_uploaded_keyring_key(cd, rh->vks);
  908|      0|	crypt_free_volume_key(rh->vks);
  909|      0|	device_release_excl(cd, crypt_data_device(cd));
  910|      0|	crypt_unlock_internal(cd, rh->reenc_lock);
  911|      0|	free(rh);
  912|      0|}

json_segments_get_minimal_offset:
   13|  6.04k|{
   14|  6.04k|	uint64_t tmp, min = blockwise ? UINT64_MAX >> SECTOR_SHIFT : UINT64_MAX;
  ------------------
  |  |   38|      0|#define SECTOR_SHIFT       9
  ------------------
  |  Branch (14:22): [True: 0, False: 6.04k]
  ------------------
   15|       |
   16|  6.04k|	if (!jobj_segments)
  ------------------
  |  Branch (16:6): [True: 0, False: 6.04k]
  ------------------
   17|      0|		return 0;
   18|       |
   19|  6.16k|	json_object_object_foreach(jobj_segments, key, val) {
  ------------------
  |  |  494|  6.04k|	char *key = NULL;                                                        \
  |  |  495|  6.04k|	struct json_object *val __attribute__((__unused__)) = NULL;              \
  |  |  496|  6.04k|	for (struct lh_entry *entry##key = lh_table_head(json_object_get_object(obj)),    \
  |  |  497|  6.04k|	                     *entry_next##key = NULL;                            \
  |  |  498|  9.65k|	     ({                                                                  \
  |  |  ------------------
  |  |  |  Branch (498:7): [True: 6.16k, False: 3.49k]
  |  |  ------------------
  |  |  499|  9.65k|		     if (entry##key)                                             \
  |  |  ------------------
  |  |  |  Branch (499:12): [True: 6.16k, False: 3.49k]
  |  |  ------------------
  |  |  500|  9.65k|		     {                                                           \
  |  |  501|  6.16k|			     key = (char *)lh_entry_k(entry##key);               \
  |  |  502|  6.16k|			     val = (struct json_object *)lh_entry_v(entry##key); \
  |  |  503|  6.16k|			     entry_next##key = lh_entry_next(entry##key);        \
  |  |  504|  6.16k|		     };                                                          \
  |  |  505|  9.65k|		     entry##key;                                                 \
  |  |  506|  9.65k|	     });                                                                 \
  |  |  507|  6.04k|	     entry##key = entry_next##key)
  ------------------
   20|  6.16k|		UNUSED(key);
  ------------------
  |  |   18|  6.16k|#define UNUSED(x) (void)(x)
  ------------------
   21|       |
   22|  6.16k|		if (json_segment_is_backup(val))
  ------------------
  |  Branch (22:7): [True: 52, False: 6.10k]
  ------------------
   23|     52|			continue;
   24|       |
   25|  6.10k|		tmp = json_segment_get_offset(val, blockwise);
   26|       |
   27|  6.10k|		if (!tmp)
  ------------------
  |  Branch (27:7): [True: 2.55k, False: 3.54k]
  ------------------
   28|  2.55k|			return tmp;
   29|       |
   30|  3.54k|		if (tmp < min)
  ------------------
  |  Branch (30:7): [True: 3.50k, False: 48]
  ------------------
   31|  3.50k|			min = tmp;
   32|  3.54k|	}
   33|       |
   34|  3.49k|	return min;
   35|  6.04k|}
json_segment_get_offset:
   38|  12.3k|{
   39|  12.3k|	json_object *jobj;
   40|       |
   41|  12.3k|	if (!jobj_segment ||
  ------------------
  |  Branch (41:6): [True: 0, False: 12.3k]
  ------------------
   42|  12.3k|	    !json_object_object_get_ex(jobj_segment, "offset", &jobj))
  ------------------
  |  Branch (42:6): [True: 0, False: 12.3k]
  ------------------
   43|      0|		return 0;
   44|       |
   45|  12.3k|	return blockwise ? crypt_jobj_get_uint64(jobj) >> SECTOR_SHIFT : crypt_jobj_get_uint64(jobj);
  ------------------
  |  |   38|      0|#define SECTOR_SHIFT       9
  ------------------
  |  Branch (45:9): [True: 0, False: 12.3k]
  ------------------
   46|  12.3k|}
json_segment_type:
   49|      8|{
   50|      8|	json_object *jobj;
   51|       |
   52|      8|	if (!jobj_segment ||
  ------------------
  |  Branch (52:6): [True: 0, False: 8]
  ------------------
   53|      8|	    !json_object_object_get_ex(jobj_segment, "type", &jobj))
  ------------------
  |  Branch (53:6): [True: 0, False: 8]
  ------------------
   54|      0|		return NULL;
   55|       |
   56|      8|	return json_object_get_string(jobj);
   57|      8|}
json_segment_get_size:
   71|  6.26k|{
   72|  6.26k|	json_object *jobj;
   73|       |
   74|  6.26k|	if (!jobj_segment ||
  ------------------
  |  Branch (74:6): [True: 0, False: 6.26k]
  ------------------
   75|  6.26k|	    !json_object_object_get_ex(jobj_segment, "size", &jobj))
  ------------------
  |  Branch (75:6): [True: 0, False: 6.26k]
  ------------------
   76|      0|		return 0;
   77|       |
   78|  6.26k|	return blockwise ? crypt_jobj_get_uint64(jobj) >> SECTOR_SHIFT : crypt_jobj_get_uint64(jobj);
  ------------------
  |  |   38|      0|#define SECTOR_SHIFT       9
  ------------------
  |  Branch (78:9): [True: 0, False: 6.26k]
  ------------------
   79|  6.26k|}
json_segment_get_sector_size:
  121|  2.09k|{
  122|  2.09k|	json_object *jobj;
  123|  2.09k|	int i;
  124|       |
  125|  2.09k|	if (!jobj_segment ||
  ------------------
  |  Branch (125:6): [True: 0, False: 2.09k]
  ------------------
  126|  2.09k|            !json_object_object_get_ex(jobj_segment, "sector_size", &jobj))
  ------------------
  |  Branch (126:13): [True: 1.84k, False: 251]
  ------------------
  127|  1.84k|		return SECTOR_SIZE;
  ------------------
  |  |   39|  1.84k|#define SECTOR_SIZE     (1 << SECTOR_SHIFT)
  |  |  ------------------
  |  |  |  |   38|  1.84k|#define SECTOR_SHIFT       9
  |  |  ------------------
  ------------------
  128|       |
  129|    251|	i = json_object_get_int(jobj);
  130|    251|	return i < 0 ? SECTOR_SIZE : i;
  ------------------
  |  |   39|     14|#define SECTOR_SIZE     (1 << SECTOR_SHIFT)
  |  |  ------------------
  |  |  |  |   38|     14|#define SECTOR_SHIFT       9
  |  |  ------------------
  ------------------
  |  Branch (130:9): [True: 14, False: 237]
  ------------------
  131|  2.09k|}
json_segment_contains_flag:
  174|  15.0k|{
  175|  15.0k|	int r, i;
  176|  15.0k|	json_object *jobj, *jobj_flags = json_segment_get_flags(jobj_segment);
  177|       |
  178|  15.0k|	if (!jobj_flags)
  ------------------
  |  Branch (178:6): [True: 1.59k, False: 13.4k]
  ------------------
  179|  1.59k|		return false;
  180|       |
  181|  39.5k|	for (i = 0; i < (int)json_object_array_length(jobj_flags); i++) {
  ------------------
  |  Branch (181:14): [True: 26.5k, False: 13.0k]
  ------------------
  182|  26.5k|		jobj = json_object_array_get_idx(jobj_flags, i);
  183|  26.5k|		if (len)
  ------------------
  |  Branch (183:7): [True: 26.1k, False: 418]
  ------------------
  184|  26.1k|			r = strncmp(json_object_get_string(jobj), flag_str, len);
  185|    418|		else
  186|    418|			r = strcmp(json_object_get_string(jobj), flag_str);
  187|  26.5k|		if (!r)
  ------------------
  |  Branch (187:7): [True: 395, False: 26.1k]
  ------------------
  188|    395|			return true;
  189|  26.5k|	}
  190|       |
  191|  13.0k|	return false;
  192|  13.4k|}
json_segment_is_backup:
  195|  14.9k|{
  196|  14.9k|	return json_segment_contains_flag(jobj_segment, "backup-", 7);
  197|  14.9k|}
json_segments_get_segment:
  200|  8.47k|{
  201|  8.47k|	json_object *jobj;
  202|  8.47k|	char segment_name[16];
  203|       |
  204|  8.47k|	if (snprintf(segment_name, sizeof(segment_name), "%u", segment) < 1)
  ------------------
  |  Branch (204:6): [True: 0, False: 8.47k]
  ------------------
  205|      0|		return NULL;
  206|       |
  207|  8.47k|	if (!json_object_object_get_ex(jobj_segments, segment_name, &jobj))
  ------------------
  |  Branch (207:6): [True: 26, False: 8.45k]
  ------------------
  208|     26|		return NULL;
  209|       |
  210|  8.45k|	return jobj;
  211|  8.47k|}
json_segments_count:
  214|  2.09k|{
  215|  2.09k|	unsigned count = 0;
  216|       |
  217|  2.09k|	if (!jobj_segments)
  ------------------
  |  Branch (217:6): [True: 0, False: 2.09k]
  ------------------
  218|      0|		return 0;
  219|       |
  220|  2.12k|	json_object_object_foreach(jobj_segments, slot, val) {
  ------------------
  |  |  494|  2.09k|	char *key = NULL;                                                        \
  |  |  495|  2.09k|	struct json_object *val __attribute__((__unused__)) = NULL;              \
  |  |  496|  2.09k|	for (struct lh_entry *entry##key = lh_table_head(json_object_get_object(obj)),    \
  |  |  497|  2.09k|	                     *entry_next##key = NULL;                            \
  |  |  498|  4.21k|	     ({                                                                  \
  |  |  ------------------
  |  |  |  Branch (498:7): [True: 2.12k, False: 2.09k]
  |  |  ------------------
  |  |  499|  4.21k|		     if (entry##key)                                             \
  |  |  ------------------
  |  |  |  Branch (499:12): [True: 2.12k, False: 2.09k]
  |  |  ------------------
  |  |  500|  4.21k|		     {                                                           \
  |  |  501|  2.12k|			     key = (char *)lh_entry_k(entry##key);               \
  |  |  502|  2.12k|			     val = (struct json_object *)lh_entry_v(entry##key); \
  |  |  503|  2.12k|			     entry_next##key = lh_entry_next(entry##key);        \
  |  |  504|  2.12k|		     };                                                          \
  |  |  505|  4.21k|		     entry##key;                                                 \
  |  |  506|  4.21k|	     });                                                                 \
  |  |  507|  2.12k|	     entry##key = entry_next##key)
  ------------------
  221|  2.12k|		UNUSED(slot);
  ------------------
  |  |   18|  2.12k|#define UNUSED(x) (void)(x)
  ------------------
  222|  2.12k|		if (!json_segment_is_backup(val))
  ------------------
  |  Branch (222:7): [True: 2.10k, False: 21]
  ------------------
  223|  2.10k|			count++;
  224|  2.12k|	}
  225|       |
  226|  2.09k|	return count;
  227|  2.09k|}
LUKS2_get_segment_id_by_flag:
  557|  2.09k|{
  558|  2.09k|	json_object *jobj_flags, *jobj_segments = LUKS2_get_segments_jobj(hdr);
  559|       |
  560|  2.09k|	if (!flag || !jobj_segments)
  ------------------
  |  Branch (560:6): [True: 0, False: 2.09k]
  |  Branch (560:15): [True: 0, False: 2.09k]
  ------------------
  561|      0|		return -ENOENT;
  562|       |
  563|  2.13k|	json_object_object_foreach(jobj_segments, key, value) {
  ------------------
  |  |  494|  2.09k|	char *key = NULL;                                                        \
  |  |  495|  2.09k|	struct json_object *val __attribute__((__unused__)) = NULL;              \
  |  |  496|  2.09k|	for (struct lh_entry *entry##key = lh_table_head(json_object_get_object(obj)),    \
  |  |  497|  2.09k|	                     *entry_next##key = NULL;                            \
  |  |  498|  4.22k|	     ({                                                                  \
  |  |  ------------------
  |  |  |  Branch (498:7): [True: 2.13k, False: 2.09k]
  |  |  ------------------
  |  |  499|  4.22k|		     if (entry##key)                                             \
  |  |  ------------------
  |  |  |  Branch (499:12): [True: 2.13k, False: 2.09k]
  |  |  ------------------
  |  |  500|  4.22k|		     {                                                           \
  |  |  501|  2.13k|			     key = (char *)lh_entry_k(entry##key);               \
  |  |  502|  2.13k|			     val = (struct json_object *)lh_entry_v(entry##key); \
  |  |  503|  2.13k|			     entry_next##key = lh_entry_next(entry##key);        \
  |  |  504|  2.13k|		     };                                                          \
  |  |  505|  4.22k|		     entry##key;                                                 \
  |  |  506|  4.22k|	     });                                                                 \
  |  |  507|  2.13k|	     entry##key = entry_next##key)
  ------------------
  564|  2.13k|		if (!json_object_object_get_ex(value, "flags", &jobj_flags))
  ------------------
  |  Branch (564:7): [True: 278, False: 1.85k]
  ------------------
  565|    278|			continue;
  566|  1.85k|		if (LUKS2_array_jobj(jobj_flags, flag))
  ------------------
  |  Branch (566:7): [True: 1, False: 1.85k]
  ------------------
  567|      1|			return atoi(key);
  568|  1.85k|	}
  569|       |
  570|  2.09k|	return -ENOENT;
  571|  2.09k|}
json_segment_cmp:
  593|      4|{
  594|      4|	const char *type = json_segment_type(jobj_segment_1);
  595|      4|	const char *type2 = json_segment_type(jobj_segment_2);
  596|       |
  597|      4|	if (!type || !type2)
  ------------------
  |  Branch (597:6): [True: 0, False: 4]
  |  Branch (597:15): [True: 0, False: 4]
  ------------------
  598|      0|		return false;
  599|       |
  600|      4|	if (strcmp(type, type2))
  ------------------
  |  Branch (600:6): [True: 4, False: 0]
  ------------------
  601|      4|		return false;
  602|       |
  603|      0|	if (!strcmp(type, "crypt"))
  ------------------
  |  Branch (603:6): [True: 0, False: 0]
  ------------------
  604|      0|		return (json_segment_get_sector_size(jobj_segment_1) == json_segment_get_sector_size(jobj_segment_2) &&
  ------------------
  |  Branch (604:11): [True: 0, False: 0]
  ------------------
  605|      0|			!strcmp(json_segment_get_cipher(jobj_segment_1),
  ------------------
  |  Branch (605:4): [True: 0, False: 0]
  ------------------
  606|      0|			        json_segment_get_cipher(jobj_segment_2)));
  607|       |
  608|      0|	return true;
  609|      0|}
luks2_segment.c:json_segment_get_flags:
  165|  15.0k|{
  166|  15.0k|	json_object *jobj;
  167|       |
  168|  15.0k|	if (!jobj_segment || !(json_object_object_get_ex(jobj_segment, "flags", &jobj)))
  ------------------
  |  Branch (168:6): [True: 0, False: 15.0k]
  |  Branch (168:23): [True: 1.59k, False: 13.4k]
  ------------------
  169|  1.59k|		return NULL;
  170|  13.4k|	return jobj;
  171|  15.0k|}

crypt_random_init:
  133|  10.1k|{
  134|  10.1k|	if (random_initialised)
  ------------------
  |  Branch (134:6): [True: 10.1k, False: 1]
  ------------------
  135|  10.1k|		return 0;
  136|       |
  137|       |	/* Used for CRYPT_RND_NORMAL */
  138|      1|	if(urandom_fd == -1)
  ------------------
  |  Branch (138:5): [True: 1, False: 0]
  ------------------
  139|      1|		urandom_fd = open(URANDOM_DEVICE, O_RDONLY | O_CLOEXEC);
  ------------------
  |  |   18|      1|#define URANDOM_DEVICE	"/dev/urandom"
  ------------------
  140|      1|	if(urandom_fd == -1)
  ------------------
  |  Branch (140:5): [True: 0, False: 1]
  ------------------
  141|      0|		goto err;
  142|       |
  143|       |	/* Used for CRYPT_RND_KEY */
  144|      1|	if(random_fd == -1)
  ------------------
  |  Branch (144:5): [True: 1, False: 0]
  ------------------
  145|      1|		random_fd = open(RANDOM_DEVICE, O_RDONLY | O_NONBLOCK | O_CLOEXEC);
  ------------------
  |  |   21|      1|#define RANDOM_DEVICE	"/dev/random"
  ------------------
  146|      1|	if(random_fd == -1)
  ------------------
  |  Branch (146:5): [True: 0, False: 1]
  ------------------
  147|      0|		goto err;
  148|       |
  149|      1|	if (crypt_fips_mode())
  ------------------
  |  Branch (149:6): [True: 0, False: 1]
  ------------------
  150|      0|		log_verbose(ctx, _("Running in FIPS mode."));
  ------------------
  |  |  188|      0|#define log_verbose(c, x...) crypt_logf(c, CRYPT_LOG_VERBOSE, x)
  |  |  ------------------
  |  |  |  |  178|      0|#define CRYPT_LOG_VERBOSE  2
  |  |  ------------------
  ------------------
  151|       |
  152|      1|	random_initialised = 1;
  153|      1|	return 0;
  154|      0|err:
  155|      0|	crypt_random_exit();
  156|      0|	log_err(ctx, _("Fatal error during RNG initialisation."));
  ------------------
  |  |  189|      0|#define log_err(c, x...) crypt_logf(c, CRYPT_LOG_ERROR, x)
  |  |  ------------------
  |  |  |  |  176|      0|#define CRYPT_LOG_ERROR  1
  |  |  ------------------
  ------------------
  157|       |	return -ENOSYS;
  158|      1|}
crypt_random_get:
  162|  4.18k|{
  163|  4.18k|	int status, rng_type;
  164|       |
  165|  4.18k|	switch(quality) {
  166|      0|	case CRYPT_RND_NORMAL:
  ------------------
  |  Branch (166:2): [True: 0, False: 4.18k]
  ------------------
  167|      0|		status = _get_urandom(buf, len);
  168|      0|		break;
  169|  4.18k|	case CRYPT_RND_SALT:
  ------------------
  |  Branch (169:2): [True: 4.18k, False: 0]
  ------------------
  170|  4.18k|		if (crypt_fips_mode())
  ------------------
  |  Branch (170:7): [True: 0, False: 4.18k]
  ------------------
  171|      0|			status = crypt_backend_rng(buf, len, quality, 1);
  172|  4.18k|		else
  173|  4.18k|			status = _get_urandom(buf, len);
  174|  4.18k|		break;
  175|      0|	case CRYPT_RND_KEY:
  ------------------
  |  Branch (175:2): [True: 0, False: 4.18k]
  ------------------
  176|      0|		if (crypt_fips_mode()) {
  ------------------
  |  Branch (176:7): [True: 0, False: 0]
  ------------------
  177|      0|			status = crypt_backend_rng(buf, len, quality, 1);
  178|      0|			break;
  179|      0|		}
  180|      0|		rng_type = ctx ? crypt_get_rng_type(ctx) :
  ------------------
  |  Branch (180:14): [True: 0, False: 0]
  ------------------
  181|      0|				 crypt_random_default_key_rng();
  182|      0|		switch (rng_type) {
  183|      0|		case CRYPT_RNG_URANDOM:
  ------------------
  |  |  226|      0|#define CRYPT_RNG_URANDOM 0
  ------------------
  |  Branch (183:3): [True: 0, False: 0]
  ------------------
  184|      0|			status = _get_urandom(buf, len);
  185|      0|			break;
  186|      0|		case CRYPT_RNG_RANDOM:
  ------------------
  |  |  228|      0|#define CRYPT_RNG_RANDOM  1
  ------------------
  |  Branch (186:3): [True: 0, False: 0]
  ------------------
  187|      0|			status = _get_random(ctx, buf, len);
  188|      0|			break;
  189|      0|		default:
  ------------------
  |  Branch (189:3): [True: 0, False: 0]
  ------------------
  190|      0|			abort();
  191|      0|		}
  192|      0|		break;
  193|      0|	default:
  ------------------
  |  Branch (193:2): [True: 0, False: 4.18k]
  ------------------
  194|      0|		log_err(ctx, _("Unknown RNG quality requested."));
  ------------------
  |  |  189|      0|#define log_err(c, x...) crypt_logf(c, CRYPT_LOG_ERROR, x)
  |  |  ------------------
  |  |  |  |  176|      0|#define CRYPT_LOG_ERROR  1
  |  |  ------------------
  ------------------
  195|      0|		return -EINVAL;
  196|  4.18k|	}
  197|       |
  198|  4.18k|	if (status)
  ------------------
  |  Branch (198:6): [True: 0, False: 4.18k]
  ------------------
  199|      0|		log_err(ctx, _("Error reading from RNG."));
  ------------------
  |  |  189|      0|#define log_err(c, x...) crypt_logf(c, CRYPT_LOG_ERROR, x)
  |  |  ------------------
  |  |  |  |  176|      0|#define CRYPT_LOG_ERROR  1
  |  |  ------------------
  ------------------
  200|       |
  201|  4.18k|	return status;
  202|  4.18k|}
crypt_random_default_key_rng:
  220|  5.94k|{
  221|       |	/* coverity[pointless_string_compare] */
  222|  5.94k|	if (!strcmp(DEFAULT_RNG, RANDOM_DEVICE))
  ------------------
  |  |   77|  5.94k|#define DEFAULT_RNG "/dev/urandom"
  ------------------
              	if (!strcmp(DEFAULT_RNG, RANDOM_DEVICE))
  ------------------
  |  |   21|  5.94k|#define RANDOM_DEVICE	"/dev/random"
  ------------------
  |  Branch (222:6): [True: 0, False: 5.94k]
  ------------------
  223|      0|		return CRYPT_RNG_RANDOM;
  ------------------
  |  |  228|      0|#define CRYPT_RNG_RANDOM  1
  ------------------
  224|       |
  225|       |	/* coverity[pointless_string_compare] */
  226|  5.94k|	if (!strcmp(DEFAULT_RNG, URANDOM_DEVICE))
  ------------------
  |  |   77|  5.94k|#define DEFAULT_RNG "/dev/urandom"
  ------------------
              	if (!strcmp(DEFAULT_RNG, URANDOM_DEVICE))
  ------------------
  |  |   18|  5.94k|#define URANDOM_DEVICE	"/dev/urandom"
  ------------------
  |  Branch (226:6): [True: 5.94k, False: 0]
  ------------------
  227|  5.94k|		return CRYPT_RNG_URANDOM;
  ------------------
  |  |  226|  5.94k|#define CRYPT_RNG_URANDOM 0
  ------------------
  228|       |
  229|       |	/* RNG misconfiguration is fatal */
  230|      0|	abort();
  231|  5.94k|}
random.c:_get_urandom:
   32|  4.18k|{
   33|  4.18k|	int r;
   34|  4.18k|	size_t old_len = len;
   35|  4.18k|	char *old_buf = buf;
   36|       |
   37|  4.18k|	assert(urandom_fd != -1);
  ------------------
  |  Branch (37:2): [True: 0, False: 4.18k]
  |  Branch (37:2): [True: 4.18k, False: 0]
  ------------------
   38|       |
   39|  8.36k|	while (len) {
  ------------------
  |  Branch (39:9): [True: 4.18k, False: 4.18k]
  ------------------
   40|  4.18k|		r = read(urandom_fd, buf, len);
   41|  4.18k|		if (r == -1 && errno != EINTR)
  ------------------
  |  Branch (41:7): [True: 0, False: 4.18k]
  |  Branch (41:18): [True: 0, False: 0]
  ------------------
   42|      0|			return -EINVAL;
   43|  4.18k|		if (r > 0) {
  ------------------
  |  Branch (43:7): [True: 4.18k, False: 0]
  ------------------
   44|  4.18k|			len -= r;
   45|  4.18k|			buf += r;
   46|  4.18k|		}
   47|  4.18k|	}
   48|       |
   49|  4.18k|	assert(len == 0);
  ------------------
  |  Branch (49:2): [True: 0, False: 4.18k]
  |  Branch (49:2): [True: 4.18k, False: 0]
  ------------------
   50|  4.18k|	assert((size_t)(buf - old_buf) == old_len);
  ------------------
  |  Branch (50:2): [True: 0, False: 4.18k]
  |  Branch (50:2): [True: 4.18k, False: 0]
  ------------------
   51|       |
   52|  4.18k|	return 0;
   53|  4.18k|}

crypt_log:
  166|   240k|{
  167|   240k|	if (!msg)
  ------------------
  |  Branch (167:6): [True: 0, False: 240k]
  ------------------
  168|      0|		return;
  169|       |
  170|   240k|	if (level < _debug_level)
  ------------------
  |  Branch (170:6): [True: 238k, False: 1.81k]
  ------------------
  171|   238k|		return;
  172|       |
  173|  1.81k|	if (cd && cd->log)
  ------------------
  |  Branch (173:6): [True: 1.81k, False: 0]
  |  Branch (173:12): [True: 0, False: 1.81k]
  ------------------
  174|      0|		cd->log(level, msg, cd->log_usrptr);
  175|  1.81k|	else if (_default_log)
  ------------------
  |  Branch (175:11): [True: 0, False: 1.81k]
  ------------------
  176|      0|		_default_log(level, msg, _default_log_usrptr);
  177|       |	/* Default to stdout/stderr if there is no callback. */
  178|  1.81k|	else
  179|  1.81k|		fprintf(level == CRYPT_LOG_ERROR ? stderr : stdout, "%s", msg);
  ------------------
  |  |  176|  1.81k|#define CRYPT_LOG_ERROR  1
  ------------------
  |  Branch (179:11): [True: 1.81k, False: 0]
  ------------------
  180|  1.81k|}
crypt_logf:
  184|   240k|{
  185|   240k|	va_list argp;
  186|   240k|	char target[LOG_MAX_LEN + 2];
  187|   240k|	int len;
  188|       |
  189|   240k|	va_start(argp, format);
  190|       |
  191|   240k|	len = vsnprintf(&target[0], LOG_MAX_LEN, format, argp);
  ------------------
  |  |   38|   240k|#define LOG_MAX_LEN		4096
  ------------------
  192|   240k|	if (len > 0 && len < LOG_MAX_LEN) {
  ------------------
  |  |   38|   240k|#define LOG_MAX_LEN		4096
  ------------------
  |  Branch (192:6): [True: 240k, False: 0]
  |  Branch (192:17): [True: 240k, False: 0]
  ------------------
  193|       |		/* All verbose and error messages in tools end with EOL. */
  194|   240k|		if (level == CRYPT_LOG_VERBOSE || level == CRYPT_LOG_ERROR ||
  ------------------
  |  |  178|   481k|#define CRYPT_LOG_VERBOSE  2
  ------------------
              		if (level == CRYPT_LOG_VERBOSE || level == CRYPT_LOG_ERROR ||
  ------------------
  |  |  176|   481k|#define CRYPT_LOG_ERROR  1
  ------------------
  |  Branch (194:7): [True: 0, False: 240k]
  |  Branch (194:37): [True: 1.81k, False: 238k]
  ------------------
  195|   238k|		    level == CRYPT_LOG_DEBUG || level == CRYPT_LOG_DEBUG_JSON)
  ------------------
  |  |  180|   479k|#define CRYPT_LOG_DEBUG -1
  ------------------
              		    level == CRYPT_LOG_DEBUG || level == CRYPT_LOG_DEBUG_JSON)
  ------------------
  |  |  182|      0|#define CRYPT_LOG_DEBUG_JSON -2
  ------------------
  |  Branch (195:7): [True: 238k, False: 0]
  |  Branch (195:35): [True: 0, False: 0]
  ------------------
  196|   240k|			strncat(target, "\n", LOG_MAX_LEN);
  ------------------
  |  |   38|   240k|#define LOG_MAX_LEN		4096
  ------------------
  197|       |
  198|   240k|		crypt_log(cd, level, target);
  199|   240k|	}
  200|       |
  201|       |	va_end(argp);
  202|   240k|}
crypt_metadata_device:
  216|  35.9k|{
  217|  35.9k|	return cd->metadata_device ?: cd->device;
  ------------------
  |  Branch (217:9): [True: 0, False: 35.9k]
  ------------------
  218|  35.9k|}
crypt_data_device:
  221|  2.09k|{
  222|  2.09k|	return cd->device;
  223|  2.09k|}
init_crypto:
  265|  10.1k|{
  266|  10.1k|#if HAVE_SYS_UTSNAME_H
  267|  10.1k|	struct utsname uts;
  268|  10.1k|#endif
  269|  10.1k|	int r;
  270|       |
  271|  10.1k|	r = crypt_random_init(ctx);
  272|  10.1k|	if (r < 0) {
  ------------------
  |  Branch (272:6): [True: 0, False: 10.1k]
  ------------------
  273|      0|		log_err(ctx, _("Cannot initialize crypto RNG backend."));
  ------------------
  |  |  189|      0|#define log_err(c, x...) crypt_logf(c, CRYPT_LOG_ERROR, x)
  |  |  ------------------
  |  |  |  |  176|      0|#define CRYPT_LOG_ERROR  1
  |  |  ------------------
  ------------------
  274|      0|		return r;
  275|      0|	}
  276|       |
  277|  10.1k|	r = crypt_backend_init();
  278|  10.1k|	if (r < 0)
  ------------------
  |  Branch (278:6): [True: 0, False: 10.1k]
  ------------------
  279|      0|		log_err(ctx, _("Cannot initialize crypto backend."));
  ------------------
  |  |  189|      0|#define log_err(c, x...) crypt_logf(c, CRYPT_LOG_ERROR, x)
  |  |  ------------------
  |  |  |  |  176|      0|#define CRYPT_LOG_ERROR  1
  |  |  ------------------
  ------------------
  280|       |
  281|  10.1k|	if (!r && !_crypto_logged) {
  ------------------
  |  Branch (281:6): [True: 10.1k, False: 0]
  |  Branch (281:12): [True: 1, False: 10.1k]
  ------------------
  282|      1|		log_dbg(ctx, "Crypto backend (%s%s) initialized in cryptsetup library version %s.",
  ------------------
  |  |  186|      1|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      1|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  283|      1|			crypt_backend_version(), crypt_argon2_version(), PACKAGE_VERSION);
  284|       |
  285|      1|#if HAVE_SYS_UTSNAME_H
  286|      1|		if (!uname(&uts))
  ------------------
  |  Branch (286:7): [True: 1, False: 0]
  ------------------
  287|      1|			log_dbg(ctx, "Detected kernel %s %s %s.",
  ------------------
  |  |  186|      1|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      1|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  288|      1|				uts.sysname, uts.release, uts.machine);
  289|      1|#endif
  290|      1|		_crypto_logged = 1;
  291|      1|	}
  292|       |
  293|  10.1k|	return r;
  294|  10.1k|}
crypt_init:
  593|  5.94k|{
  594|  5.94k|	struct crypt_device *h = NULL;
  595|  5.94k|	int r;
  596|       |
  597|  5.94k|	if (!cd)
  ------------------
  |  Branch (597:6): [True: 0, False: 5.94k]
  ------------------
  598|      0|		return -EINVAL;
  599|       |
  600|  5.94k|	log_dbg(NULL, "Allocating context for crypt device %s.", device ?: "(none)");
  ------------------
  |  |  186|  5.94k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  5.94k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  |  |  |  Branch (186:57): [True: 5.94k, False: 0]
  |  |  ------------------
  ------------------
  601|       |#if !HAVE_DECL_O_CLOEXEC
  602|       |	log_dbg(NULL, "Running without O_CLOEXEC.");
  603|       |#endif
  604|       |
  605|  5.94k|	if (!(h = crypt_zalloc(sizeof(struct crypt_device))))
  ------------------
  |  Branch (605:6): [True: 0, False: 5.94k]
  ------------------
  606|      0|		return -ENOMEM;
  607|       |
  608|  5.94k|	r = device_alloc(NULL, &h->device, device);
  609|  5.94k|	if (r < 0) {
  ------------------
  |  Branch (609:6): [True: 0, False: 5.94k]
  ------------------
  610|      0|		free(h);
  611|      0|		return r;
  612|      0|	}
  613|       |
  614|  5.94k|	dm_backend_init(NULL);
  615|       |
  616|  5.94k|	h->rng_type = crypt_random_default_key_rng();
  617|       |
  618|  5.94k|	*cd = h;
  619|  5.94k|	return 0;
  620|  5.94k|}
crypt_get_pbkdf:
  755|  2.09k|{
  756|  2.09k|	return &cd->pbkdf;
  757|  2.09k|}
crypt_load:
 1105|  5.94k|{
 1106|  5.94k|	int r;
 1107|       |
 1108|  5.94k|	if (!cd)
  ------------------
  |  Branch (1108:6): [True: 0, False: 5.94k]
  ------------------
 1109|      0|		return -EINVAL;
 1110|       |
 1111|  5.94k|	log_dbg(cd, "Trying to load %s crypt type from device %s.",
  ------------------
  |  |  186|  11.8k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  5.94k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  |  |  |  Branch (186:57): [True: 5.94k, False: 0]
  |  |  |  Branch (186:57): [True: 5.94k, False: 0]
  |  |  ------------------
  ------------------
 1112|  5.94k|		requested_type ?: "any", mdata_device_path(cd) ?: "(none)");
 1113|       |
 1114|  5.94k|	if (!crypt_metadata_device(cd))
  ------------------
  |  Branch (1114:6): [True: 0, False: 5.94k]
  ------------------
 1115|      0|		return -EINVAL;
 1116|       |
 1117|  5.94k|	crypt_reset_null_type(cd);
 1118|  5.94k|	cd->data_offset = 0;
 1119|  5.94k|	cd->metadata_size = 0;
 1120|  5.94k|	cd->keyslots_size = 0;
 1121|       |
 1122|  5.94k|	if (!requested_type || isLUKS1(requested_type) || isLUKS2(requested_type)) {
  ------------------
  |  Branch (1122:6): [True: 0, False: 5.94k]
  |  Branch (1122:25): [True: 0, False: 5.94k]
  |  Branch (1122:52): [True: 5.94k, False: 0]
  ------------------
 1123|  5.94k|		if (cd->type && !isLUKS1(cd->type) && !isLUKS2(cd->type)) {
  ------------------
  |  Branch (1123:7): [True: 0, False: 5.94k]
  |  Branch (1123:19): [True: 0, False: 0]
  |  Branch (1123:41): [True: 0, False: 0]
  ------------------
 1124|      0|			log_dbg(cd, "Context is already initialized to type %s", cd->type);
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
 1125|      0|			return -EINVAL;
 1126|      0|		}
 1127|       |
 1128|  5.94k|		r = _crypt_load_luks(cd, requested_type, true, false);
 1129|  5.94k|	} else if (isVERITY(requested_type)) {
  ------------------
  |  Branch (1129:13): [True: 0, False: 0]
  ------------------
 1130|      0|		if (cd->type && !isVERITY(cd->type)) {
  ------------------
  |  Branch (1130:7): [True: 0, False: 0]
  |  Branch (1130:19): [True: 0, False: 0]
  ------------------
 1131|      0|			log_dbg(cd, "Context is already initialized to type %s", cd->type);
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
 1132|      0|			return -EINVAL;
 1133|      0|		}
 1134|      0|		r = _crypt_load_verity(cd, params);
 1135|      0|	} else if (isTCRYPT(requested_type)) {
  ------------------
  |  Branch (1135:13): [True: 0, False: 0]
  ------------------
 1136|      0|		if (cd->type && !isTCRYPT(cd->type)) {
  ------------------
  |  Branch (1136:7): [True: 0, False: 0]
  |  Branch (1136:19): [True: 0, False: 0]
  ------------------
 1137|      0|			log_dbg(cd, "Context is already initialized to type %s", cd->type);
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
 1138|      0|			return -EINVAL;
 1139|      0|		}
 1140|      0|		r = _crypt_load_tcrypt(cd, params);
 1141|      0|	} else if (isINTEGRITY(requested_type)) {
  ------------------
  |  Branch (1141:13): [True: 0, False: 0]
  ------------------
 1142|      0|		if (cd->type && !isINTEGRITY(cd->type)) {
  ------------------
  |  Branch (1142:7): [True: 0, False: 0]
  |  Branch (1142:19): [True: 0, False: 0]
  ------------------
 1143|      0|			log_dbg(cd, "Context is already initialized to type %s", cd->type);
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
 1144|      0|			return -EINVAL;
 1145|      0|		}
 1146|      0|		r = _crypt_load_integrity(cd, params);
 1147|      0|	} else if (isBITLK(requested_type)) {
  ------------------
  |  Branch (1147:13): [True: 0, False: 0]
  ------------------
 1148|      0|		if (cd->type && !isBITLK(cd->type)) {
  ------------------
  |  Branch (1148:7): [True: 0, False: 0]
  |  Branch (1148:19): [True: 0, False: 0]
  ------------------
 1149|      0|			log_dbg(cd, "Context is already initialized to type %s", cd->type);
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
 1150|      0|			return -EINVAL;
 1151|      0|		}
 1152|      0|		r = _crypt_load_bitlk(cd);
 1153|      0|	} else if (isFVAULT2(requested_type)) {
  ------------------
  |  Branch (1153:13): [True: 0, False: 0]
  ------------------
 1154|      0|		if (cd->type && !isFVAULT2(cd->type)) {
  ------------------
  |  Branch (1154:7): [True: 0, False: 0]
  |  Branch (1154:19): [True: 0, False: 0]
  ------------------
 1155|      0|			log_dbg(cd, "Context is already initialized to type %s", cd->type);
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
 1156|      0|			return -EINVAL;
 1157|      0|		}
 1158|      0|		r = _crypt_load_fvault2(cd);
 1159|      0|	} else
 1160|      0|		return -EINVAL;
 1161|       |
 1162|  5.94k|	return r;
 1163|  5.94k|}
crypt_free:
 4157|  5.94k|{
 4158|  5.94k|	if (!cd)
  ------------------
  |  Branch (4158:6): [True: 0, False: 5.94k]
  ------------------
 4159|      0|		return;
 4160|       |
 4161|  5.94k|	log_dbg(cd, "Releasing crypt device %s context.", mdata_device_path(cd) ?: "empty");
  ------------------
  |  |  186|  5.94k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  5.94k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  |  |  |  Branch (186:57): [True: 5.94k, False: 0]
  |  |  ------------------
  ------------------
 4162|       |
 4163|  5.94k|	dm_backend_exit(cd);
 4164|  5.94k|	crypt_free_volume_key(cd->volume_key);
 4165|       |
 4166|  5.94k|	if (cd->keyring_description) {
  ------------------
  |  Branch (4166:6): [True: 0, False: 5.94k]
  ------------------
 4167|      0|		crypt_unlink_keyring_from_thread_keyring(cd, cd->keyring_id);
 4168|      0|		free(CONST_CAST(void*)cd->keyring_description);
  ------------------
  |  |   13|      0|#define CONST_CAST(x) (x)(uintptr_t)
  ------------------
 4169|      0|	}
 4170|       |
 4171|  5.94k|	crypt_free_type(cd, NULL);
 4172|       |
 4173|  5.94k|	device_free(cd, cd->device);
 4174|  5.94k|	device_free(cd, cd->metadata_device);
 4175|       |
 4176|  5.94k|	free(CONST_CAST(void*)cd->pbkdf.type);
  ------------------
  |  |   13|  5.94k|#define CONST_CAST(x) (x)(uintptr_t)
  ------------------
 4177|  5.94k|	free(CONST_CAST(void*)cd->pbkdf.hash);
  ------------------
  |  |   13|  5.94k|#define CONST_CAST(x) (x)(uintptr_t)
  ------------------
 4178|  5.94k|	free(CONST_CAST(void*)cd->user_key_name1);
  ------------------
  |  |   13|  5.94k|#define CONST_CAST(x) (x)(uintptr_t)
  ------------------
 4179|  5.94k|	free(CONST_CAST(void*)cd->user_key_name2);
  ------------------
  |  |   13|  5.94k|#define CONST_CAST(x) (x)(uintptr_t)
  ------------------
 4180|       |
 4181|       |	/* Some structures can contain keys (TCRYPT), wipe it */
 4182|  5.94k|	crypt_safe_memzero(cd, sizeof(*cd));
 4183|  5.94k|	free(cd);
 4184|  5.94k|}
crypt_get_type:
 6862|  2.09k|{
 6863|  2.09k|	return cd ? cd->type : NULL;
  ------------------
  |  Branch (6863:9): [True: 2.09k, False: 0]
  ------------------
 6864|  2.09k|}
crypt_metadata_locking_enabled:
 7254|  65.2k|{
 7255|  65.2k|	return _metadata_locking;
 7256|  65.2k|}
setup.c:isLUKS1:
  348|  27.6k|{
  349|  27.6k|	return (type && !strcmp(CRYPT_LUKS1, type));
  ------------------
  |  |  402|  17.8k|#define CRYPT_LUKS1 "LUKS1"
  ------------------
  |  Branch (349:10): [True: 17.8k, False: 9.78k]
  |  Branch (349:18): [True: 0, False: 17.8k]
  ------------------
  350|  27.6k|}
setup.c:isLUKS2:
  353|  23.7k|{
  354|  23.7k|	return (type && !strcmp(CRYPT_LUKS2, type));
  ------------------
  |  |  404|  19.9k|#define CRYPT_LUKS2 "LUKS2"
  ------------------
  |  Branch (354:10): [True: 19.9k, False: 3.84k]
  |  Branch (354:18): [True: 19.9k, False: 0]
  ------------------
  355|  23.7k|}
setup.c:isVERITY:
  368|  3.84k|{
  369|  3.84k|	return (type && !strcmp(CRYPT_VERITY, type));
  ------------------
  |  |  408|      0|#define CRYPT_VERITY "VERITY"
  ------------------
  |  Branch (369:10): [True: 0, False: 3.84k]
  |  Branch (369:18): [True: 0, False: 0]
  ------------------
  370|  3.84k|}
setup.c:isINTEGRITY:
  378|  3.84k|{
  379|  3.84k|	return (type && !strcmp(CRYPT_INTEGRITY, type));
  ------------------
  |  |  412|      0|#define CRYPT_INTEGRITY "INTEGRITY"
  ------------------
  |  Branch (379:10): [True: 0, False: 3.84k]
  |  Branch (379:18): [True: 0, False: 0]
  ------------------
  380|  3.84k|}
setup.c:mdata_device_path:
  205|  11.8k|{
  206|  11.8k|	return device_path(cd->metadata_device ?: cd->device);
  ------------------
  |  Branch (206:21): [True: 0, False: 11.8k]
  ------------------
  207|  11.8k|}
setup.c:crypt_reset_null_type:
  479|  5.94k|{
  480|  5.94k|	if (cd->type)
  ------------------
  |  Branch (480:6): [True: 0, False: 5.94k]
  ------------------
  481|      0|		return;
  482|       |
  483|  5.94k|	free(cd->u.none.active_name);
  484|       |	cd->u.none.active_name = NULL;
  485|  5.94k|}
setup.c:_crypt_load_luks:
  823|  5.94k|{
  824|  5.94k|	char *cipher_spec;
  825|  5.94k|	struct luks_phdr hdr = {};
  826|  5.94k|	int r, version;
  827|       |
  828|  5.94k|	r = init_crypto(cd);
  829|  5.94k|	if (r < 0)
  ------------------
  |  Branch (829:6): [True: 0, False: 5.94k]
  ------------------
  830|      0|		return r;
  831|       |
  832|       |	/* This will return 0 if primary LUKS2 header is damaged */
  833|  5.94k|	version = LUKS2_hdr_version_unlocked(cd, NULL);
  834|       |
  835|  5.94k|	if ((isLUKS1(requested_type) && version == 2) ||
  ------------------
  |  Branch (835:7): [True: 0, False: 5.94k]
  |  Branch (835:34): [True: 0, False: 0]
  ------------------
  836|  5.94k|	    (isLUKS2(requested_type) && version == 1))
  ------------------
  |  Branch (836:7): [True: 5.94k, False: 0]
  |  Branch (836:34): [True: 3, False: 5.93k]
  ------------------
  837|      3|		return -EINVAL;
  838|       |
  839|  5.93k|	if (requested_type)
  ------------------
  |  Branch (839:6): [True: 5.93k, False: 0]
  ------------------
  840|  5.93k|		version = 0;
  841|       |
  842|  5.93k|	if (isLUKS1(requested_type) || version == 1) {
  ------------------
  |  Branch (842:6): [True: 0, False: 5.93k]
  |  Branch (842:33): [True: 0, False: 5.93k]
  ------------------
  843|      0|		if (isLUKS2(cd->type)) {
  ------------------
  |  Branch (843:7): [True: 0, False: 0]
  ------------------
  844|      0|			log_dbg(cd, "Context is already initialized to type %s", cd->type);
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  845|      0|			return -EINVAL;
  846|      0|		}
  847|       |
  848|      0|		if (verify_pbkdf_params(cd, &cd->pbkdf)) {
  ------------------
  |  Branch (848:7): [True: 0, False: 0]
  ------------------
  849|      0|			r = init_pbkdf_type(cd, NULL, CRYPT_LUKS1);
  ------------------
  |  |  402|      0|#define CRYPT_LUKS1 "LUKS1"
  ------------------
  850|      0|			if (r)
  ------------------
  |  Branch (850:8): [True: 0, False: 0]
  ------------------
  851|      0|				return r;
  852|      0|		}
  853|       |
  854|      0|		r = LUKS_read_phdr(&hdr, !quiet, repair, cd);
  855|      0|		if (r)
  ------------------
  |  Branch (855:7): [True: 0, False: 0]
  ------------------
  856|      0|			goto out;
  857|       |
  858|      0|		if (!cd->type && !(cd->type = strdup(CRYPT_LUKS1))) {
  ------------------
  |  |  402|      0|#define CRYPT_LUKS1 "LUKS1"
  ------------------
  |  Branch (858:7): [True: 0, False: 0]
  |  Branch (858:20): [True: 0, False: 0]
  ------------------
  859|      0|			r = -ENOMEM;
  860|      0|			goto out;
  861|      0|		}
  862|       |
  863|       |		/* Set hash to the same as in the loaded header */
  864|      0|		if (!cd->pbkdf.hash || strcmp(cd->pbkdf.hash, hdr.hashSpec)) {
  ------------------
  |  Branch (864:7): [True: 0, False: 0]
  |  Branch (864:26): [True: 0, False: 0]
  ------------------
  865|      0|			free(CONST_CAST(void*)cd->pbkdf.hash);
  ------------------
  |  |   13|      0|#define CONST_CAST(x) (x)(uintptr_t)
  ------------------
  866|      0|			cd->pbkdf.hash = strdup(hdr.hashSpec);
  867|      0|			if (!cd->pbkdf.hash) {
  ------------------
  |  Branch (867:8): [True: 0, False: 0]
  ------------------
  868|      0|				r = -ENOMEM;
  869|      0|				goto out;
  870|      0|			}
  871|      0|		}
  872|       |
  873|      0|		if (asprintf(&cipher_spec, "%s-%s", hdr.cipherName, hdr.cipherMode) < 0) {
  ------------------
  |  Branch (873:7): [True: 0, False: 0]
  ------------------
  874|      0|			r = -ENOMEM;
  875|      0|			goto out;
  876|      0|		}
  877|       |
  878|      0|		free(cd->u.luks1.cipher_spec);
  879|      0|		cd->u.luks1.cipher_spec = cipher_spec;
  880|       |
  881|      0|		memcpy(&cd->u.luks1.hdr, &hdr, sizeof(hdr));
  882|  5.93k|	} else if (isLUKS2(requested_type) || version == 2 || version == 0) {
  ------------------
  |  Branch (882:13): [True: 5.93k, False: 0]
  |  Branch (882:40): [True: 0, False: 0]
  |  Branch (882:56): [True: 0, False: 0]
  ------------------
  883|  5.93k|		if (isLUKS1(cd->type)) {
  ------------------
  |  Branch (883:7): [True: 0, False: 5.93k]
  ------------------
  884|      0|			log_dbg(cd, "Context is already initialized to type %s", cd->type);
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  885|      0|			return -EINVAL;
  886|      0|		}
  887|       |
  888|       |		/*
  889|       |		 * Current LUKS2 repair just overrides blkid probes
  890|       |		 * and perform auto-recovery if possible. This is safe
  891|       |		 * unless future LUKS2 repair code do something more
  892|       |		 * sophisticated. In such case we would need to check
  893|       |		 * for LUKS2 requirements and decide if it's safe to
  894|       |		 * perform repair.
  895|       |		 */
  896|  5.93k|		r =  _crypt_load_luks2(cd, cd->type != NULL, repair);
  897|  5.93k|		if (!r)
  ------------------
  |  Branch (897:7): [True: 2.09k, False: 3.84k]
  ------------------
  898|  2.09k|			device_set_block_size(crypt_data_device(cd), LUKS2_get_sector_size(&cd->u.luks2.hdr));
  899|  3.84k|		else if (!quiet)
  ------------------
  |  Branch (899:12): [True: 0, False: 3.84k]
  ------------------
  900|      0|			log_err(cd, _("Device %s is not a valid LUKS device."), mdata_device_path(cd));
  ------------------
  |  |  189|      0|#define log_err(c, x...) crypt_logf(c, CRYPT_LOG_ERROR, x)
  |  |  ------------------
  |  |  |  |  176|      0|#define CRYPT_LOG_ERROR  1
  |  |  ------------------
  ------------------
  901|  5.93k|	} else {
  902|      0|		if (version > 2)
  ------------------
  |  Branch (902:7): [True: 0, False: 0]
  ------------------
  903|      0|			log_err(cd, _("Unsupported LUKS version %d."), version);
  ------------------
  |  |  189|      0|#define log_err(c, x...) crypt_logf(c, CRYPT_LOG_ERROR, x)
  |  |  ------------------
  |  |  |  |  176|      0|#define CRYPT_LOG_ERROR  1
  |  |  ------------------
  ------------------
  904|      0|		r = -EINVAL;
  905|      0|	}
  906|  5.93k|out:
  907|  5.93k|	crypt_safe_memzero(&hdr, sizeof(hdr));
  908|       |
  909|  5.93k|	return r;
  910|  5.93k|}
setup.c:isBITLK:
  383|  3.84k|{
  384|  3.84k|	return (type && !strcmp(CRYPT_BITLK, type));
  ------------------
  |  |  414|      0|#define CRYPT_BITLK "BITLK"
  ------------------
  |  Branch (384:10): [True: 0, False: 3.84k]
  |  Branch (384:18): [True: 0, False: 0]
  ------------------
  385|  3.84k|}
setup.c:crypt_set_null_type:
  469|  5.94k|{
  470|  5.94k|	free(cd->type);
  471|       |	cd->type = NULL;
  472|  5.94k|	cd->data_offset = 0;
  473|  5.94k|	cd->metadata_size = 0;
  474|  5.94k|	cd->keyslots_size = 0;
  475|  5.94k|	crypt_safe_memzero(&cd->u, sizeof(cd->u));
  476|  5.94k|}
setup.c:isPLAIN:
  343|  5.94k|{
  344|  5.94k|	return (type && !strcmp(CRYPT_PLAIN, type));
  ------------------
  |  |  400|  2.09k|#define CRYPT_PLAIN "PLAIN"
  ------------------
  |  Branch (344:10): [True: 2.09k, False: 3.84k]
  |  Branch (344:18): [True: 0, False: 2.09k]
  ------------------
  345|  5.94k|}
setup.c:_crypt_load_luks2:
  763|  5.93k|{
  764|  5.93k|	int r;
  765|  5.93k|	char *type = NULL;
  766|  5.93k|	struct luks2_hdr hdr2 = {};
  767|       |
  768|  5.93k|	log_dbg(cd, "%soading LUKS2 header (repair %sabled).", reload ? "Rel" : "L", repair ? "en" : "dis");
  ------------------
  |  |  186|  23.7k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  5.93k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  |  |  |  Branch (186:57): [True: 0, False: 5.93k]
  |  |  |  Branch (186:57): [True: 0, False: 5.93k]
  |  |  ------------------
  ------------------
  769|       |
  770|  5.93k|	r = LUKS2_hdr_read(cd, &hdr2, repair);
  771|  5.93k|	if (r)
  ------------------
  |  Branch (771:6): [True: 3.84k, False: 2.09k]
  ------------------
  772|  3.84k|		return r;
  773|       |
  774|  2.09k|	if (!reload) {
  ------------------
  |  Branch (774:6): [True: 2.09k, False: 0]
  ------------------
  775|  2.09k|		type = strdup(CRYPT_LUKS2);
  ------------------
  |  |  404|  2.09k|#define CRYPT_LUKS2 "LUKS2"
  ------------------
  776|  2.09k|		if (!type) {
  ------------------
  |  Branch (776:7): [True: 0, False: 2.09k]
  ------------------
  777|      0|			r = -ENOMEM;
  778|      0|			goto out;
  779|      0|		}
  780|  2.09k|	}
  781|       |
  782|  2.09k|	if (verify_pbkdf_params(cd, &cd->pbkdf)) {
  ------------------
  |  Branch (782:6): [True: 2.09k, False: 0]
  ------------------
  783|  2.09k|		r = init_pbkdf_type(cd, NULL, CRYPT_LUKS2);
  ------------------
  |  |  404|  2.09k|#define CRYPT_LUKS2 "LUKS2"
  ------------------
  784|  2.09k|		if (r)
  ------------------
  |  Branch (784:7): [True: 0, False: 2.09k]
  ------------------
  785|      0|			goto out;
  786|  2.09k|	}
  787|       |
  788|  2.09k|	if (reload) {
  ------------------
  |  Branch (788:6): [True: 0, False: 2.09k]
  ------------------
  789|      0|		LUKS2_hdr_free(cd, &cd->u.luks2.hdr);
  790|      0|		free(cd->u.luks2.keyslot_cipher);
  791|      0|	} else
  792|  2.09k|		cd->type = type;
  793|       |
  794|  2.09k|	r = 0;
  795|  2.09k|	memcpy(&cd->u.luks2.hdr, &hdr2, sizeof(hdr2));
  796|  2.09k|	cd->u.luks2.keyslot_cipher = NULL;
  797|  2.09k|	cd->u.luks2.rh = NULL;
  798|       |
  799|  2.09k|out:
  800|  2.09k|	if (r) {
  ------------------
  |  Branch (800:6): [True: 0, False: 2.09k]
  ------------------
  801|      0|		free(type);
  802|      0|		LUKS2_hdr_free(cd, &hdr2);
  803|      0|	}
  804|  2.09k|	return r;
  805|  2.09k|}
setup.c:crypt_free_type:
  710|  5.94k|{
  711|  5.94k|	const char *type = force_type ?: cd->type;
  ------------------
  |  Branch (711:21): [True: 0, False: 5.94k]
  ------------------
  712|       |
  713|  5.94k|	if (isPLAIN(type)) {
  ------------------
  |  Branch (713:6): [True: 0, False: 5.94k]
  ------------------
  714|      0|		free(CONST_CAST(void*)cd->u.plain.hdr.hash);
  ------------------
  |  |   13|      0|#define CONST_CAST(x) (x)(uintptr_t)
  ------------------
  715|      0|		free(cd->u.plain.cipher);
  716|      0|		free(cd->u.plain.cipher_spec);
  717|  5.94k|	} else if (isLUKS2(type)) {
  ------------------
  |  Branch (717:13): [True: 2.09k, False: 3.84k]
  ------------------
  718|  2.09k|		LUKS2_reencrypt_free(cd, cd->u.luks2.rh);
  719|  2.09k|		LUKS2_hdr_free(cd, &cd->u.luks2.hdr);
  720|  2.09k|		free(cd->u.luks2.keyslot_cipher);
  721|  3.84k|	} else if (isLUKS1(type)) {
  ------------------
  |  Branch (721:13): [True: 0, False: 3.84k]
  ------------------
  722|      0|		free(cd->u.luks1.cipher_spec);
  723|  3.84k|	} else if (isLOOPAES(type)) {
  ------------------
  |  Branch (723:13): [True: 0, False: 3.84k]
  ------------------
  724|      0|		free(CONST_CAST(void*)cd->u.loopaes.hdr.hash);
  ------------------
  |  |   13|      0|#define CONST_CAST(x) (x)(uintptr_t)
  ------------------
  725|      0|		free(cd->u.loopaes.cipher);
  726|      0|		free(cd->u.loopaes.cipher_spec);
  727|  3.84k|	} else if (isVERITY(type)) {
  ------------------
  |  Branch (727:13): [True: 0, False: 3.84k]
  ------------------
  728|      0|		free(CONST_CAST(void*)cd->u.verity.hdr.hash_name);
  ------------------
  |  |   13|      0|#define CONST_CAST(x) (x)(uintptr_t)
  ------------------
  729|      0|		free(CONST_CAST(void*)cd->u.verity.hdr.data_device);
  ------------------
  |  |   13|      0|#define CONST_CAST(x) (x)(uintptr_t)
  ------------------
  730|      0|		free(CONST_CAST(void*)cd->u.verity.hdr.hash_device);
  ------------------
  |  |   13|      0|#define CONST_CAST(x) (x)(uintptr_t)
  ------------------
  731|      0|		free(CONST_CAST(void*)cd->u.verity.hdr.fec_device);
  ------------------
  |  |   13|      0|#define CONST_CAST(x) (x)(uintptr_t)
  ------------------
  732|      0|		free(CONST_CAST(void*)cd->u.verity.hdr.salt);
  ------------------
  |  |   13|      0|#define CONST_CAST(x) (x)(uintptr_t)
  ------------------
  733|      0|		free(CONST_CAST(void*)cd->u.verity.root_hash);
  ------------------
  |  |   13|      0|#define CONST_CAST(x) (x)(uintptr_t)
  ------------------
  734|      0|		free(cd->u.verity.uuid);
  735|      0|		device_free(cd, cd->u.verity.fec_device);
  736|  3.84k|	} else if (isINTEGRITY(type)) {
  ------------------
  |  Branch (736:13): [True: 0, False: 3.84k]
  ------------------
  737|      0|		free(CONST_CAST(void*)cd->u.integrity.params.integrity);
  ------------------
  |  |   13|      0|#define CONST_CAST(x) (x)(uintptr_t)
  ------------------
  738|      0|		free(CONST_CAST(void*)cd->u.integrity.params.journal_integrity);
  ------------------
  |  |   13|      0|#define CONST_CAST(x) (x)(uintptr_t)
  ------------------
  739|      0|		free(CONST_CAST(void*)cd->u.integrity.params.journal_crypt);
  ------------------
  |  |   13|      0|#define CONST_CAST(x) (x)(uintptr_t)
  ------------------
  740|      0|		crypt_free_volume_key(cd->u.integrity.journal_crypt_key);
  741|      0|		crypt_free_volume_key(cd->u.integrity.journal_mac_key);
  742|  3.84k|	} else if (isBITLK(type)) {
  ------------------
  |  Branch (742:13): [True: 0, False: 3.84k]
  ------------------
  743|      0|		free(cd->u.bitlk.cipher_spec);
  744|      0|		BITLK_bitlk_metadata_free(&cd->u.bitlk.params);
  745|  3.84k|	} else if (!type) {
  ------------------
  |  Branch (745:13): [True: 3.84k, False: 0]
  ------------------
  746|  3.84k|		free(cd->u.none.active_name);
  747|  3.84k|		cd->u.none.active_name = NULL;
  748|  3.84k|	}
  749|       |
  750|  5.94k|	crypt_set_null_type(cd);
  751|  5.94k|}
setup.c:isLOOPAES:
  363|  3.84k|{
  364|  3.84k|	return (type && !strcmp(CRYPT_LOOPAES, type));
  ------------------
  |  |  406|      0|#define CRYPT_LOOPAES "LOOPAES"
  ------------------
  |  Branch (364:10): [True: 0, False: 3.84k]
  |  Branch (364:18): [True: 0, False: 0]
  ------------------
  365|  3.84k|}

crypt_cpusonline:
   30|  2.09k|{
   31|  2.09k|	long r = sysconf(_SC_NPROCESSORS_ONLN);
   32|  2.09k|	return r < 0 ? 1 : r;
  ------------------
  |  Branch (32:9): [True: 0, False: 2.09k]
  ------------------
   33|  2.09k|}
crypt_getphysmemory_kb:
   36|  2.09k|{
   37|  2.09k|	long pagesize, phys_pages;
   38|  2.09k|	uint64_t phys_memory_kb, page_size_kb;
   39|       |
   40|  2.09k|	pagesize = sysconf(_SC_PAGESIZE);
   41|  2.09k|	phys_pages = sysconf(_SC_PHYS_PAGES);
   42|       |
   43|  2.09k|	if (pagesize <= 0 || phys_pages <= 0)
  ------------------
  |  Branch (43:6): [True: 0, False: 2.09k]
  |  Branch (43:23): [True: 0, False: 2.09k]
  ------------------
   44|      0|		return 0;
   45|       |
   46|  2.09k|	page_size_kb = pagesize / 1024;
   47|  2.09k|	phys_memory_kb = page_size_kb * phys_pages;
   48|       |
   49|       |	/* sanity check for overflow */
   50|  2.09k|	if (phys_memory_kb / phys_pages != page_size_kb)
  ------------------
  |  Branch (50:6): [True: 0, False: 2.09k]
  ------------------
   51|      0|		return 0;
   52|       |
   53|       |	/* coverity[return_overflow:FALSE] */
   54|  2.09k|	return phys_memory_kb;
   55|  2.09k|}

blk_set_chains_for_superblocks:
   62|  5.99k|{
   63|  5.99k|	blkid_probe_enable_superblocks(h->pr, 1);
   64|  5.99k|	blkid_probe_set_superblocks_flags(h->pr, BLKID_SUBLKS_TYPE);
  ------------------
  |  |  315|  5.99k|#define BLKID_SUBLKS_TYPE	(1 << 5) /* define TYPE result value */
  ------------------
   65|  5.99k|}
blk_set_chains_for_fast_detection:
   68|  5.99k|{
   69|  5.99k|	blkid_probe_enable_partitions(h->pr, 1);
   70|  5.99k|	blkid_probe_set_partitions_flags(h->pr, 0);
   71|  5.99k|	blk_set_chains_for_superblocks(h);
   72|  5.99k|}
blk_init_by_path:
   75|  5.99k|{
   76|  5.99k|	struct blkid_handle *tmp = malloc(sizeof(*tmp));
   77|  5.99k|	if (!tmp)
  ------------------
  |  Branch (77:6): [True: 0, False: 5.99k]
  ------------------
   78|      0|		return -ENOMEM;
   79|       |
   80|  5.99k|	tmp->fd = -1;
   81|       |
   82|  5.99k|	tmp->pr = blkid_new_probe_from_filename(path);
   83|  5.99k|	if (!tmp->pr) {
  ------------------
  |  Branch (83:6): [True: 0, False: 5.99k]
  ------------------
   84|      0|		free(tmp);
   85|      0|		return -EINVAL;
   86|      0|	}
   87|       |
   88|  5.99k|	*h = tmp;
   89|  5.99k|	return 0;
   90|  5.99k|}
blk_superblocks_filter_luks:
  129|  5.99k|{
  130|       |	return blk_superblocks_luks(h, false);
  131|  5.99k|}
blk_safeprobe:
  153|  5.99k|{
  154|  5.99k|	switch (blkid_do_safeprobe(h->pr)) {
  155|      0|	case -2:
  ------------------
  |  Branch (155:2): [True: 0, False: 5.99k]
  ------------------
  156|      0|		return PRB_AMBIGUOUS;
  157|  4.18k|	case 1:
  ------------------
  |  Branch (157:2): [True: 4.18k, False: 1.81k]
  ------------------
  158|  4.18k|		return PRB_EMPTY;
  159|  1.35k|	case 0:
  ------------------
  |  Branch (159:2): [True: 1.35k, False: 4.63k]
  ------------------
  160|  1.35k|		return PRB_OK;
  161|    455|	default:
  ------------------
  |  Branch (161:2): [True: 455, False: 5.53k]
  ------------------
  162|    455|		return PRB_FAIL;
  163|  5.99k|	}
  164|  5.99k|}
blk_is_partition:
  167|  1.35k|{
  168|  1.35k|	return blkid_probe_has_value(h->pr, "PTTYPE");
  169|  1.35k|}
blk_is_superblock:
  172|    844|{
  173|    844|	return blkid_probe_has_value(h->pr, "TYPE");
  174|    844|}
blk_get_partition_type:
  177|    513|{
  178|    513|	const char *value = NULL;
  179|       |	(void) blkid_probe_lookup_value(h->pr, "PTTYPE", &value, NULL);
  180|    513|	return value;
  181|    513|}
blk_get_superblock_type:
  184|    844|{
  185|    844|	const char *value = NULL;
  186|       |	(void) blkid_probe_lookup_value(h->pr, "TYPE", &value, NULL);
  187|    844|	return value;
  188|    844|}
blk_free:
  191|  5.99k|{
  192|  5.99k|	if (!h)
  ------------------
  |  Branch (192:6): [True: 0, False: 5.99k]
  ------------------
  193|      0|		return;
  194|       |
  195|  5.99k|	if (h->pr)
  ------------------
  |  Branch (195:6): [True: 5.99k, False: 0]
  ------------------
  196|  5.99k|		blkid_free_probe(h->pr);
  197|       |
  198|  5.99k|	free(h);
  199|  5.99k|}
blk_supported:
  270|  5.99k|{
  271|  5.99k|	return 1;
  272|  5.99k|}
utils_blkid.c:blk_superblocks_luks:
  117|  5.99k|{
  118|  5.99k|	char luks[] = "crypto_LUKS";
  119|  5.99k|	char *luks_filter[] = {
  120|  5.99k|		luks,
  121|  5.99k|		NULL
  122|  5.99k|	};
  123|  5.99k|	return blkid_probe_filter_superblocks_type(h->pr,
  124|  5.99k|			enable ? BLKID_FLTR_ONLYIN : BLKID_FLTR_NOTIN,
  ------------------
  |  |  340|      0|#define BLKID_FLTR_ONLYIN		2
  ------------------
              			enable ? BLKID_FLTR_ONLYIN : BLKID_FLTR_NOTIN,
  ------------------
  |  |  336|  5.99k|#define BLKID_FLTR_NOTIN		1
  ------------------
  |  Branch (124:4): [True: 0, False: 5.99k]
  ------------------
  125|  5.99k|			luks_filter);
  126|  5.99k|}

crypt_parse_pbkdf:
  150|  2.09k|{
  151|  2.09k|	const char *tmp = NULL;
  152|       |
  153|  2.09k|	if (!s)
  ------------------
  |  Branch (153:6): [True: 0, False: 2.09k]
  ------------------
  154|      0|		return -EINVAL;
  155|       |
  156|  2.09k|	if (!strcasecmp(s, CRYPT_KDF_PBKDF2))
  ------------------
  |  |  266|  2.09k|#define CRYPT_KDF_PBKDF2   "pbkdf2"
  ------------------
  |  Branch (156:6): [True: 0, False: 2.09k]
  ------------------
  157|      0|		tmp = CRYPT_KDF_PBKDF2;
  ------------------
  |  |  266|      0|#define CRYPT_KDF_PBKDF2   "pbkdf2"
  ------------------
  158|  2.09k|	else if (!strcasecmp(s, CRYPT_KDF_ARGON2I))
  ------------------
  |  |  268|  2.09k|#define CRYPT_KDF_ARGON2I  "argon2i"
  ------------------
  |  Branch (158:11): [True: 0, False: 2.09k]
  ------------------
  159|      0|		tmp = CRYPT_KDF_ARGON2I;
  ------------------
  |  |  268|      0|#define CRYPT_KDF_ARGON2I  "argon2i"
  ------------------
  160|  2.09k|	else if (!strcasecmp(s, CRYPT_KDF_ARGON2ID))
  ------------------
  |  |  270|  2.09k|#define CRYPT_KDF_ARGON2ID "argon2id"
  ------------------
  |  Branch (160:11): [True: 2.09k, False: 0]
  ------------------
  161|  2.09k|		tmp = CRYPT_KDF_ARGON2ID;
  ------------------
  |  |  270|  2.09k|#define CRYPT_KDF_ARGON2ID "argon2id"
  ------------------
  162|       |
  163|  2.09k|	if (!tmp)
  ------------------
  |  Branch (163:6): [True: 0, False: 2.09k]
  ------------------
  164|      0|		return -EINVAL;
  165|       |
  166|  2.09k|	if (pbkdf)
  ------------------
  |  Branch (166:6): [True: 2.09k, False: 0]
  ------------------
  167|  2.09k|		*pbkdf = tmp;
  168|       |
  169|  2.09k|	return 0;
  170|  2.09k|}

device_sync:
  268|  2.09k|{
  269|  2.09k|	if (!device || device->dev_fd < 0)
  ------------------
  |  Branch (269:6): [True: 0, False: 2.09k]
  |  Branch (269:17): [True: 0, False: 2.09k]
  ------------------
  270|      0|		return;
  271|       |
  272|  2.09k|	if (fsync(device->dev_fd) == -1)
  ------------------
  |  Branch (272:6): [True: 0, False: 2.09k]
  ------------------
  273|      0|		log_dbg(cd, "Cannot sync device %s.", device_path(device));
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  274|  2.09k|}
device_open_locked:
  382|  41.1k|{
  383|  41.1k|	if (!device)
  ------------------
  |  Branch (383:6): [True: 0, False: 41.1k]
  ------------------
  384|      0|		return -EINVAL;
  385|       |
  386|  41.1k|	assert(!crypt_metadata_locking_enabled() || device_locked(device->lh));
  ------------------
  |  Branch (386:2): [True: 41.1k, False: 0]
  |  Branch (386:2): [True: 0, False: 0]
  |  Branch (386:2): [True: 0, False: 41.1k]
  |  Branch (386:2): [True: 41.1k, False: 0]
  ------------------
  387|  41.1k|	return device_open_internal(cd, device, flags);
  388|  41.1k|}
device_alloc_no_check:
  392|  5.94k|{
  393|  5.94k|	struct device *dev;
  394|       |
  395|  5.94k|	if (!path) {
  ------------------
  |  Branch (395:6): [True: 0, False: 5.94k]
  ------------------
  396|      0|		*device = NULL;
  397|      0|		return 0;
  398|      0|	}
  399|       |
  400|  5.94k|	dev = malloc(sizeof(struct device));
  401|  5.94k|	if (!dev)
  ------------------
  |  Branch (401:6): [True: 0, False: 5.94k]
  ------------------
  402|      0|		return -ENOMEM;
  403|       |
  404|  5.94k|	memset(dev, 0, sizeof(struct device));
  405|  5.94k|	dev->path = strdup(path);
  406|  5.94k|	if (!dev->path) {
  ------------------
  |  Branch (406:6): [True: 0, False: 5.94k]
  ------------------
  407|      0|		free(dev);
  408|      0|		return -ENOMEM;
  409|      0|	}
  410|  5.94k|	dev->loop_fd = -1;
  411|  5.94k|	dev->ro_dev_fd = -1;
  412|  5.94k|	dev->dev_fd = -1;
  413|  5.94k|	dev->dev_fd_excl = -1;
  414|  5.94k|	dev->o_direct = 1;
  415|       |
  416|  5.94k|	*device = dev;
  417|  5.94k|	return 0;
  418|  5.94k|}
device_alloc:
  421|  5.94k|{
  422|  5.94k|	struct device *dev;
  423|  5.94k|	int r;
  424|       |
  425|  5.94k|	r = device_alloc_no_check(&dev, path);
  426|  5.94k|	if (r < 0)
  ------------------
  |  Branch (426:6): [True: 0, False: 5.94k]
  ------------------
  427|      0|		return r;
  428|       |
  429|  5.94k|	if (dev) {
  ------------------
  |  Branch (429:6): [True: 5.94k, False: 0]
  ------------------
  430|  5.94k|		r = device_ready(cd, dev);
  431|  5.94k|		if (!r) {
  ------------------
  |  Branch (431:7): [True: 0, False: 5.94k]
  ------------------
  432|      0|			dev->init_done = 1;
  433|  5.94k|		} else if (r == -ENOTBLK) {
  ------------------
  |  Branch (433:14): [True: 5.94k, False: 0]
  ------------------
  434|       |			/* alloc loop later */
  435|  5.94k|		} else if (r < 0) {
  ------------------
  |  Branch (435:14): [True: 0, False: 0]
  ------------------
  436|      0|			free(dev->path);
  437|      0|			free(dev);
  438|      0|			return -ENOTBLK;
  439|      0|		}
  440|  5.94k|	}
  441|       |
  442|  5.94k|	*device = dev;
  443|  5.94k|	return 0;
  444|  5.94k|}
device_free:
  447|  11.8k|{
  448|  11.8k|	if (!device)
  ------------------
  |  Branch (448:6): [True: 5.94k, False: 5.94k]
  ------------------
  449|  5.94k|		return;
  450|       |
  451|  5.94k|	device_close(cd, device);
  452|       |
  453|  5.94k|	if (device->dev_fd_excl != -1) {
  ------------------
  |  Branch (453:6): [True: 0, False: 5.94k]
  ------------------
  454|      0|		log_dbg(cd, "Closed exclusive fd for %s.", device_path(device));
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  455|      0|		close(device->dev_fd_excl);
  456|      0|	}
  457|       |
  458|  5.94k|	if (device->loop_fd != -1) {
  ------------------
  |  Branch (458:6): [True: 0, False: 5.94k]
  ------------------
  459|      0|		log_dbg(cd, "Closed loop %s (%s).", device->path, device->file_path);
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  460|      0|		close(device->loop_fd);
  461|      0|	}
  462|       |
  463|  5.94k|	assert(!device_locked(device->lh));
  ------------------
  |  Branch (463:2): [True: 0, False: 5.94k]
  |  Branch (463:2): [True: 5.94k, False: 0]
  ------------------
  464|       |
  465|  5.94k|	free(device->file_path);
  466|  5.94k|	free(device->path);
  467|  5.94k|	free(device);
  468|  5.94k|}
device_path:
  481|   145k|{
  482|   145k|	if (!device)
  ------------------
  |  Branch (482:6): [True: 0, False: 145k]
  ------------------
  483|      0|		return NULL;
  484|       |
  485|   145k|	if (device->file_path)
  ------------------
  |  Branch (485:6): [True: 0, False: 145k]
  ------------------
  486|      0|		return device->file_path;
  487|       |
  488|   145k|	return device->path;
  489|   145k|}
device_block_size:
  559|  57.1k|{
  560|  57.1k|	int fd;
  561|       |
  562|  57.1k|	if (!device)
  ------------------
  |  Branch (562:6): [True: 0, False: 57.1k]
  ------------------
  563|      0|		return 0;
  564|       |
  565|  57.1k|	if (device->block_size)
  ------------------
  |  Branch (565:6): [True: 57.1k, False: 0]
  ------------------
  566|  57.1k|		return device->block_size;
  567|       |
  568|      0|	fd = open(device->file_path ?: device->path, O_RDONLY);
  ------------------
  |  Branch (568:12): [True: 0, False: 0]
  ------------------
  569|      0|	if (fd >= 0) {
  ------------------
  |  Branch (569:6): [True: 0, False: 0]
  ------------------
  570|      0|		device->block_size = device_block_size_fd(fd, NULL);
  571|      0|		close(fd);
  572|      0|	}
  573|       |
  574|      0|	if (!device->block_size)
  ------------------
  |  Branch (574:6): [True: 0, False: 0]
  ------------------
  575|      0|		log_dbg(cd, "Cannot get block size for device %s.", device_path(device));
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  576|       |
  577|      0|	return device->block_size;
  578|  57.1k|}
device_size:
  641|  5.99k|{
  642|  5.99k|	struct stat st;
  643|  5.99k|	int devfd, r = -EINVAL;
  644|       |
  645|  5.99k|	if (!device)
  ------------------
  |  Branch (645:6): [True: 0, False: 5.99k]
  ------------------
  646|      0|		return -EINVAL;
  647|       |
  648|  5.99k|	devfd = open(device->path, O_RDONLY);
  649|  5.99k|	if (devfd == -1)
  ------------------
  |  Branch (649:6): [True: 0, False: 5.99k]
  ------------------
  650|      0|		return -EINVAL;
  651|       |
  652|  5.99k|	if (fstat(devfd, &st) < 0)
  ------------------
  |  Branch (652:6): [True: 0, False: 5.99k]
  ------------------
  653|      0|		goto out;
  654|       |
  655|  5.99k|	if (S_ISREG(st.st_mode)) {
  ------------------
  |  Branch (655:6): [True: 5.99k, False: 0]
  ------------------
  656|  5.99k|		*size = (uint64_t)st.st_size;
  657|  5.99k|		r = 0;
  658|  5.99k|	} else if (ioctl(devfd, BLKGETSIZE64, size) >= 0)
  ------------------
  |  Branch (658:13): [True: 0, False: 0]
  ------------------
  659|      0|		r = 0;
  660|  5.99k|out:
  661|  5.99k|	close(devfd);
  662|  5.99k|	return r;
  663|  5.99k|}
device_check_size:
  692|  5.99k|{
  693|  5.99k|	int r;
  694|  5.99k|	uint64_t dev_size;
  695|       |
  696|  5.99k|	if (device_size(device, &dev_size)) {
  ------------------
  |  Branch (696:6): [True: 0, False: 5.99k]
  ------------------
  697|      0|		log_dbg(cd, "Cannot get device size for device %s.", device_path(device));
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  698|      0|		return -EIO;
  699|      0|	}
  700|       |
  701|  5.99k|	log_dbg(cd, "Device size %" PRIu64 ", offset %" PRIu64 ".", dev_size, req_offset);
  ------------------
  |  |  186|  5.99k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  5.99k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  702|       |
  703|  5.99k|	if (req_offset > dev_size) {
  ------------------
  |  Branch (703:6): [True: 1, False: 5.99k]
  ------------------
  704|       |		/* If it is header file, increase its size */
  705|      1|		if (falloc) {
  ------------------
  |  Branch (705:7): [True: 0, False: 1]
  ------------------
  706|      0|			if (!(r = device_fallocate(device, req_offset)))
  ------------------
  |  Branch (706:8): [True: 0, False: 0]
  ------------------
  707|      0|				return 0;
  708|       |
  709|       |			/* posix_fallocate returns positive errno on error */
  710|      0|			if (r > 0) {
  ------------------
  |  Branch (710:8): [True: 0, False: 0]
  ------------------
  711|      0|				log_err(cd, _("Cannot grow %s to %" PRIu64 " bytes (%s)."),
  ------------------
  |  |  189|      0|#define log_err(c, x...) crypt_logf(c, CRYPT_LOG_ERROR, x)
  |  |  ------------------
  |  |  |  |  176|      0|#define CRYPT_LOG_ERROR  1
  |  |  ------------------
  ------------------
  712|      0|					device_path(device), req_offset, strerror(r));
  713|      0|				return -EINVAL;
  714|      0|			}
  715|      0|		}
  716|       |
  717|      1|		log_err(cd, _("Device %s is too small. Need at least %" PRIu64 " bytes."),
  ------------------
  |  |  189|      1|#define log_err(c, x...) crypt_logf(c, CRYPT_LOG_ERROR, x)
  |  |  ------------------
  |  |  |  |  176|      1|#define CRYPT_LOG_ERROR  1
  |  |  ------------------
  ------------------
  718|      1|			device_path(device), req_offset);
  719|      1|		return -EINVAL;
  720|      1|	}
  721|       |
  722|  5.99k|	return 0;
  723|  5.99k|}
device_direct_io:
  932|  5.94k|{
  933|  5.94k|	return device ? device->o_direct : 0;
  ------------------
  |  Branch (933:9): [True: 5.94k, False: 0]
  ------------------
  934|  5.94k|}
device_alignment:
 1046|  57.1k|{
 1047|  57.1k|	int devfd;
 1048|       |
 1049|  57.1k|	if (!device)
  ------------------
  |  Branch (1049:6): [True: 0, False: 57.1k]
  ------------------
 1050|      0|		return 0;
 1051|       |
 1052|  57.1k|	if (!device->alignment) {
  ------------------
  |  Branch (1052:6): [True: 0, False: 57.1k]
  ------------------
 1053|      0|		devfd = open(device_path(device), O_RDONLY);
 1054|      0|		if (devfd != -1) {
  ------------------
  |  Branch (1054:7): [True: 0, False: 0]
  ------------------
 1055|      0|			device->alignment = device_alignment_fd(devfd);
 1056|      0|			close(devfd);
 1057|      0|		}
 1058|      0|	}
 1059|       |
 1060|  57.1k|	return device->alignment;
 1061|  57.1k|}
device_set_lock_handle:
 1064|  16.0k|{
 1065|  16.0k|	if (device)
  ------------------
  |  Branch (1065:6): [True: 16.0k, False: 0]
  ------------------
 1066|  16.0k|		device->lh = h;
 1067|  16.0k|}
device_get_lock_handle:
 1070|  16.0k|{
 1071|  16.0k|	return device ? device->lh : NULL;
  ------------------
  |  Branch (1071:9): [True: 16.0k, False: 0]
  ------------------
 1072|  16.0k|}
device_read_lock:
 1075|  5.93k|{
 1076|  5.93k|	if (!device || !crypt_metadata_locking_enabled())
  ------------------
  |  Branch (1076:6): [True: 0, False: 5.93k]
  |  Branch (1076:17): [True: 0, False: 5.93k]
  ------------------
 1077|      0|		return 0;
 1078|       |
 1079|  5.93k|	if (device_read_lock_internal(cd, device))
  ------------------
  |  Branch (1079:6): [True: 0, False: 5.93k]
  ------------------
 1080|      0|		return -EBUSY;
 1081|       |
 1082|  5.93k|	return 0;
 1083|  5.93k|}
device_write_lock:
 1086|  2.09k|{
 1087|  2.09k|	if (!device || !crypt_metadata_locking_enabled())
  ------------------
  |  Branch (1087:6): [True: 0, False: 2.09k]
  |  Branch (1087:17): [True: 0, False: 2.09k]
  ------------------
 1088|      0|		return 0;
 1089|       |
 1090|  2.09k|	assert(!device_locked(device->lh) || !device_locked_readonly(device->lh));
  ------------------
  |  Branch (1090:2): [True: 2.09k, False: 0]
  |  Branch (1090:2): [True: 0, False: 0]
  |  Branch (1090:2): [True: 2.09k, False: 0]
  |  Branch (1090:2): [True: 0, False: 0]
  ------------------
 1091|       |
 1092|  2.09k|	return device_write_lock_internal(cd, device);
 1093|  2.09k|}
device_read_unlock:
 1096|  5.93k|{
 1097|  5.93k|	if (!device || !crypt_metadata_locking_enabled())
  ------------------
  |  Branch (1097:6): [True: 0, False: 5.93k]
  |  Branch (1097:17): [True: 0, False: 5.93k]
  ------------------
 1098|      0|		return;
 1099|       |
 1100|  5.93k|	assert(device_locked(device->lh));
  ------------------
  |  Branch (1100:2): [True: 0, False: 5.93k]
  |  Branch (1100:2): [True: 5.93k, False: 0]
  ------------------
 1101|       |
 1102|  5.93k|	device_unlock_internal(cd, device);
 1103|  5.93k|}
device_write_unlock:
 1106|  2.09k|{
 1107|  2.09k|	if (!device || !crypt_metadata_locking_enabled())
  ------------------
  |  Branch (1107:6): [True: 0, False: 2.09k]
  |  Branch (1107:17): [True: 0, False: 2.09k]
  ------------------
 1108|      0|		return;
 1109|       |
 1110|  2.09k|	assert(device_locked(device->lh) && !device_locked_readonly(device->lh));
  ------------------
  |  Branch (1110:2): [True: 0, False: 2.09k]
  |  Branch (1110:2): [True: 0, False: 0]
  |  Branch (1110:2): [True: 2.09k, False: 0]
  |  Branch (1110:2): [True: 2.09k, False: 0]
  ------------------
 1111|       |
 1112|  2.09k|	device_unlock_internal(cd, device);
 1113|  2.09k|}
device_close:
 1121|  5.94k|{
 1122|  5.94k|	if (!device)
  ------------------
  |  Branch (1122:6): [True: 0, False: 5.94k]
  ------------------
 1123|      0|		return;
 1124|       |
 1125|  5.94k|	if (device->ro_dev_fd != -1) {
  ------------------
  |  Branch (1125:6): [True: 5.93k, False: 3]
  ------------------
 1126|  5.93k|		log_dbg(cd, "Closing read only fd for %s.", device_path(device));
  ------------------
  |  |  186|  5.93k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  5.93k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
 1127|  5.93k|		if (close(device->ro_dev_fd))
  ------------------
  |  Branch (1127:7): [True: 0, False: 5.93k]
  ------------------
 1128|      0|			log_dbg(cd, "Failed to close read only fd for %s.", device_path(device));
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
 1129|  5.93k|		device->ro_dev_fd = -1;
 1130|  5.93k|	}
 1131|       |
 1132|  5.94k|	if (device->dev_fd != -1) {
  ------------------
  |  Branch (1132:6): [True: 2.09k, False: 3.84k]
  ------------------
 1133|  2.09k|		log_dbg(cd, "Closing read write fd for %s.", device_path(device));
  ------------------
  |  |  186|  2.09k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  2.09k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
 1134|  2.09k|		if (close(device->dev_fd))
  ------------------
  |  Branch (1134:7): [True: 0, False: 2.09k]
  ------------------
 1135|      0|			log_dbg(cd, "Failed to close read write fd for %s.", device_path(device));
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
 1136|  2.09k|		device->dev_fd = -1;
 1137|  2.09k|	}
 1138|  5.94k|}
device_set_block_size:
 1141|  2.09k|{
 1142|  2.09k|	if (!device)
  ------------------
  |  Branch (1142:6): [True: 0, False: 2.09k]
  ------------------
 1143|      0|		return;
 1144|       |
 1145|  2.09k|	device->loop_block_size = size;
 1146|  2.09k|}
utils_device.c:device_open_internal:
  286|  41.1k|{
  287|  41.1k|	int access, devfd;
  288|       |
  289|  41.1k|	if (device->o_direct)
  ------------------
  |  Branch (289:6): [True: 41.1k, False: 0]
  ------------------
  290|  41.1k|		flags |= O_DIRECT;
  291|       |
  292|  41.1k|	access = flags & O_ACCMODE;
  293|  41.1k|	if (access == O_WRONLY)
  ------------------
  |  Branch (293:6): [True: 0, False: 41.1k]
  ------------------
  294|      0|		access = O_RDWR;
  295|       |
  296|  41.1k|	if (access == O_RDONLY && device->ro_dev_fd >= 0) {
  ------------------
  |  Branch (296:6): [True: 36.9k, False: 4.18k]
  |  Branch (296:28): [True: 31.0k, False: 5.93k]
  ------------------
  297|  31.0k|		log_dbg(cd, "Reusing open r%c fd on device %s", 'o', device_path(device));
  ------------------
  |  |  186|  31.0k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  31.0k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  298|  31.0k|		return device->ro_dev_fd;
  299|  31.0k|	} else if (access == O_RDWR && device->dev_fd >= 0) {
  ------------------
  |  Branch (299:13): [True: 4.18k, False: 5.93k]
  |  Branch (299:33): [True: 0, False: 4.18k]
  ------------------
  300|      0|		log_dbg(cd, "Reusing open r%c fd on device %s", 'w', device_path(device));
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  301|      0|		return device->dev_fd;
  302|      0|	}
  303|       |
  304|  10.1k|	if (device_locked(device->lh))
  ------------------
  |  Branch (304:6): [True: 10.1k, False: 0]
  ------------------
  305|  10.1k|		devfd = _open_locked(cd, device, flags);
  306|      0|	else
  307|      0|		devfd = open(device_path(device), flags);
  308|       |
  309|  10.1k|	if (devfd < 0) {
  ------------------
  |  Branch (309:6): [True: 2.09k, False: 8.02k]
  ------------------
  310|  2.09k|		log_dbg(cd, "Cannot open device %s%s.",
  ------------------
  |  |  186|  4.18k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  2.09k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  |  |  |  Branch (186:57): [True: 2.09k, False: 0]
  |  |  ------------------
  ------------------
  311|  2.09k|			device_path(device),
  312|  2.09k|			access != O_RDONLY ? " for write" : "");
  313|  2.09k|		return devfd;
  314|  2.09k|	}
  315|       |
  316|  8.02k|	if (access == O_RDONLY)
  ------------------
  |  Branch (316:6): [True: 5.93k, False: 2.09k]
  ------------------
  317|  5.93k|		device->ro_dev_fd = devfd;
  318|  2.09k|	else
  319|  2.09k|		device->dev_fd = devfd;
  320|       |
  321|  8.02k|	return devfd;
  322|  10.1k|}
utils_device.c:_open_locked:
  237|  10.1k|{
  238|  10.1k|	int fd;
  239|       |
  240|  10.1k|	if (!device)
  ------------------
  |  Branch (240:6): [True: 0, False: 10.1k]
  ------------------
  241|      0|		return -EINVAL;
  242|       |
  243|  10.1k|	log_dbg(cd, "Opening locked device %s", device_path(device));
  ------------------
  |  |  186|  10.1k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  10.1k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  244|       |
  245|  10.1k|	if ((flags & O_ACCMODE) != O_RDONLY && device_locked_readonly(device->lh)) {
  ------------------
  |  Branch (245:6): [True: 4.18k, False: 5.93k]
  |  Branch (245:41): [True: 2.09k, False: 2.09k]
  ------------------
  246|  2.09k|		log_dbg(cd, "Cannot open locked device %s in write mode. Read lock held.", device_path(device));
  ------------------
  |  |  186|  2.09k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  2.09k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  247|  2.09k|		return -EAGAIN;
  248|  2.09k|	}
  249|       |
  250|  8.02k|	fd = open(device_path(device), flags);
  251|  8.02k|	if (fd < 0)
  ------------------
  |  Branch (251:6): [True: 0, False: 8.02k]
  ------------------
  252|      0|		return -errno;
  253|       |
  254|  8.02k|	if (device_locked_verify(cd, fd, device->lh)) {
  ------------------
  |  Branch (254:6): [True: 0, False: 8.02k]
  ------------------
  255|       |		/* fd doesn't correspond to a locked resource */
  256|      0|		close(fd);
  257|      0|		log_dbg(cd, "Failed to verify lock resource for device %s.", device_path(device));
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  258|      0|		return -EINVAL;
  259|      0|	}
  260|       |
  261|  8.02k|	return fd;
  262|  8.02k|}
utils_device.c:device_ready:
  177|  5.94k|{
  178|  5.94k|	int devfd = -1, r = 0;
  179|  5.94k|	struct stat st;
  180|  5.94k|	size_t tmp_size;
  181|       |
  182|  5.94k|	if (!device)
  ------------------
  |  Branch (182:6): [True: 0, False: 5.94k]
  ------------------
  183|      0|		return -EINVAL;
  184|       |
  185|  5.94k|	if (device->o_direct) {
  ------------------
  |  Branch (185:6): [True: 5.94k, False: 0]
  ------------------
  186|  5.94k|		log_dbg(cd, "Trying to open device %s with direct-io.",
  ------------------
  |  |  186|  5.94k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  5.94k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  187|  5.94k|			device_path(device));
  188|  5.94k|		device->o_direct = 0;
  189|  5.94k|		devfd = open(device_path(device), O_RDONLY | O_DIRECT);
  190|  5.94k|		if (devfd >= 0) {
  ------------------
  |  Branch (190:7): [True: 5.94k, False: 0]
  ------------------
  191|  5.94k|			if (device_read_test(cd, devfd) == 0) {
  ------------------
  |  Branch (191:8): [True: 5.94k, False: 0]
  ------------------
  192|  5.94k|				device->o_direct = 1;
  193|  5.94k|			} else {
  194|      0|				close(devfd);
  195|      0|				devfd = -1;
  196|      0|			}
  197|  5.94k|		}
  198|  5.94k|	}
  199|       |
  200|  5.94k|	if (devfd < 0) {
  ------------------
  |  Branch (200:6): [True: 0, False: 5.94k]
  ------------------
  201|      0|		log_dbg(cd, "Trying to open device %s without direct-io.",
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  202|      0|			device_path(device));
  203|      0|		devfd = open(device_path(device), O_RDONLY);
  204|      0|	}
  205|       |
  206|  5.94k|	if (devfd < 0) {
  ------------------
  |  Branch (206:6): [True: 0, False: 5.94k]
  ------------------
  207|      0|		log_err(cd, _("Device %s does not exist or access denied."),
  ------------------
  |  |  189|      0|#define log_err(c, x...) crypt_logf(c, CRYPT_LOG_ERROR, x)
  |  |  ------------------
  |  |  |  |  176|      0|#define CRYPT_LOG_ERROR  1
  |  |  ------------------
  ------------------
  208|      0|			device_path(device));
  209|      0|		return -EINVAL;
  210|      0|	}
  211|       |
  212|  5.94k|	if (fstat(devfd, &st) < 0)
  ------------------
  |  Branch (212:6): [True: 0, False: 5.94k]
  ------------------
  213|      0|		r = -EINVAL;
  214|  5.94k|	else if (!S_ISBLK(st.st_mode))
  ------------------
  |  Branch (214:11): [True: 5.94k, False: 0]
  ------------------
  215|  5.94k|		r = S_ISREG(st.st_mode) ? -ENOTBLK : -EINVAL;
  ------------------
  |  Branch (215:7): [True: 5.94k, False: 0]
  ------------------
  216|  5.94k|	if (r == -EINVAL) {
  ------------------
  |  Branch (216:6): [True: 0, False: 5.94k]
  ------------------
  217|      0|		log_err(cd, _("Device %s is not compatible."),
  ------------------
  |  |  189|      0|#define log_err(c, x...) crypt_logf(c, CRYPT_LOG_ERROR, x)
  |  |  ------------------
  |  |  |  |  176|      0|#define CRYPT_LOG_ERROR  1
  |  |  ------------------
  ------------------
  218|      0|			device_path(device));
  219|      0|		close(devfd);
  220|      0|		return r;
  221|      0|	}
  222|       |
  223|       |	/* Allow only increase (loop device) */
  224|  5.94k|	tmp_size = device_alignment_fd(devfd);
  225|  5.94k|	if (tmp_size > device->alignment)
  ------------------
  |  Branch (225:6): [True: 5.94k, False: 0]
  ------------------
  226|  5.94k|		device->alignment = tmp_size;
  227|       |
  228|  5.94k|	tmp_size = device_block_size_fd(devfd, NULL);
  229|  5.94k|	if (tmp_size > device->block_size)
  ------------------
  |  Branch (229:6): [True: 5.94k, False: 0]
  ------------------
  230|  5.94k|		device->block_size = tmp_size;
  231|       |
  232|  5.94k|	close(devfd);
  233|  5.94k|	return r;
  234|  5.94k|}
utils_device.c:device_read_test:
  131|  5.94k|{
  132|  5.94k|	char buffer[512];
  133|  5.94k|	int r;
  134|  5.94k|	size_t minsize = 0, blocksize, alignment;
  135|  5.94k|	struct stat st;
  136|       |
  137|       |	/* skip check for block devices, direct-io must work there  */
  138|  5.94k|	if (fstat(devfd, &st) < 0)
  ------------------
  |  Branch (138:6): [True: 0, False: 5.94k]
  ------------------
  139|      0|		return -EINVAL;
  140|       |
  141|  5.94k|	if (S_ISBLK(st.st_mode))
  ------------------
  |  Branch (141:6): [True: 0, False: 5.94k]
  ------------------
  142|      0|		return 0;
  143|       |
  144|  5.94k|	blocksize = device_block_size_fd(devfd, &minsize);
  145|  5.94k|	alignment = device_alignment_fd(devfd);
  146|       |
  147|  5.94k|	if (!blocksize || !alignment)
  ------------------
  |  Branch (147:6): [True: 0, False: 5.94k]
  |  Branch (147:20): [True: 0, False: 5.94k]
  ------------------
  148|      0|		return -EINVAL;
  149|       |
  150|  5.94k|	if (minsize == 0)
  ------------------
  |  Branch (150:6): [True: 0, False: 5.94k]
  ------------------
  151|      0|		return 0;
  152|       |
  153|  5.94k|	if (minsize > sizeof(buffer))
  ------------------
  |  Branch (153:6): [True: 5.94k, False: 0]
  ------------------
  154|  5.94k|		minsize = sizeof(buffer);
  155|       |
  156|  5.94k|	if (read_lseek_blockwise(devfd, blocksize, alignment, buffer, minsize, 0) == (ssize_t)minsize) {
  ------------------
  |  Branch (156:6): [True: 5.94k, False: 0]
  ------------------
  157|  5.94k|		log_dbg(cd, "Direct-io read works.");
  ------------------
  |  |  186|  5.94k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  5.94k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  158|  5.94k|		r = 0;
  159|  5.94k|	} else {
  160|      0|		log_dbg(cd, "Direct-io read failed.");
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  161|      0|		r = -EIO;
  162|      0|	}
  163|       |
  164|  5.94k|	crypt_safe_memzero(buffer, sizeof(buffer));
  165|  5.94k|	return r;
  166|  5.94k|}
utils_device.c:device_block_size_fd:
   67|  11.8k|{
   68|  11.8k|	struct stat st;
   69|  11.8k|	size_t bsize;
   70|  11.8k|	int arg;
   71|       |
   72|  11.8k|	if (fstat(fd, &st) < 0)
  ------------------
  |  Branch (72:6): [True: 0, False: 11.8k]
  ------------------
   73|      0|		return 0;
   74|       |
   75|  11.8k|	if (S_ISREG(st.st_mode))
  ------------------
  |  Branch (75:6): [True: 11.8k, False: 0]
  ------------------
   76|  11.8k|		bsize = device_fs_block_size_fd(fd);
   77|      0|	else {
   78|      0|		if (ioctl(fd, BLKSSZGET, &arg) < 0)
  ------------------
  |  Branch (78:7): [True: 0, False: 0]
  ------------------
   79|      0|			bsize = crypt_getpagesize();
   80|      0|		else
   81|      0|			bsize = (size_t)arg;
   82|      0|	}
   83|       |
   84|  11.8k|	if (!min_size)
  ------------------
  |  Branch (84:6): [True: 5.94k, False: 5.94k]
  ------------------
   85|  5.94k|		return bsize;
   86|       |
   87|  5.94k|	if (S_ISREG(st.st_mode)) {
  ------------------
  |  Branch (87:6): [True: 5.94k, False: 0]
  ------------------
   88|       |		/* file can be empty as well */
   89|  5.94k|		if (st.st_size > (ssize_t)bsize)
  ------------------
  |  Branch (89:7): [True: 5.94k, False: 0]
  ------------------
   90|  5.94k|			*min_size = bsize;
   91|      0|		else
   92|      0|			*min_size = st.st_size;
   93|  5.94k|	} else {
   94|       |		/* block device must have at least one block */
   95|      0|		*min_size = bsize;
   96|      0|	}
   97|       |
   98|  5.94k|	return bsize;
   99|  11.8k|}
utils_device.c:device_fs_block_size_fd:
   50|  11.8k|{
   51|  11.8k|	size_t max_size = MAX_SECTOR_SIZE;
  ------------------
  |  |   40|  11.8k|#define MAX_SECTOR_SIZE 4096 /* min page size among all platforms */
  ------------------
   52|       |
   53|  11.8k|#if HAVE_SYS_STATVFS_H
   54|  11.8k|	struct statvfs buf;
   55|       |
   56|       |	/*
   57|       |	 * NOTE: some filesystems (NFS) returns bogus blocksize (1MB).
   58|       |	 * Page-size io should always work and avoids increasing IO beyond aligned LUKS header.
   59|       |	 */
   60|  11.8k|	if (!fstatvfs(fd, &buf) && buf.f_bsize && buf.f_bsize <= max_size)
  ------------------
  |  Branch (60:6): [True: 11.8k, False: 0]
  |  Branch (60:29): [True: 11.8k, False: 0]
  |  Branch (60:44): [True: 11.8k, False: 0]
  ------------------
   61|  11.8k|		return (size_t)buf.f_bsize;
   62|      0|#endif
   63|      0|	return max_size;
   64|  11.8k|}
utils_device.c:device_alignment_fd:
  119|  11.8k|{
  120|  11.8k|	long alignment = DEFAULT_MEM_ALIGNMENT;
  ------------------
  |  |   49|  11.8k|#define DEFAULT_MEM_ALIGNMENT	4096
  ------------------
  121|       |
  122|  11.8k|#ifdef _PC_REC_XFER_ALIGN
  123|  11.8k|	alignment = fpathconf(devfd, _PC_REC_XFER_ALIGN);
  124|  11.8k|	if (alignment < 0)
  ------------------
  |  Branch (124:6): [True: 0, False: 11.8k]
  ------------------
  125|      0|		alignment = DEFAULT_MEM_ALIGNMENT;
  ------------------
  |  |   49|      0|#define DEFAULT_MEM_ALIGNMENT	4096
  ------------------
  126|  11.8k|#endif
  127|  11.8k|	return (size_t)alignment;
  128|  11.8k|}

device_locked:
  249|  75.3k|{
  250|  75.3k|	return (h && (h->type == DEV_LOCK_READ || h->type == DEV_LOCK_WRITE));
  ------------------
  |  Branch (250:10): [True: 59.3k, False: 16.0k]
  |  Branch (250:16): [True: 45.2k, False: 14.0k]
  |  Branch (250:44): [True: 14.0k, False: 0]
  ------------------
  251|  75.3k|}
device_locked_readonly:
  254|  14.3k|{
  255|  14.3k|	return (h && h->type == DEV_LOCK_READ);
  ------------------
  |  Branch (255:10): [True: 14.3k, False: 0]
  |  Branch (255:15): [True: 8.02k, False: 6.27k]
  ------------------
  256|  14.3k|}
device_read_lock_internal:
  345|  5.93k|{
  346|  5.93k|	int r;
  347|  5.93k|	struct crypt_lock_handle *h;
  348|       |
  349|  5.93k|	if (!device)
  ------------------
  |  Branch (349:6): [True: 0, False: 5.93k]
  ------------------
  350|      0|		return -EINVAL;
  351|       |
  352|  5.93k|	h = device_get_lock_handle(device);
  353|       |
  354|  5.93k|	if (device_locked(h)) {
  ------------------
  |  Branch (354:6): [True: 0, False: 5.93k]
  ------------------
  355|      0|		device_lock_inc(h);
  356|      0|		log_dbg(cd, "Device %s READ lock (or higher) already held.", device_path(device));
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  357|      0|		return 0;
  358|      0|	}
  359|       |
  360|  5.93k|	log_dbg(cd, "Acquiring read lock for device %s.", device_path(device));
  ------------------
  |  |  186|  5.93k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  5.93k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  361|       |
  362|  5.93k|	r = acquire_and_verify(cd, device, NULL, LOCK_SH, &h);
  363|  5.93k|	if (r < 0)
  ------------------
  |  Branch (363:6): [True: 0, False: 5.93k]
  ------------------
  364|      0|		return r;
  365|       |
  366|  5.93k|	h->type = DEV_LOCK_READ;
  367|  5.93k|	h->refcnt = 1;
  368|  5.93k|	device_set_lock_handle(device, h);
  369|       |
  370|  5.93k|	log_dbg(cd, "Device %s READ lock taken.", device_path(device));
  ------------------
  |  |  186|  5.93k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  5.93k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  371|       |
  372|  5.93k|	return 0;
  373|  5.93k|}
device_write_lock_internal:
  376|  2.09k|{
  377|  2.09k|	int r;
  378|  2.09k|	struct crypt_lock_handle *h;
  379|       |
  380|  2.09k|	if (!device)
  ------------------
  |  Branch (380:6): [True: 0, False: 2.09k]
  ------------------
  381|      0|		return -EINVAL;
  382|       |
  383|  2.09k|	h = device_get_lock_handle(device);
  384|       |
  385|  2.09k|	if (device_locked(h)) {
  ------------------
  |  Branch (385:6): [True: 0, False: 2.09k]
  ------------------
  386|      0|		log_dbg(cd, "Device %s WRITE lock already held.", device_path(device));
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  387|      0|		return device_lock_inc(h);
  388|      0|	}
  389|       |
  390|  2.09k|	log_dbg(cd, "Acquiring write lock for device %s.", device_path(device));
  ------------------
  |  |  186|  2.09k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  2.09k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  391|       |
  392|  2.09k|	r = acquire_and_verify(cd, device, NULL, LOCK_EX, &h);
  393|  2.09k|	if (r < 0)
  ------------------
  |  Branch (393:6): [True: 0, False: 2.09k]
  ------------------
  394|      0|		return r;
  395|       |
  396|  2.09k|	h->type = DEV_LOCK_WRITE;
  397|  2.09k|	h->refcnt = 1;
  398|  2.09k|	device_set_lock_handle(device, h);
  399|       |
  400|  2.09k|	log_dbg(cd, "Device %s WRITE lock taken.", device_path(device));
  ------------------
  |  |  186|  2.09k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  2.09k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  401|       |
  402|  2.09k|	return 1;
  403|  2.09k|}
device_unlock_internal:
  452|  8.02k|{
  453|  8.02k|	bool readonly;
  454|  8.02k|	struct crypt_lock_handle *h = device_get_lock_handle(device);
  455|  8.02k|	unsigned u = device_lock_dec(h);
  456|       |
  457|  8.02k|	if (u)
  ------------------
  |  Branch (457:6): [True: 0, False: 8.02k]
  ------------------
  458|      0|		return;
  459|       |
  460|  8.02k|	readonly = device_locked_readonly(h);
  461|       |
  462|  8.02k|	unlock_internal(cd, h);
  463|       |
  464|  8.02k|	log_dbg(cd, "Device %s %s lock released.", device_path(device),
  ------------------
  |  |  186|  16.0k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  8.02k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  |  |  |  Branch (186:57): [True: 5.93k, False: 2.09k]
  |  |  ------------------
  ------------------
  465|  8.02k|		readonly ? "READ" : "WRITE");
  466|       |
  467|       |	device_set_lock_handle(device, NULL);
  468|  8.02k|}
device_locked_verify:
  471|  8.02k|{
  472|  8.02k|	char res[PATH_MAX];
  473|  8.02k|	struct stat dev_st, lck_st, st;
  474|       |
  475|  8.02k|	if (fstat(dev_fd, &dev_st) || fstat(h->flock_fd, &lck_st))
  ------------------
  |  Branch (475:6): [True: 0, False: 8.02k]
  |  Branch (475:32): [True: 0, False: 8.02k]
  ------------------
  476|      0|		return 1;
  477|       |
  478|       |	/* if device handle is regular file the handle must match the lock handle */
  479|  8.02k|	if (S_ISREG(dev_st.st_mode)) {
  ------------------
  |  Branch (479:6): [True: 8.02k, False: 0]
  ------------------
  480|  8.02k|		log_dbg(cd, "Verifying locked device handle (regular file)");
  ------------------
  |  |  186|  8.02k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  8.02k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  481|  8.02k|		if (!same_inode(dev_st, lck_st))
  ------------------
  |  |   27|  8.02k|	((buf1).st_ino == (buf2).st_ino && \
  |  |  ------------------
  |  |  |  Branch (27:3): [True: 8.02k, False: 0]
  |  |  ------------------
  |  |   28|  8.02k|	 (buf1).st_dev == (buf2).st_dev)
  |  |  ------------------
  |  |  |  Branch (28:3): [True: 8.02k, False: 0]
  |  |  ------------------
  ------------------
  482|      0|			return 1;
  483|  8.02k|	} else if (S_ISBLK(dev_st.st_mode)) {
  ------------------
  |  Branch (483:13): [True: 0, False: 0]
  ------------------
  484|      0|		log_dbg(cd, "Verifying locked device handle (bdev)");
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  485|      0|		if (resource_by_devno(res, sizeof(res), dev_st.st_rdev, 1) ||
  ------------------
  |  Branch (485:7): [True: 0, False: 0]
  ------------------
  486|      0|		    stat(res, &st) ||
  ------------------
  |  Branch (486:7): [True: 0, False: 0]
  ------------------
  487|      0|		    !same_inode(lck_st, st))
  ------------------
  |  |   27|      0|	((buf1).st_ino == (buf2).st_ino && \
  |  |  ------------------
  |  |  |  Branch (27:3): [True: 0, False: 0]
  |  |  ------------------
  |  |   28|      0|	 (buf1).st_dev == (buf2).st_dev)
  |  |  ------------------
  |  |  |  Branch (28:3): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  488|      0|			return 1;
  489|      0|	} else
  490|      0|		return 1;
  491|       |
  492|  8.02k|	return 0;
  493|  8.02k|}
utils_device_locking.c:acquire_and_verify:
  297|  8.02k|{
  298|  8.02k|	int r;
  299|  8.02k|	struct crypt_lock_handle *h;
  300|       |
  301|  8.02k|	if (device && resource)
  ------------------
  |  Branch (301:6): [True: 8.02k, False: 0]
  |  Branch (301:16): [True: 0, False: 8.02k]
  ------------------
  302|      0|		return -EINVAL;
  303|       |
  304|  8.02k|	if (!(h = malloc(sizeof(*h))))
  ------------------
  |  Branch (304:6): [True: 0, False: 8.02k]
  ------------------
  305|      0|		return -ENOMEM;
  306|       |
  307|  8.02k|	do {
  308|  8.02k|		r = device ? acquire_lock_handle(cd, device, h) : acquire_lock_handle_by_name(cd, resource, h);
  ------------------
  |  Branch (308:7): [True: 8.02k, False: 0]
  ------------------
  309|  8.02k|		if (r < 0)
  ------------------
  |  Branch (309:7): [True: 0, False: 8.02k]
  ------------------
  310|      0|			break;
  311|       |
  312|  8.02k|		if (flock(h->flock_fd, flock_op)) {
  ------------------
  |  Branch (312:7): [True: 0, False: 8.02k]
  ------------------
  313|      0|			log_dbg(cd, "Flock on fd %d failed with errno %d.", h->flock_fd, errno);
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  314|      0|			r = (errno == EWOULDBLOCK) ? -EBUSY : -EINVAL;
  ------------------
  |  Branch (314:8): [True: 0, False: 0]
  ------------------
  315|      0|			release_lock_handle(cd, h);
  316|      0|			break;
  317|      0|		}
  318|       |
  319|  8.02k|		log_dbg(cd, "Verifying lock handle for %s.", device ? device_path(device) : resource);
  ------------------
  |  |  186|  16.0k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  8.02k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  |  |  |  Branch (186:57): [True: 8.02k, False: 0]
  |  |  ------------------
  ------------------
  320|       |
  321|       |		/*
  322|       |		 * check whether another libcryptsetup process removed resource file before this
  323|       |		 * one managed to flock() it. See release_lock_handle() for details
  324|       |		 */
  325|  8.02k|		r = verify_lock_handle(h);
  326|  8.02k|		if (r < 0) {
  ------------------
  |  Branch (326:7): [True: 0, False: 8.02k]
  ------------------
  327|      0|			if (flock(h->flock_fd, LOCK_UN))
  ------------------
  |  Branch (327:8): [True: 0, False: 0]
  ------------------
  328|      0|				log_dbg(cd, "flock on fd %d failed.", h->flock_fd);
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  329|      0|			release_lock_handle(cd, h);
  330|      0|			log_dbg(cd, "Lock handle verification failed.");
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  331|      0|		}
  332|  8.02k|	} while (r == -EAGAIN);
  ------------------
  |  Branch (332:11): [True: 0, False: 8.02k]
  ------------------
  333|       |
  334|  8.02k|	if (r < 0) {
  ------------------
  |  Branch (334:6): [True: 0, False: 8.02k]
  ------------------
  335|      0|		free(h);
  336|      0|		return r;
  337|      0|	}
  338|       |
  339|  8.02k|	*lock = h;
  340|       |
  341|  8.02k|	return 0;
  342|  8.02k|}
utils_device_locking.c:acquire_lock_handle:
  133|  8.02k|{
  134|  8.02k|	char res[PATH_MAX];
  135|  8.02k|	int dev_fd, fd;
  136|  8.02k|	struct stat st;
  137|       |
  138|  8.02k|	assert(device);
  ------------------
  |  Branch (138:2): [True: 0, False: 8.02k]
  |  Branch (138:2): [True: 8.02k, False: 0]
  ------------------
  139|  8.02k|	assert(h);
  ------------------
  |  Branch (139:2): [True: 0, False: 8.02k]
  |  Branch (139:2): [True: 8.02k, False: 0]
  ------------------
  140|       |
  141|  8.02k|	dev_fd = open(device_path(device), O_RDONLY | O_NONBLOCK | O_CLOEXEC);
  142|  8.02k|	if (dev_fd < 0)
  ------------------
  |  Branch (142:6): [True: 0, False: 8.02k]
  ------------------
  143|      0|		return -EINVAL;
  144|       |
  145|  8.02k|	if (fstat(dev_fd, &st)) {
  ------------------
  |  Branch (145:6): [True: 0, False: 8.02k]
  ------------------
  146|      0|		close(dev_fd);
  147|      0|		return -EINVAL;
  148|      0|	}
  149|       |
  150|  8.02k|	if (S_ISBLK(st.st_mode)) {
  ------------------
  |  Branch (150:6): [True: 0, False: 8.02k]
  ------------------
  151|      0|		if (resource_by_devno(res, sizeof(res), st.st_rdev, 0)) {
  ------------------
  |  Branch (151:7): [True: 0, False: 0]
  ------------------
  152|      0|			close(dev_fd);
  153|      0|			return -EINVAL;
  154|      0|		}
  155|       |
  156|      0|		fd = open_resource(cd, res);
  157|      0|		close(dev_fd);
  158|      0|		if (fd < 0)
  ------------------
  |  Branch (158:7): [True: 0, False: 0]
  ------------------
  159|      0|			return fd;
  160|       |
  161|      0|		h->flock_fd = fd;
  162|      0|		h->u.bdev.devno = st.st_rdev;
  163|      0|		h->mode = DEV_LOCK_BDEV;
  164|  8.02k|	} else if (S_ISREG(st.st_mode)) {
  ------------------
  |  Branch (164:13): [True: 8.02k, False: 0]
  ------------------
  165|       |		/* workaround for nfsv4 */
  166|  8.02k|		fd = open(device_path(device), O_RDWR | O_NONBLOCK | O_CLOEXEC);
  167|  8.02k|		if (fd < 0)
  ------------------
  |  Branch (167:7): [True: 0, False: 8.02k]
  ------------------
  168|      0|			h->flock_fd = dev_fd;
  169|  8.02k|		else {
  170|  8.02k|			h->flock_fd = fd;
  171|  8.02k|			close(dev_fd);
  172|  8.02k|		}
  173|  8.02k|		h->mode = DEV_LOCK_FILE;
  174|  8.02k|	} else {
  175|       |		/* Wrong device type */
  176|      0|		close(dev_fd);
  177|      0|		return -EINVAL;
  178|      0|	}
  179|       |
  180|  8.02k|	return 0;
  181|  8.02k|}
utils_device_locking.c:release_lock_handle:
  213|  8.02k|{
  214|  8.02k|	char res[PATH_MAX];
  215|  8.02k|	struct stat buf_a, buf_b;
  216|       |
  217|  8.02k|	assert(h);
  ------------------
  |  Branch (217:2): [True: 0, False: 8.02k]
  |  Branch (217:2): [True: 8.02k, False: 0]
  ------------------
  218|       |
  219|  8.02k|	if ((h->mode == DEV_LOCK_NAME) && /* was it name lock */
  ------------------
  |  Branch (219:6): [True: 0, False: 8.02k]
  ------------------
  220|      0|	    !flock(h->flock_fd, LOCK_EX | LOCK_NB) && /* lock to drop the file */
  ------------------
  |  Branch (220:6): [True: 0, False: 0]
  ------------------
  221|      0|	    !resource_by_name(res, sizeof(res), h->u.name.name, true) && /* acquire lock resource name */
  ------------------
  |  Branch (221:6): [True: 0, False: 0]
  ------------------
  222|      0|	    !fstat(h->flock_fd, &buf_a) && /* read inode id referred by fd */
  ------------------
  |  Branch (222:6): [True: 0, False: 0]
  ------------------
  223|      0|	    !stat(res, &buf_b) && /* does path file still exist? */
  ------------------
  |  Branch (223:6): [True: 0, False: 0]
  ------------------
  224|      0|	    same_inode(buf_a, buf_b)) { /* is it same id as the one referenced by fd? */
  ------------------
  |  |   27|      0|	((buf1).st_ino == (buf2).st_ino && \
  |  |  ------------------
  |  |  |  Branch (27:3): [True: 0, False: 0]
  |  |  ------------------
  |  |   28|      0|	 (buf1).st_dev == (buf2).st_dev)
  |  |  ------------------
  |  |  |  Branch (28:3): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  225|       |		/* coverity[toctou] */
  226|      0|		if (unlink(res)) /* yes? unlink the file. lgtm[cpp/toctou-race-condition] */
  ------------------
  |  Branch (226:7): [True: 0, False: 0]
  ------------------
  227|      0|			log_dbg(cd, "Failed to unlink resource file: %s", res);
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  228|      0|	}
  229|       |
  230|  8.02k|	if ((h->mode == DEV_LOCK_BDEV) && /* was it block device */
  ------------------
  |  Branch (230:6): [True: 0, False: 8.02k]
  ------------------
  231|      0|	    !flock(h->flock_fd, LOCK_EX | LOCK_NB) && /* lock to drop the file */
  ------------------
  |  Branch (231:6): [True: 0, False: 0]
  ------------------
  232|      0|	    !resource_by_devno(res, sizeof(res), h->u.bdev.devno, 1) && /* acquire lock resource name */
  ------------------
  |  Branch (232:6): [True: 0, False: 0]
  ------------------
  233|      0|	    !fstat(h->flock_fd, &buf_a) && /* read inode id referred by fd */
  ------------------
  |  Branch (233:6): [True: 0, False: 0]
  ------------------
  234|      0|	    !stat(res, &buf_b) && /* does path file still exist? */
  ------------------
  |  Branch (234:6): [True: 0, False: 0]
  ------------------
  235|      0|	    same_inode(buf_a, buf_b)) { /* is it same id as the one referenced by fd? */
  ------------------
  |  |   27|      0|	((buf1).st_ino == (buf2).st_ino && \
  |  |  ------------------
  |  |  |  Branch (27:3): [True: 0, False: 0]
  |  |  ------------------
  |  |   28|      0|	 (buf1).st_dev == (buf2).st_dev)
  |  |  ------------------
  |  |  |  Branch (28:3): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  236|       |		/* coverity[toctou] */
  237|      0|		if (unlink(res)) /* yes? unlink the file. lgtm[cpp/toctou-race-condition] */
  ------------------
  |  Branch (237:7): [True: 0, False: 0]
  ------------------
  238|      0|			log_dbg(cd, "Failed to unlink resource file: %s", res);
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  239|      0|	}
  240|       |
  241|  8.02k|	if (h->mode == DEV_LOCK_NAME)
  ------------------
  |  Branch (241:6): [True: 0, False: 8.02k]
  ------------------
  242|      0|		free(h->u.name.name);
  243|       |
  244|  8.02k|	if (close(h->flock_fd))
  ------------------
  |  Branch (244:6): [True: 0, False: 8.02k]
  ------------------
  245|      0|		log_dbg(cd, "Failed to close lock resource fd (%d).", h->flock_fd);
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  246|  8.02k|}
utils_device_locking.c:verify_lock_handle:
  259|  8.02k|{
  260|  8.02k|	char res[PATH_MAX];
  261|  8.02k|	struct stat lck_st, res_st;
  262|       |
  263|  8.02k|	assert(h);
  ------------------
  |  Branch (263:2): [True: 0, False: 8.02k]
  |  Branch (263:2): [True: 8.02k, False: 0]
  ------------------
  264|       |
  265|       |	/* we locked a regular file, check during device_open() instead. No reason to check now */
  266|  8.02k|	if (h->mode == DEV_LOCK_FILE)
  ------------------
  |  Branch (266:6): [True: 8.02k, False: 0]
  ------------------
  267|  8.02k|		return 0;
  268|       |
  269|      0|	if (h->mode == DEV_LOCK_NAME) {
  ------------------
  |  Branch (269:6): [True: 0, False: 0]
  ------------------
  270|      0|		if (resource_by_name(res, sizeof(res), h->u.name.name, true))
  ------------------
  |  Branch (270:7): [True: 0, False: 0]
  ------------------
  271|      0|			return -EINVAL;
  272|      0|	} else if (h->mode == DEV_LOCK_BDEV) {
  ------------------
  |  Branch (272:13): [True: 0, False: 0]
  ------------------
  273|      0|		if (resource_by_devno(res, sizeof(res), h->u.bdev.devno, true))
  ------------------
  |  Branch (273:7): [True: 0, False: 0]
  ------------------
  274|      0|			return -EINVAL;
  275|      0|	} else
  276|      0|		return -EINVAL;
  277|       |
  278|      0|	if (fstat(h->flock_fd, &lck_st))
  ------------------
  |  Branch (278:6): [True: 0, False: 0]
  ------------------
  279|      0|		return -EINVAL;
  280|       |
  281|      0|	return (stat(res, &res_st) || !same_inode(lck_st, res_st)) ? -EAGAIN : 0;
  ------------------
  |  |   27|      0|	((buf1).st_ino == (buf2).st_ino && \
  |  |  ------------------
  |  |  |  Branch (27:3): [True: 0, False: 0]
  |  |  ------------------
  |  |   28|      0|	 (buf1).st_dev == (buf2).st_dev)
  |  |  ------------------
  |  |  |  Branch (28:3): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (281:10): [True: 0, False: 0]
  ------------------
  282|      0|}
utils_device_locking.c:device_lock_dec:
  290|  8.02k|{
  291|  8.02k|	assert(h->refcnt);
  ------------------
  |  Branch (291:2): [True: 0, False: 8.02k]
  |  Branch (291:2): [True: 8.02k, False: 0]
  ------------------
  292|       |
  293|  8.02k|	return --h->refcnt;
  294|  8.02k|}
utils_device_locking.c:unlock_internal:
  430|  8.02k|{
  431|  8.02k|	if (flock(h->flock_fd, LOCK_UN))
  ------------------
  |  Branch (431:6): [True: 0, False: 8.02k]
  ------------------
  432|      0|		log_dbg(cd, "flock on fd %d failed.", h->flock_fd);
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  433|  8.02k|	release_lock_handle(cd, h);
  434|  8.02k|	free(h);
  435|  8.02k|}

read_buffer:
   45|  70.1k|{
   46|       |	return _read_buffer(fd, buf, length, NULL);
   47|  70.1k|}
write_buffer:
   78|  12.2k|{
   79|       |	return _write_buffer(fd, buf, length, NULL);
   80|  12.2k|}
write_blockwise:
   89|  6.27k|{
   90|  6.27k|	void *hangover_buf = NULL, *buf = NULL;
   91|  6.27k|	size_t hangover, solid;
   92|  6.27k|	ssize_t r, ret = -1;
   93|       |
   94|  6.27k|	if (fd == -1 || !orig_buf || !bsize || !alignment)
  ------------------
  |  Branch (94:6): [True: 0, False: 6.27k]
  |  Branch (94:18): [True: 0, False: 6.27k]
  |  Branch (94:31): [True: 0, False: 6.27k]
  |  Branch (94:41): [True: 0, False: 6.27k]
  ------------------
   95|      0|		return -1;
   96|       |
   97|  6.27k|	hangover = length % bsize;
   98|  6.27k|	solid = length - hangover;
   99|       |
  100|  6.27k|	if ((size_t)orig_buf & (alignment - 1)) {
  ------------------
  |  Branch (100:6): [True: 6.25k, False: 19]
  ------------------
  101|  6.25k|		if (posix_memalign(&buf, alignment, length))
  ------------------
  |  Branch (101:7): [True: 0, False: 6.25k]
  ------------------
  102|      0|			return -1;
  103|  6.25k|		memcpy(buf, orig_buf, length);
  104|  6.25k|	} else
  105|     19|		buf = orig_buf;
  106|       |
  107|  6.27k|	if (solid) {
  ------------------
  |  Branch (107:6): [True: 6.27k, False: 0]
  ------------------
  108|  6.27k|		r = write_buffer(fd, buf, solid);
  109|  6.27k|		if (r < 0 || r != (ssize_t)solid)
  ------------------
  |  Branch (109:7): [True: 0, False: 6.27k]
  |  Branch (109:16): [True: 0, False: 6.27k]
  ------------------
  110|      0|			goto out;
  111|  6.27k|	}
  112|       |
  113|  6.27k|	if (hangover) {
  ------------------
  |  Branch (113:6): [True: 0, False: 6.27k]
  ------------------
  114|      0|		if (posix_memalign(&hangover_buf, alignment, bsize))
  ------------------
  |  Branch (114:7): [True: 0, False: 0]
  ------------------
  115|      0|			goto out;
  116|      0|		memset(hangover_buf, 0, bsize);
  117|       |
  118|      0|		r = read_buffer(fd, hangover_buf, bsize);
  119|      0|		if (r < 0)
  ------------------
  |  Branch (119:7): [True: 0, False: 0]
  ------------------
  120|      0|			goto out;
  121|       |
  122|      0|		if (lseek(fd, -(off_t)r, SEEK_CUR) < 0)
  ------------------
  |  Branch (122:7): [True: 0, False: 0]
  ------------------
  123|      0|			goto out;
  124|       |
  125|      0|		memcpy(hangover_buf, (char*)buf + solid, hangover);
  126|       |
  127|      0|		r = write_buffer(fd, hangover_buf, bsize);
  128|      0|		if (r < 0 || r < (ssize_t)hangover)
  ------------------
  |  Branch (128:7): [True: 0, False: 0]
  |  Branch (128:16): [True: 0, False: 0]
  ------------------
  129|      0|			goto out;
  130|      0|	}
  131|  6.27k|	ret = length;
  132|  6.27k|out:
  133|  6.27k|	free(hangover_buf);
  134|  6.27k|	if (buf != orig_buf)
  ------------------
  |  Branch (134:6): [True: 6.25k, False: 19]
  ------------------
  135|  6.25k|		free(buf);
  136|  6.27k|	return ret;
  137|  6.27k|}
read_blockwise:
  141|  56.8k|{
  142|  56.8k|	void *hangover_buf = NULL, *buf = NULL;
  143|  56.8k|	size_t hangover, solid;
  144|  56.8k|	ssize_t r, ret = -1;
  145|       |
  146|  56.8k|	if (fd == -1 || !orig_buf || !bsize || !alignment)
  ------------------
  |  Branch (146:6): [True: 0, False: 56.8k]
  |  Branch (146:18): [True: 0, False: 56.8k]
  |  Branch (146:31): [True: 0, False: 56.8k]
  |  Branch (146:41): [True: 0, False: 56.8k]
  ------------------
  147|      0|		return -1;
  148|       |
  149|  56.8k|	hangover = length % bsize;
  150|  56.8k|	solid = length - hangover;
  151|       |
  152|  56.8k|	if ((size_t)orig_buf & (alignment - 1)) {
  ------------------
  |  Branch (152:6): [True: 56.1k, False: 647]
  ------------------
  153|  56.1k|		if (posix_memalign(&buf, alignment, length))
  ------------------
  |  Branch (153:7): [True: 0, False: 56.1k]
  ------------------
  154|      0|			return -1;
  155|  56.1k|	} else
  156|    647|		buf = orig_buf;
  157|       |
  158|  56.8k|	r = read_buffer(fd, buf, solid);
  159|  56.8k|	if (r < 0 || r != (ssize_t)solid)
  ------------------
  |  Branch (159:6): [True: 0, False: 56.8k]
  |  Branch (159:15): [True: 0, False: 56.8k]
  ------------------
  160|      0|		goto out;
  161|       |
  162|  56.8k|	if (hangover) {
  ------------------
  |  Branch (162:6): [True: 13.1k, False: 43.7k]
  ------------------
  163|  13.1k|		if (posix_memalign(&hangover_buf, alignment, bsize))
  ------------------
  |  Branch (163:7): [True: 0, False: 13.1k]
  ------------------
  164|      0|			goto out;
  165|  13.1k|		r = read_buffer(fd, hangover_buf, bsize);
  166|  13.1k|		if (r <  0 || r < (ssize_t)hangover)
  ------------------
  |  Branch (166:7): [True: 0, False: 13.1k]
  |  Branch (166:17): [True: 0, False: 13.1k]
  ------------------
  167|      0|			goto out;
  168|       |
  169|  13.1k|		memcpy((char *)buf + solid, hangover_buf, hangover);
  170|  13.1k|	}
  171|  56.8k|	ret = length;
  172|  56.8k|out:
  173|  56.8k|	free(hangover_buf);
  174|  56.8k|	if (buf != orig_buf) {
  ------------------
  |  Branch (174:6): [True: 56.1k, False: 647]
  ------------------
  175|  56.1k|		if (ret != -1)
  ------------------
  |  Branch (175:7): [True: 56.1k, False: 0]
  ------------------
  176|  56.1k|			memcpy(orig_buf, buf, length);
  177|  56.1k|		free(buf);
  178|  56.1k|	}
  179|  56.8k|	return ret;
  180|  56.8k|}
write_lseek_blockwise:
  190|  6.27k|{
  191|  6.27k|	void *frontPadBuf = NULL;
  192|  6.27k|	size_t frontHang, innerCount = 0;
  193|  6.27k|	ssize_t r, ret = -1;
  194|       |
  195|  6.27k|	if (fd == -1 || !buf || !bsize || !alignment)
  ------------------
  |  Branch (195:6): [True: 0, False: 6.27k]
  |  Branch (195:18): [True: 0, False: 6.27k]
  |  Branch (195:26): [True: 0, False: 6.27k]
  |  Branch (195:36): [True: 0, False: 6.27k]
  ------------------
  196|      0|		return -1;
  197|       |
  198|  6.27k|	if (offset < 0)
  ------------------
  |  Branch (198:6): [True: 0, False: 6.27k]
  ------------------
  199|      0|		offset = lseek(fd, offset, SEEK_END);
  200|       |
  201|  6.27k|	if (offset < 0)
  ------------------
  |  Branch (201:6): [True: 0, False: 6.27k]
  ------------------
  202|      0|		return -1;
  203|       |
  204|  6.27k|	frontHang = offset % bsize;
  205|       |
  206|  6.27k|	if (lseek(fd, offset - frontHang, SEEK_SET) < 0)
  ------------------
  |  Branch (206:6): [True: 0, False: 6.27k]
  ------------------
  207|      0|		return -1;
  208|       |
  209|  6.27k|	if (frontHang && length) {
  ------------------
  |  Branch (209:6): [True: 0, False: 6.27k]
  |  Branch (209:19): [True: 0, False: 0]
  ------------------
  210|      0|		if (posix_memalign(&frontPadBuf, alignment, bsize))
  ------------------
  |  Branch (210:7): [True: 0, False: 0]
  ------------------
  211|      0|			return -1;
  212|       |
  213|      0|		innerCount = bsize - frontHang;
  214|      0|		if (innerCount > length)
  ------------------
  |  Branch (214:7): [True: 0, False: 0]
  ------------------
  215|      0|			innerCount = length;
  216|       |
  217|      0|		r = read_buffer(fd, frontPadBuf, bsize);
  218|      0|		if (r < 0 || r < (ssize_t)(frontHang + innerCount))
  ------------------
  |  Branch (218:7): [True: 0, False: 0]
  |  Branch (218:16): [True: 0, False: 0]
  ------------------
  219|      0|			goto out;
  220|       |
  221|      0|		memcpy((char*)frontPadBuf + frontHang, buf, innerCount);
  222|       |
  223|      0|		if (lseek(fd, offset - frontHang, SEEK_SET) < 0)
  ------------------
  |  Branch (223:7): [True: 0, False: 0]
  ------------------
  224|      0|			goto out;
  225|       |
  226|      0|		r = write_buffer(fd, frontPadBuf, bsize);
  227|      0|		if (r < 0 || r != (ssize_t)bsize)
  ------------------
  |  Branch (227:7): [True: 0, False: 0]
  |  Branch (227:16): [True: 0, False: 0]
  ------------------
  228|      0|			goto out;
  229|       |
  230|      0|		buf = (char*)buf + innerCount;
  231|      0|		length -= innerCount;
  232|      0|	}
  233|       |
  234|  6.27k|	ret = length ? write_blockwise(fd, bsize, alignment, buf, length) : 0;
  ------------------
  |  Branch (234:8): [True: 6.27k, False: 0]
  ------------------
  235|  6.27k|	if (ret >= 0)
  ------------------
  |  Branch (235:6): [True: 6.27k, False: 0]
  ------------------
  236|  6.27k|		ret += innerCount;
  237|  6.27k|out:
  238|  6.27k|	free(frontPadBuf);
  239|  6.27k|	return ret;
  240|  6.27k|}
read_lseek_blockwise:
  244|  56.8k|{
  245|  56.8k|	void *frontPadBuf = NULL;
  246|  56.8k|	size_t frontHang, innerCount = 0;
  247|  56.8k|	ssize_t r, ret = -1;
  248|       |
  249|  56.8k|	if (fd == -1 || !buf || bsize <= 0)
  ------------------
  |  Branch (249:6): [True: 0, False: 56.8k]
  |  Branch (249:18): [True: 0, False: 56.8k]
  |  Branch (249:26): [True: 0, False: 56.8k]
  ------------------
  250|      0|		return -1;
  251|       |
  252|  56.8k|	if (offset < 0)
  ------------------
  |  Branch (252:6): [True: 0, False: 56.8k]
  ------------------
  253|      0|		offset = lseek(fd, offset, SEEK_END);
  254|       |
  255|  56.8k|	if (offset < 0)
  ------------------
  |  Branch (255:6): [True: 0, False: 56.8k]
  ------------------
  256|      0|		return -1;
  257|       |
  258|  56.8k|	frontHang = offset % bsize;
  259|       |
  260|  56.8k|	if (lseek(fd, offset - frontHang, SEEK_SET) < 0)
  ------------------
  |  Branch (260:6): [True: 0, False: 56.8k]
  ------------------
  261|      0|		return -1;
  262|       |
  263|  56.8k|	if (frontHang && length) {
  ------------------
  |  Branch (263:6): [True: 201, False: 56.6k]
  |  Branch (263:19): [True: 201, False: 0]
  ------------------
  264|    201|		if (posix_memalign(&frontPadBuf, alignment, bsize))
  ------------------
  |  Branch (264:7): [True: 0, False: 201]
  ------------------
  265|      0|			return -1;
  266|       |
  267|    201|		innerCount = bsize - frontHang;
  268|    201|		if (innerCount > length)
  ------------------
  |  Branch (268:7): [True: 0, False: 201]
  ------------------
  269|      0|			innerCount = length;
  270|       |
  271|    201|		r = read_buffer(fd, frontPadBuf, bsize);
  272|    201|		if (r < 0 || r < (ssize_t)(frontHang + innerCount))
  ------------------
  |  Branch (272:7): [True: 0, False: 201]
  |  Branch (272:16): [True: 0, False: 201]
  ------------------
  273|      0|			goto out;
  274|       |
  275|    201|		memcpy(buf, (char*)frontPadBuf + frontHang, innerCount);
  276|       |
  277|    201|		buf = (char*)buf + innerCount;
  278|    201|		length -= innerCount;
  279|    201|	}
  280|       |
  281|  56.8k|	ret = length ? read_blockwise(fd, bsize, alignment, buf, length) : 0;
  ------------------
  |  Branch (281:8): [True: 56.8k, False: 0]
  ------------------
  282|  56.8k|	if (ret >= 0)
  ------------------
  |  Branch (282:6): [True: 56.8k, False: 0]
  ------------------
  283|  56.8k|		ret += innerCount;
  284|  56.8k|out:
  285|  56.8k|	free(frontPadBuf);
  286|  56.8k|	return ret;
  287|  56.8k|}
utils_io.c:_read_buffer:
   22|  70.1k|{
   23|  70.1k|	ssize_t r, read_size = 0;
   24|       |
   25|  70.1k|	if (fd < 0 || !buf || length > SSIZE_MAX)
  ------------------
  |  Branch (25:6): [True: 0, False: 70.1k]
  |  Branch (25:16): [True: 0, False: 70.1k]
  |  Branch (25:24): [True: 0, False: 70.1k]
  ------------------
   26|      0|		return -EINVAL;
   27|       |
   28|  70.1k|	do {
   29|  70.1k|		r = read(fd, buf, length - read_size);
   30|  70.1k|		if (r == -1 && errno != EINTR)
  ------------------
  |  Branch (30:7): [True: 0, False: 70.1k]
  |  Branch (30:18): [True: 0, False: 0]
  ------------------
   31|      0|			return r;
   32|  70.1k|		if (r > 0) {
  ------------------
  |  Branch (32:7): [True: 58.0k, False: 12.0k]
  ------------------
   33|       |			/* coverity[overflow:FALSE] */
   34|  58.0k|			read_size += r;
   35|  58.0k|			buf = (uint8_t*)buf + r;
   36|  58.0k|		}
   37|  70.1k|		if (r == 0 || (quit && *quit))
  ------------------
  |  Branch (37:7): [True: 12.0k, False: 58.0k]
  |  Branch (37:18): [True: 0, False: 58.0k]
  |  Branch (37:26): [True: 0, False: 0]
  ------------------
   38|  12.0k|			return read_size;
   39|  70.1k|	} while ((size_t)read_size != length);
  ------------------
  |  Branch (39:11): [True: 0, False: 58.0k]
  ------------------
   40|       |
   41|  58.0k|	return (ssize_t)length;
   42|  70.1k|}
utils_io.c:_write_buffer:
   55|  12.2k|{
   56|  12.2k|	ssize_t w, write_size = 0;
   57|       |
   58|  12.2k|	if (fd < 0 || !buf || !length || length > SSIZE_MAX)
  ------------------
  |  Branch (58:6): [True: 0, False: 12.2k]
  |  Branch (58:16): [True: 0, False: 12.2k]
  |  Branch (58:24): [True: 0, False: 12.2k]
  |  Branch (58:35): [True: 0, False: 12.2k]
  ------------------
   59|      0|		return -EINVAL;
   60|       |
   61|  12.2k|	do {
   62|  12.2k|		w = write(fd, buf, length - (size_t)write_size);
   63|  12.2k|		if (w < 0 && errno != EINTR)
  ------------------
  |  Branch (63:7): [True: 0, False: 12.2k]
  |  Branch (63:16): [True: 0, False: 0]
  ------------------
   64|      0|			return w;
   65|  12.2k|		if (w > 0) {
  ------------------
  |  Branch (65:7): [True: 12.2k, False: 0]
  ------------------
   66|       |			/* coverity[overflow:FALSE] */
   67|  12.2k|			write_size += w;
   68|  12.2k|			buf = (const uint8_t*)buf + w;
   69|  12.2k|		}
   70|  12.2k|		if (w == 0 || (quit && *quit))
  ------------------
  |  Branch (70:7): [True: 0, False: 12.2k]
  |  Branch (70:18): [True: 0, False: 12.2k]
  |  Branch (70:26): [True: 0, False: 0]
  ------------------
   71|      0|			return write_size;
   72|  12.2k|	} while ((size_t)write_size != length);
  ------------------
  |  Branch (72:11): [True: 0, False: 12.2k]
  ------------------
   73|       |
   74|  12.2k|	return write_size;
   75|  12.2k|}

crypt_get_pbkdf_type_params:
   37|  2.09k|{
   38|  2.09k|	if (!pbkdf_type)
  ------------------
  |  Branch (38:6): [True: 0, False: 2.09k]
  ------------------
   39|      0|		return NULL;
   40|       |
   41|  2.09k|	if (!strcmp(pbkdf_type, CRYPT_KDF_PBKDF2))
  ------------------
  |  |  266|  2.09k|#define CRYPT_KDF_PBKDF2   "pbkdf2"
  ------------------
  |  Branch (41:6): [True: 0, False: 2.09k]
  ------------------
   42|      0|		return &default_pbkdf2;
   43|  2.09k|	else if (!strcmp(pbkdf_type, CRYPT_KDF_ARGON2I))
  ------------------
  |  |  268|  2.09k|#define CRYPT_KDF_ARGON2I  "argon2i"
  ------------------
  |  Branch (43:11): [True: 0, False: 2.09k]
  ------------------
   44|      0|		return &default_argon2i;
   45|  2.09k|	else if (!strcmp(pbkdf_type, CRYPT_KDF_ARGON2ID))
  ------------------
  |  |  270|  2.09k|#define CRYPT_KDF_ARGON2ID "argon2id"
  ------------------
  |  Branch (45:11): [True: 2.09k, False: 0]
  ------------------
   46|  2.09k|		return &default_argon2id;
   47|       |
   48|      0|	return NULL;
   49|  2.09k|}
pbkdf_adjusted_phys_memory_kb:
   52|  2.09k|{
   53|  2.09k|	uint64_t free_kb, memory_kb = crypt_getphysmemory_kb();
   54|       |
   55|       |	/* Ignore bogus value */
   56|  2.09k|	if (memory_kb < (128 * 1024) || memory_kb > UINT32_MAX)
  ------------------
  |  Branch (56:6): [True: 0, False: 2.09k]
  |  Branch (56:34): [True: 0, False: 2.09k]
  ------------------
   57|      0|		return DEFAULT_LUKS2_MEMORY_KB;
  ------------------
  |  |   50|      0|#define DEFAULT_LUKS2_MEMORY_KB 1048576
  ------------------
   58|       |
   59|       |	/*
   60|       |	 * Never use more than half of physical memory.
   61|       |	 * OOM killer is too clever...
   62|       |	 */
   63|  2.09k|	memory_kb /= 2;
   64|       |
   65|       |	/*
   66|       |	 * On systems with < 4GB RAM without swap
   67|       |	 * never use more that half of available free memory.
   68|       |	 * This is a temporary hack to avoid OOM on small systems.
   69|       |	 */
   70|  2.09k|	if (memory_kb < (2 * 1024 * 1024) && !crypt_swapavailable()) {
  ------------------
  |  Branch (70:6): [True: 0, False: 2.09k]
  |  Branch (70:39): [True: 0, False: 0]
  ------------------
   71|      0|		free_kb = crypt_getphysmemoryfree_kb();
   72|       |
   73|       |		/*
   74|       |		 * Using exactly free memory causes OOM too, use only half of the value.
   75|       |		 * Ignore small values (< 64MB), user should use PBKDF2 in such environment.
   76|       |		 */
   77|      0|		free_kb /= 2;
   78|       |
   79|      0|		if (free_kb > (64 * 1024) && free_kb < memory_kb)
  ------------------
  |  Branch (79:7): [True: 0, False: 0]
  |  Branch (79:32): [True: 0, False: 0]
  ------------------
   80|      0|			return free_kb;
   81|      0|	}
   82|       |
   83|  2.09k|	return memory_kb;
   84|  2.09k|}
verify_pbkdf_params:
   91|  4.18k|{
   92|  4.18k|	struct crypt_pbkdf_limits pbkdf_limits;
   93|  4.18k|	const char *pbkdf_type;
   94|  4.18k|	int r;
   95|       |
   96|  4.18k|	r = init_crypto(cd);
   97|  4.18k|	if (r < 0)
  ------------------
  |  Branch (97:6): [True: 0, False: 4.18k]
  ------------------
   98|      0|		return r;
   99|       |
  100|  4.18k|	if (!pbkdf || !pbkdf->type ||
  ------------------
  |  Branch (100:6): [True: 0, False: 4.18k]
  |  Branch (100:16): [True: 2.09k, False: 2.09k]
  ------------------
  101|  2.09k|	    (!pbkdf->hash && !strcmp(pbkdf->type, "pbkdf2")))
  ------------------
  |  Branch (101:7): [True: 0, False: 2.09k]
  |  Branch (101:23): [True: 0, False: 0]
  ------------------
  102|  2.09k|		return -EINVAL;
  103|       |
  104|  2.09k|	if (!pbkdf->time_ms && !(pbkdf->flags & CRYPT_PBKDF_NO_BENCHMARK)) {
  ------------------
  |  |  263|      0|#define CRYPT_PBKDF_NO_BENCHMARK    (UINT32_C(1) << 1)
  ------------------
  |  Branch (104:6): [True: 0, False: 2.09k]
  |  Branch (104:25): [True: 0, False: 0]
  ------------------
  105|      0|		log_err(cd, _("Requested PBKDF target time cannot be zero."));
  ------------------
  |  |  189|      0|#define log_err(c, x...) crypt_logf(c, CRYPT_LOG_ERROR, x)
  |  |  ------------------
  |  |  |  |  176|      0|#define CRYPT_LOG_ERROR  1
  |  |  ------------------
  ------------------
  106|      0|		return -EINVAL;
  107|      0|	}
  108|       |
  109|  2.09k|	r = crypt_parse_pbkdf(pbkdf->type, &pbkdf_type);
  110|  2.09k|	if (r < 0) {
  ------------------
  |  Branch (110:6): [True: 0, False: 2.09k]
  ------------------
  111|      0|		log_err(cd, _("Unknown PBKDF type %s."), pbkdf->type);
  ------------------
  |  |  189|      0|#define log_err(c, x...) crypt_logf(c, CRYPT_LOG_ERROR, x)
  |  |  ------------------
  |  |  |  |  176|      0|#define CRYPT_LOG_ERROR  1
  |  |  ------------------
  ------------------
  112|      0|		return r;
  113|      0|	}
  114|       |
  115|  2.09k|	if (pbkdf->hash && crypt_hash_size(pbkdf->hash) < 0) {
  ------------------
  |  Branch (115:6): [True: 2.09k, False: 0]
  |  Branch (115:21): [True: 0, False: 2.09k]
  ------------------
  116|      0|		log_err(cd, _("Requested hash %s is not supported."), pbkdf->hash);
  ------------------
  |  |  189|      0|#define log_err(c, x...) crypt_logf(c, CRYPT_LOG_ERROR, x)
  |  |  ------------------
  |  |  |  |  176|      0|#define CRYPT_LOG_ERROR  1
  |  |  ------------------
  ------------------
  117|      0|		return -EINVAL;
  118|      0|	}
  119|       |
  120|  2.09k|	r = crypt_pbkdf_get_limits(pbkdf->type, &pbkdf_limits);
  121|  2.09k|	if (r < 0)
  ------------------
  |  Branch (121:6): [True: 0, False: 2.09k]
  ------------------
  122|      0|		return r;
  123|       |
  124|  2.09k|	if (crypt_get_type(cd) &&
  ------------------
  |  Branch (124:6): [True: 0, False: 2.09k]
  ------------------
  125|      0|	    !strcmp(crypt_get_type(cd), CRYPT_LUKS1) &&
  ------------------
  |  |  402|      0|#define CRYPT_LUKS1 "LUKS1"
  ------------------
  |  Branch (125:6): [True: 0, False: 0]
  ------------------
  126|      0|	    strcmp(pbkdf_type, CRYPT_KDF_PBKDF2)) {
  ------------------
  |  |  266|      0|#define CRYPT_KDF_PBKDF2   "pbkdf2"
  ------------------
  |  Branch (126:6): [True: 0, False: 0]
  ------------------
  127|      0|		log_err(cd, _("Requested PBKDF type is not supported for LUKS1."));
  ------------------
  |  |  189|      0|#define log_err(c, x...) crypt_logf(c, CRYPT_LOG_ERROR, x)
  |  |  ------------------
  |  |  |  |  176|      0|#define CRYPT_LOG_ERROR  1
  |  |  ------------------
  ------------------
  128|      0|		return -EINVAL;
  129|      0|	}
  130|       |
  131|  2.09k|	if (!strcmp(pbkdf_type, CRYPT_KDF_PBKDF2)) {
  ------------------
  |  |  266|  2.09k|#define CRYPT_KDF_PBKDF2   "pbkdf2"
  ------------------
  |  Branch (131:6): [True: 0, False: 2.09k]
  ------------------
  132|      0|		if (pbkdf->max_memory_kb || pbkdf->parallel_threads) {
  ------------------
  |  Branch (132:7): [True: 0, False: 0]
  |  Branch (132:31): [True: 0, False: 0]
  ------------------
  133|      0|			log_err(cd, _("PBKDF max memory or parallel threads must not be set with pbkdf2."));
  ------------------
  |  |  189|      0|#define log_err(c, x...) crypt_logf(c, CRYPT_LOG_ERROR, x)
  |  |  ------------------
  |  |  |  |  176|      0|#define CRYPT_LOG_ERROR  1
  |  |  ------------------
  ------------------
  134|      0|			return -EINVAL;
  135|      0|		}
  136|      0|		if (pbkdf->flags & CRYPT_PBKDF_NO_BENCHMARK &&
  ------------------
  |  |  263|      0|#define CRYPT_PBKDF_NO_BENCHMARK    (UINT32_C(1) << 1)
  ------------------
  |  Branch (136:7): [True: 0, False: 0]
  ------------------
  137|      0|		    pbkdf->iterations < pbkdf_limits.min_iterations) {
  ------------------
  |  Branch (137:7): [True: 0, False: 0]
  ------------------
  138|      0|			log_err(cd, _("Forced iteration count is too low for %s (minimum is %u)."),
  ------------------
  |  |  189|      0|#define log_err(c, x...) crypt_logf(c, CRYPT_LOG_ERROR, x)
  |  |  ------------------
  |  |  |  |  176|      0|#define CRYPT_LOG_ERROR  1
  |  |  ------------------
  ------------------
  139|      0|				pbkdf_type, pbkdf_limits.min_iterations);
  140|      0|			return -EINVAL;
  141|      0|		}
  142|      0|		return 0;
  143|      0|	}
  144|       |
  145|       |	/* TODO: properly define minimal iterations and also minimal memory values */
  146|  2.09k|	if (pbkdf->flags & CRYPT_PBKDF_NO_BENCHMARK) {
  ------------------
  |  |  263|  2.09k|#define CRYPT_PBKDF_NO_BENCHMARK    (UINT32_C(1) << 1)
  ------------------
  |  Branch (146:6): [True: 0, False: 2.09k]
  ------------------
  147|      0|		if (pbkdf->iterations < pbkdf_limits.min_iterations) {
  ------------------
  |  Branch (147:7): [True: 0, False: 0]
  ------------------
  148|      0|			log_err(cd, _("Forced iteration count is too low for %s (minimum is %u)."),
  ------------------
  |  |  189|      0|#define log_err(c, x...) crypt_logf(c, CRYPT_LOG_ERROR, x)
  |  |  ------------------
  |  |  |  |  176|      0|#define CRYPT_LOG_ERROR  1
  |  |  ------------------
  ------------------
  149|      0|				pbkdf_type, pbkdf_limits.min_iterations);
  150|      0|			r = -EINVAL;
  151|      0|		}
  152|      0|		if (pbkdf->max_memory_kb < pbkdf_limits.min_memory) {
  ------------------
  |  Branch (152:7): [True: 0, False: 0]
  ------------------
  153|      0|			log_err(cd, _("Forced memory cost is too low for %s (minimum is %u kilobytes)."),
  ------------------
  |  |  189|      0|#define log_err(c, x...) crypt_logf(c, CRYPT_LOG_ERROR, x)
  |  |  ------------------
  |  |  |  |  176|      0|#define CRYPT_LOG_ERROR  1
  |  |  ------------------
  ------------------
  154|      0|				pbkdf_type, pbkdf_limits.min_memory);
  155|      0|			r = -EINVAL;
  156|      0|		}
  157|      0|	}
  158|       |
  159|  2.09k|	if (pbkdf->max_memory_kb > pbkdf_limits.max_memory) {
  ------------------
  |  Branch (159:6): [True: 0, False: 2.09k]
  ------------------
  160|      0|		log_err(cd, _("Requested maximum PBKDF memory cost is too high (maximum is %d kilobytes)."),
  ------------------
  |  |  189|      0|#define log_err(c, x...) crypt_logf(c, CRYPT_LOG_ERROR, x)
  |  |  ------------------
  |  |  |  |  176|      0|#define CRYPT_LOG_ERROR  1
  |  |  ------------------
  ------------------
  161|      0|			pbkdf_limits.max_memory);
  162|      0|		r = -EINVAL;
  163|      0|	}
  164|  2.09k|	if (1024ULL * pbkdf->max_memory_kb > SIZE_MAX) {
  ------------------
  |  Branch (164:6): [True: 0, False: 2.09k]
  ------------------
  165|      0|		log_err(cd, _("Requested maximum PBKDF memory cost is too high (limited by the integer maximal size)."));
  ------------------
  |  |  189|      0|#define log_err(c, x...) crypt_logf(c, CRYPT_LOG_ERROR, x)
  |  |  ------------------
  |  |  |  |  176|      0|#define CRYPT_LOG_ERROR  1
  |  |  ------------------
  ------------------
  166|      0|		r = -EINVAL;
  167|      0|	}
  168|  2.09k|	if (!pbkdf->max_memory_kb) {
  ------------------
  |  Branch (168:6): [True: 0, False: 2.09k]
  ------------------
  169|      0|		log_err(cd, _("Requested maximum PBKDF memory cannot be zero."));
  ------------------
  |  |  189|      0|#define log_err(c, x...) crypt_logf(c, CRYPT_LOG_ERROR, x)
  |  |  ------------------
  |  |  |  |  176|      0|#define CRYPT_LOG_ERROR  1
  |  |  ------------------
  ------------------
  170|      0|		r = -EINVAL;
  171|      0|	}
  172|  2.09k|	if (pbkdf->parallel_threads > pbkdf_limits.max_parallel) {
  ------------------
  |  Branch (172:6): [True: 0, False: 2.09k]
  ------------------
  173|      0|		log_err(cd, _("Requested maximum PBKDF parallel cost is too high (maximum is %d)."),
  ------------------
  |  |  189|      0|#define log_err(c, x...) crypt_logf(c, CRYPT_LOG_ERROR, x)
  |  |  ------------------
  |  |  |  |  176|      0|#define CRYPT_LOG_ERROR  1
  |  |  ------------------
  ------------------
  174|      0|			pbkdf_limits.max_parallel);
  175|      0|		r = -EINVAL;
  176|      0|	}
  177|  2.09k|	if (!pbkdf->parallel_threads) {
  ------------------
  |  Branch (177:6): [True: 0, False: 2.09k]
  ------------------
  178|      0|		log_err(cd, _("Requested PBKDF parallel threads cannot be zero."));
  ------------------
  |  |  189|      0|#define log_err(c, x...) crypt_logf(c, CRYPT_LOG_ERROR, x)
  |  |  ------------------
  |  |  |  |  176|      0|#define CRYPT_LOG_ERROR  1
  |  |  ------------------
  ------------------
  179|      0|		r = -EINVAL;
  180|      0|	}
  181|       |
  182|  2.09k|	return r;
  183|  2.09k|}
init_pbkdf_type:
  188|  2.09k|{
  189|  2.09k|	struct crypt_pbkdf_type *cd_pbkdf = crypt_get_pbkdf(cd);
  190|  2.09k|	struct crypt_pbkdf_limits pbkdf_limits;
  191|  2.09k|	const char *hash, *type;
  192|  2.09k|	unsigned cpus;
  193|  2.09k|	uint32_t old_flags, memory_kb;
  194|  2.09k|	int r;
  195|       |
  196|  2.09k|	if (crypt_fips_mode()) {
  ------------------
  |  Branch (196:6): [True: 0, False: 2.09k]
  ------------------
  197|      0|		if (pbkdf && strcmp(pbkdf->type, CRYPT_KDF_PBKDF2)) {
  ------------------
  |  |  266|      0|#define CRYPT_KDF_PBKDF2   "pbkdf2"
  ------------------
  |  Branch (197:7): [True: 0, False: 0]
  |  Branch (197:16): [True: 0, False: 0]
  ------------------
  198|      0|			log_err(cd, _("Only PBKDF2 is supported in FIPS mode."));
  ------------------
  |  |  189|      0|#define log_err(c, x...) crypt_logf(c, CRYPT_LOG_ERROR, x)
  |  |  ------------------
  |  |  |  |  176|      0|#define CRYPT_LOG_ERROR  1
  |  |  ------------------
  ------------------
  199|      0|			return -EINVAL;
  200|      0|		}
  201|      0|		if (!pbkdf)
  ------------------
  |  Branch (201:7): [True: 0, False: 0]
  ------------------
  202|      0|			pbkdf = crypt_get_pbkdf_type_params(CRYPT_KDF_PBKDF2);
  ------------------
  |  |  266|      0|#define CRYPT_KDF_PBKDF2   "pbkdf2"
  ------------------
  203|      0|	}
  204|       |
  205|  2.09k|	if (!pbkdf && dev_type && !strcmp(dev_type, CRYPT_LUKS2))
  ------------------
  |  |  404|  2.09k|#define CRYPT_LUKS2 "LUKS2"
  ------------------
  |  Branch (205:6): [True: 2.09k, False: 0]
  |  Branch (205:16): [True: 2.09k, False: 0]
  |  Branch (205:28): [True: 2.09k, False: 0]
  ------------------
  206|  2.09k|		pbkdf = crypt_get_pbkdf_type_params(DEFAULT_LUKS2_PBKDF);
  ------------------
  |  |   56|  2.09k|#define DEFAULT_LUKS2_PBKDF "argon2id"
  ------------------
  207|      0|	else if (!pbkdf)
  ------------------
  |  Branch (207:11): [True: 0, False: 0]
  ------------------
  208|      0|		pbkdf = crypt_get_pbkdf_type_params(CRYPT_KDF_PBKDF2);
  ------------------
  |  |  266|      0|#define CRYPT_KDF_PBKDF2   "pbkdf2"
  ------------------
  209|       |
  210|  2.09k|	r = verify_pbkdf_params(cd, pbkdf);
  211|  2.09k|	if (r)
  ------------------
  |  Branch (211:6): [True: 0, False: 2.09k]
  ------------------
  212|      0|		return r;
  213|       |
  214|  2.09k|	r = crypt_pbkdf_get_limits(pbkdf->type, &pbkdf_limits);
  215|  2.09k|	if (r < 0)
  ------------------
  |  Branch (215:6): [True: 0, False: 2.09k]
  ------------------
  216|      0|		return r;
  217|       |
  218|  2.09k|	type = strdup(pbkdf->type);
  219|  2.09k|	hash = pbkdf->hash ? strdup(pbkdf->hash) : NULL;
  ------------------
  |  Branch (219:9): [True: 2.09k, False: 0]
  ------------------
  220|       |
  221|  2.09k|	if (!type || (!hash && pbkdf->hash)) {
  ------------------
  |  Branch (221:6): [True: 0, False: 2.09k]
  |  Branch (221:16): [True: 0, False: 2.09k]
  |  Branch (221:25): [True: 0, False: 0]
  ------------------
  222|      0|		free(CONST_CAST(void*)type);
  ------------------
  |  |   13|      0|#define CONST_CAST(x) (x)(uintptr_t)
  ------------------
  223|      0|		free(CONST_CAST(void*)hash);
  ------------------
  |  |   13|      0|#define CONST_CAST(x) (x)(uintptr_t)
  ------------------
  224|      0|		return -ENOMEM;
  225|      0|	}
  226|       |
  227|  2.09k|	free(CONST_CAST(void*)cd_pbkdf->type);
  ------------------
  |  |   13|  2.09k|#define CONST_CAST(x) (x)(uintptr_t)
  ------------------
  228|  2.09k|	free(CONST_CAST(void*)cd_pbkdf->hash);
  ------------------
  |  |   13|  2.09k|#define CONST_CAST(x) (x)(uintptr_t)
  ------------------
  229|  2.09k|	cd_pbkdf->type = type;
  230|  2.09k|	cd_pbkdf->hash = hash;
  231|       |
  232|  2.09k|	old_flags = cd_pbkdf->flags;
  233|  2.09k|	cd_pbkdf->flags = pbkdf->flags;
  234|       |
  235|       |	/* Reset iteration count so benchmark must run again. */
  236|  2.09k|	if (cd_pbkdf->flags & CRYPT_PBKDF_NO_BENCHMARK)
  ------------------
  |  |  263|  2.09k|#define CRYPT_PBKDF_NO_BENCHMARK    (UINT32_C(1) << 1)
  ------------------
  |  Branch (236:6): [True: 0, False: 2.09k]
  ------------------
  237|      0|		cd_pbkdf->iterations = pbkdf->iterations;
  238|  2.09k|	else
  239|  2.09k|		cd_pbkdf->iterations = 0;
  240|       |
  241|  2.09k|	if (old_flags & CRYPT_PBKDF_ITER_TIME_SET)
  ------------------
  |  |  261|  2.09k|#define CRYPT_PBKDF_ITER_TIME_SET   (UINT32_C(1) << 0)
  ------------------
  |  Branch (241:6): [True: 0, False: 2.09k]
  ------------------
  242|      0|		cd_pbkdf->flags |= CRYPT_PBKDF_ITER_TIME_SET;
  ------------------
  |  |  261|      0|#define CRYPT_PBKDF_ITER_TIME_SET   (UINT32_C(1) << 0)
  ------------------
  243|  2.09k|	else
  244|  2.09k|		cd_pbkdf->time_ms = pbkdf->time_ms;
  245|       |
  246|  2.09k|	cd_pbkdf->max_memory_kb = pbkdf->max_memory_kb;
  247|  2.09k|	cd_pbkdf->parallel_threads = pbkdf->parallel_threads;
  248|       |
  249|       |	/* Do not limit threads by online CPUs if user forced values (no benchmark). */
  250|  2.09k|	if (cd_pbkdf->parallel_threads && !(cd_pbkdf->flags & CRYPT_PBKDF_NO_BENCHMARK)) {
  ------------------
  |  |  263|  2.09k|#define CRYPT_PBKDF_NO_BENCHMARK    (UINT32_C(1) << 1)
  ------------------
  |  Branch (250:6): [True: 2.09k, False: 0]
  |  Branch (250:36): [True: 2.09k, False: 0]
  ------------------
  251|  2.09k|		cpus = crypt_cpusonline();
  252|  2.09k|		if (cd_pbkdf->parallel_threads > cpus) {
  ------------------
  |  Branch (252:7): [True: 0, False: 2.09k]
  ------------------
  253|      0|			log_dbg(cd, "Only %u active CPUs detected, "
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  254|      0|				"PBKDF threads decreased from %d to %d.",
  255|      0|				cpus, cd_pbkdf->parallel_threads, cpus);
  256|      0|			cd_pbkdf->parallel_threads = cpus;
  257|      0|		}
  258|  2.09k|	}
  259|       |
  260|       |	/* Do not limit by available physical memory if user forced values (no benchmark). */
  261|  2.09k|	if (cd_pbkdf->max_memory_kb && !(cd_pbkdf->flags & CRYPT_PBKDF_NO_BENCHMARK)) {
  ------------------
  |  |  263|  2.09k|#define CRYPT_PBKDF_NO_BENCHMARK    (UINT32_C(1) << 1)
  ------------------
  |  Branch (261:6): [True: 2.09k, False: 0]
  |  Branch (261:33): [True: 2.09k, False: 0]
  ------------------
  262|  2.09k|		memory_kb = pbkdf_adjusted_phys_memory_kb();
  263|  2.09k|		if (cd_pbkdf->max_memory_kb > memory_kb) {
  ------------------
  |  Branch (263:7): [True: 0, False: 2.09k]
  ------------------
  264|      0|			log_dbg(cd, "Not enough physical memory detected, "
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  265|      0|				"PBKDF max memory decreased from %dkB to %dkB.",
  266|      0|				cd_pbkdf->max_memory_kb, memory_kb);
  267|      0|			cd_pbkdf->max_memory_kb = memory_kb;
  268|      0|		}
  269|  2.09k|	}
  270|       |
  271|  2.09k|	if (!strcmp(pbkdf->type, CRYPT_KDF_PBKDF2))
  ------------------
  |  |  266|  2.09k|#define CRYPT_KDF_PBKDF2   "pbkdf2"
  ------------------
  |  Branch (271:6): [True: 0, False: 2.09k]
  ------------------
  272|      0|		log_dbg(cd, "PBKDF %s-%s, time_ms %u (iterations %u).",
  ------------------
  |  |  186|      0|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      0|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  273|  2.09k|			cd_pbkdf->type, cd_pbkdf->hash, cd_pbkdf->time_ms, cd_pbkdf->iterations);
  274|  2.09k|	else
  275|  2.09k|		log_dbg(cd, "PBKDF %s, time_ms %u (iterations %u), max_memory_kb %u, parallel_threads %u.",
  ------------------
  |  |  186|  2.09k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  2.09k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  276|  2.09k|			cd_pbkdf->type, cd_pbkdf->time_ms, cd_pbkdf->iterations,
  277|  2.09k|			cd_pbkdf->max_memory_kb, cd_pbkdf->parallel_threads);
  278|       |
  279|  2.09k|	return 0;
  280|  2.09k|}

crypt_safe_memzero:
   25|  23.7k|{
   26|  23.7k|	if (!data)
  ------------------
  |  Branch (26:6): [True: 0, False: 23.7k]
  ------------------
   27|      0|		return;
   28|       |
   29|  23.7k|	return crypt_backend_memzero(data, size);
   30|  23.7k|}

crypt_free_volume_key:
  194|  5.94k|{
  195|  5.94k|	struct volume_key *vk_next;
  196|       |
  197|  5.94k|	while (vk) {
  ------------------
  |  Branch (197:9): [True: 0, False: 5.94k]
  ------------------
  198|      0|		free(CONST_CAST(void*)vk->key_description);
  ------------------
  |  |   13|      0|#define CONST_CAST(x) (x)(uintptr_t)
  ------------------
  199|      0|		crypt_safe_free(vk->key);
  200|      0|		vk_next = vk->next;
  201|      0|		free(vk);
  202|      0|		vk = vk_next;
  203|      0|	}
  204|  5.94k|}

LLVMFuzzerTestOneInput:
   56|  5.95k|{
   57|  5.95k|	int fd, r = EXIT_FAILURE;
   58|  5.95k|	struct crypt_device *cd = NULL;
   59|  5.95k|	char name[] = "/tmp/test-script-fuzz.XXXXXX";
   60|  5.95k|	struct luks2_hdr_disk hdr_rw;
   61|  5.95k|	size_t modified_data_size;
   62|       |
   63|       |	/* if csum calculation fails, keep fuzzer running on original input */
   64|  5.95k|	if (size >= sizeof(hdr_rw) && calculate_checksum((const char *)data, size, &hdr_rw))
  ------------------
  |  Branch (64:6): [True: 4.81k, False: 1.13k]
  |  Branch (64:32): [True: 12, False: 4.80k]
  ------------------
   65|     12|		modified_data_size = sizeof(hdr_rw);
   66|  5.94k|	else
   67|  5.94k|		modified_data_size = 0;
   68|       |
   69|       |	/* create file with LUKS header for libcryptsetup */
   70|  5.95k|	fd = mkostemp(name, O_RDWR|O_CREAT|O_EXCL|O_CLOEXEC);
   71|  5.95k|	if (fd == -1)
  ------------------
  |  Branch (71:6): [True: 0, False: 5.95k]
  ------------------
   72|      0|		return r;
   73|       |
   74|       |	/* enlarge header */
   75|  5.95k|	if (ftruncate(fd, FILESIZE) == -1)
  ------------------
  |  |   10|  5.95k|#define FILESIZE (16777216)
  ------------------
  |  Branch (75:6): [True: 0, False: 5.95k]
  ------------------
   76|      0|		goto out;
   77|       |
   78|  5.95k|	if (modified_data_size &&
  ------------------
  |  Branch (78:6): [True: 12, False: 5.94k]
  ------------------
   79|     12|	    write_buffer(fd, &hdr_rw, modified_data_size) != (ssize_t)modified_data_size)
  ------------------
  |  Branch (79:6): [True: 0, False: 12]
  ------------------
   80|      0|		goto out;
   81|       |
   82|  5.95k|	if (write_buffer(fd, data + modified_data_size, size - modified_data_size) != (ssize_t)size)
  ------------------
  |  Branch (82:6): [True: 12, False: 5.94k]
  ------------------
   83|     12|		goto out;
   84|       |
   85|       |	/* Actual fuzzing */
   86|  5.94k|	if (crypt_init(&cd, name) == 0)
  ------------------
  |  Branch (86:6): [True: 5.94k, False: 0]
  ------------------
   87|  5.94k|		(void)crypt_load(cd, CRYPT_LUKS2, NULL);
  ------------------
  |  |  404|  5.94k|#define CRYPT_LUKS2 "LUKS2"
  ------------------
   88|  5.94k|	crypt_free(cd);
   89|  5.94k|	r = 0;
   90|  5.95k|out:
   91|  5.95k|	close(fd);
   92|  5.95k|	unlink(name);
   93|       |
   94|  5.95k|	return r;
   95|  5.94k|}
crypt2_load_fuzz.cc:_ZL18calculate_checksumPKcmP14luks2_hdr_disk:
   39|  4.81k|{
   40|  4.81k|	uint64_t hdr_size;
   41|       |
   42|       |	/* Primary header cannot fit in data */
   43|  4.81k|	if (sizeof(*hdr_rw) > size)
  ------------------
  |  Branch (43:6): [True: 0, False: 4.81k]
  ------------------
   44|      0|		return false;
   45|       |
   46|  4.81k|	hdr_size = be64_to_cpu(((struct luks2_hdr_disk *)(uintptr_t)data)->hdr_size);
  ------------------
  |  |  107|  4.81k|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
   47|  4.81k|	if (hdr_size > size || hdr_size <= sizeof(*hdr_rw))
  ------------------
  |  Branch (47:6): [True: 4.76k, False: 52]
  |  Branch (47:25): [True: 40, False: 12]
  ------------------
   48|  4.80k|		return false;
   49|       |
   50|       |	/* Calculate checksum for primary header */
   51|     12|	memcpy(hdr_rw, data, sizeof(*hdr_rw));
   52|     12|	return fix_checksum_hdr(hdr_rw, data, (size_t)hdr_size);
   53|  4.81k|}
crypt2_load_fuzz.cc:_ZL16fix_checksum_hdrP14luks2_hdr_diskPKcm:
   20|     12|{
   21|     12|	char *csum = (char *)&hdr->csum;
   22|     12|	struct crypt_hash *hd = NULL;
   23|     12|	bool r = false;
   24|       |
   25|     12|	if (crypt_hash_init(&hd, CHKSUM_ALG))
  ------------------
  |  |   16|     12|#define CHKSUM_ALG "sha256"
  ------------------
  |  Branch (25:6): [True: 0, False: 12]
  ------------------
   26|      0|		return false;
   27|       |
   28|     12|	memset(csum, 0, LUKS2_CHECKSUM_L);
  ------------------
  |  |   25|     12|#define LUKS2_CHECKSUM_L 64
  ------------------
   29|       |
   30|     12|	if (!crypt_hash_write(hd, data, len) &&
  ------------------
  |  Branch (30:6): [True: 12, False: 0]
  ------------------
   31|     12|	    !crypt_hash_final(hd, csum, CHKSUM_SIZE))
  ------------------
  |  |   17|     12|#define CHKSUM_SIZE 32
  ------------------
  |  Branch (31:6): [True: 12, False: 0]
  ------------------
   32|     12|		r = true;
   33|       |
   34|     12|	crypt_hash_destroy(hd);
   35|     12|	return r;
   36|     12|}

array_list_new2:
   45|  13.1k|{
   46|  13.1k|	struct array_list *arr;
   47|       |
   48|  13.1k|	if (initial_size < 0 || (size_t)initial_size >= SIZE_T_MAX / sizeof(void *))
  ------------------
  |  |   29|  13.1k|#define SIZE_T_MAX ULONG_MAX
  ------------------
  |  Branch (48:6): [True: 0, False: 13.1k]
  |  Branch (48:26): [True: 0, False: 13.1k]
  ------------------
   49|      0|		return NULL;
   50|  13.1k|	arr = (struct array_list *)malloc(sizeof(struct array_list));
   51|  13.1k|	if (!arr)
  ------------------
  |  Branch (51:6): [True: 0, False: 13.1k]
  ------------------
   52|      0|		return NULL;
   53|  13.1k|	arr->size = initial_size;
   54|  13.1k|	arr->length = 0;
   55|  13.1k|	arr->free_fn = free_fn;
   56|  13.1k|	if (!(arr->array = (void **)malloc(arr->size * sizeof(void *))))
  ------------------
  |  Branch (56:6): [True: 0, False: 13.1k]
  ------------------
   57|      0|	{
   58|      0|		free(arr);
   59|      0|		return NULL;
   60|      0|	}
   61|  13.1k|	return arr;
   62|  13.1k|}
array_list_free:
   65|  13.1k|{
   66|  13.1k|	size_t i;
   67|  50.6k|	for (i = 0; i < arr->length; i++)
  ------------------
  |  Branch (67:14): [True: 37.5k, False: 13.1k]
  ------------------
   68|  37.5k|		if (arr->array[i])
  ------------------
  |  Branch (68:7): [True: 0, False: 37.5k]
  ------------------
   69|      0|			arr->free_fn(arr->array[i]);
   70|  13.1k|	free(arr->array);
   71|  13.1k|	free(arr);
   72|  13.1k|}
array_list_get_idx:
   75|   115k|{
   76|   115k|	if (i >= arr->length)
  ------------------
  |  Branch (76:6): [True: 0, False: 115k]
  ------------------
   77|      0|		return NULL;
   78|   115k|	return arr->array[i];
   79|   115k|}
array_list_shrink:
  107|  9.83k|{
  108|  9.83k|	void *t;
  109|  9.83k|	size_t new_size;
  110|       |
  111|  9.83k|	if (empty_slots >= SIZE_T_MAX / sizeof(void *) - arr->length)
  ------------------
  |  |   29|  9.83k|#define SIZE_T_MAX ULONG_MAX
  ------------------
  |  Branch (111:6): [True: 0, False: 9.83k]
  ------------------
  112|      0|		return -1;
  113|  9.83k|	new_size = arr->length + empty_slots;
  114|  9.83k|	if (new_size == arr->size)
  ------------------
  |  Branch (114:6): [True: 0, False: 9.83k]
  ------------------
  115|      0|		return 0;
  116|  9.83k|	if (new_size > arr->size)
  ------------------
  |  Branch (116:6): [True: 0, False: 9.83k]
  ------------------
  117|      0|		return array_list_expand_internal(arr, new_size);
  118|  9.83k|	if (new_size == 0)
  ------------------
  |  Branch (118:6): [True: 346, False: 9.48k]
  ------------------
  119|    346|		new_size = 1;
  120|       |
  121|  9.83k|	if (!(t = realloc(arr->array, new_size * sizeof(void *))))
  ------------------
  |  Branch (121:6): [True: 0, False: 9.83k]
  ------------------
  122|      0|		return -1;
  123|  9.83k|	arr->array = (void **)t;
  124|  9.83k|	arr->size = new_size;
  125|  9.83k|	return 0;
  126|  9.83k|}
array_list_set_idx:
  176|  37.6k|{
  177|  37.6k|	if (idx >= arr->length)
  ------------------
  |  Branch (177:6): [True: 0, False: 37.6k]
  ------------------
  178|      0|		return -1;
  179|  37.6k|	arr->array[idx] = data;
  180|  37.6k|	return 0;
  181|  37.6k|}
array_list_add:
  184|  37.6k|{
  185|       |	/* Repeat some of array_list_put_idx() so we can skip several
  186|       |	   checks that we know are unnecessary when appending at the end
  187|       |	 */
  188|  37.6k|	size_t idx = arr->length;
  189|  37.6k|	if (idx > SIZE_T_MAX - 1)
  ------------------
  |  |   29|  37.6k|#define SIZE_T_MAX ULONG_MAX
  ------------------
  |  Branch (189:6): [True: 0, False: 37.6k]
  ------------------
  190|      0|		return -1;
  191|  37.6k|	if (array_list_expand_internal(arr, idx + 1))
  ------------------
  |  Branch (191:6): [True: 0, False: 37.6k]
  ------------------
  192|      0|		return -1;
  193|  37.6k|	arr->array[idx] = data;
  194|  37.6k|	arr->length++;
  195|  37.6k|	return 0;
  196|  37.6k|}
array_list_length:
  210|   125k|{
  211|   125k|	return arr->length;
  212|   125k|}
array_list_del_idx:
  215|     72|{
  216|     72|	size_t i, stop;
  217|       |
  218|       |	/* Avoid overflow in calculation with large indices. */
  219|     72|	if (idx > SIZE_T_MAX - count)
  ------------------
  |  |   29|     72|#define SIZE_T_MAX ULONG_MAX
  ------------------
  |  Branch (219:6): [True: 0, False: 72]
  ------------------
  220|      0|		return -1;
  221|     72|	stop = idx + count;
  222|     72|	if (idx >= arr->length || stop > arr->length)
  ------------------
  |  Branch (222:6): [True: 0, False: 72]
  |  Branch (222:28): [True: 0, False: 72]
  ------------------
  223|      0|		return -1;
  224|    208|	for (i = idx; i < stop; ++i)
  ------------------
  |  Branch (224:16): [True: 136, False: 72]
  ------------------
  225|    136|	{
  226|       |		// Because put_idx can skip entries, we need to check if
  227|       |		// there's actually anything in each slot we're erasing.
  228|    136|		if (arr->array[i])
  ------------------
  |  Branch (228:7): [True: 0, False: 136]
  ------------------
  229|      0|			arr->free_fn(arr->array[i]);
  230|    136|	}
  231|     72|	memmove(arr->array + idx, arr->array + stop, (arr->length - stop) * sizeof(void *));
  232|     72|	arr->length -= count;
  233|     72|	return 0;
  234|     72|}
arraylist.c:array_list_expand_internal:
   82|  37.6k|{
   83|  37.6k|	void *t;
   84|  37.6k|	size_t new_size;
   85|       |
   86|  37.6k|	if (max < arr->size)
  ------------------
  |  Branch (86:6): [True: 37.5k, False: 172]
  ------------------
   87|  37.5k|		return 0;
   88|       |	/* Avoid undefined behaviour on size_t overflow */
   89|    172|	if (arr->size >= SIZE_T_MAX / 2)
  ------------------
  |  |   29|    172|#define SIZE_T_MAX ULONG_MAX
  ------------------
  |  Branch (89:6): [True: 0, False: 172]
  ------------------
   90|      0|		new_size = max;
   91|    172|	else
   92|    172|	{
   93|    172|		new_size = arr->size << 1;
   94|    172|		if (new_size < max)
  ------------------
  |  Branch (94:7): [True: 0, False: 172]
  ------------------
   95|      0|			new_size = max;
   96|    172|	}
   97|    172|	if (new_size > (~((size_t)0)) / sizeof(void *))
  ------------------
  |  Branch (97:6): [True: 0, False: 172]
  ------------------
   98|      0|		return -1;
   99|    172|	if (!(t = realloc(arr->array, new_size * sizeof(void *))))
  ------------------
  |  Branch (99:6): [True: 0, False: 172]
  ------------------
  100|      0|		return -1;
  101|    172|	arr->array = (void **)t;
  102|    172|	arr->size = new_size;
  103|    172|	return 0;
  104|    172|}

json_object_get:
  259|   145k|{
  260|   145k|	if (!jso)
  ------------------
  |  Branch (260:6): [True: 229, False: 144k]
  ------------------
  261|    229|		return jso;
  262|       |
  263|       |	// Don't overflow the refcounter.
  264|   145k|	assert(jso->_ref_count < UINT32_MAX);
  ------------------
  |  Branch (264:2): [True: 0, False: 144k]
  |  Branch (264:2): [True: 144k, False: 0]
  ------------------
  265|       |
  266|       |#if defined(HAVE_ATOMIC_BUILTINS) && defined(ENABLE_THREADING)
  267|       |	__sync_add_and_fetch(&jso->_ref_count, 1);
  268|       |#else
  269|   144k|	++jso->_ref_count;
  270|   144k|#endif
  271|       |
  272|   144k|	return jso;
  273|   144k|}
json_object_put:
  356|   324k|{
  357|   324k|	enum json_object_put_result rc;
  358|       |
  359|   324k|	if (!jso)
  ------------------
  |  Branch (359:6): [True: 165k, False: 159k]
  ------------------
  360|   165k|		return 0;
  361|       |
  362|   159k|	rc = _json_object_put_maybe_free(jso, 0);
  363|   159k|	if (rc != json_object_put_container)
  ------------------
  |  Branch (363:6): [True: 149k, False: 9.88k]
  ------------------
  364|   149k|		return (int)rc;
  365|       |	// else, it's a non-empty container object, handle it below
  366|       |
  367|       |	// Note: jso is now a "zombie" object, _ref_count == 0 but memory not yet released
  368|       |
  369|       |	/*
  370|       |	 * Handle container objects with minimal stack usage.
  371|       |	 * Perform depth-first iteration, decrementing ref counts on way down
  372|       |	 * and freeing actual memory on the way up.
  373|       |	 * Iterate backwards through each container so we can use the tail
  374|       |	 * pointer/array length to know where to pick up upon popping up to
  375|       |	 * the parent.
  376|       |	 */
  377|       |
  378|   101k|	while(jso != NULL)
  ------------------
  |  Branch (378:8): [True: 91.8k, False: 9.88k]
  ------------------
  379|  91.8k|	{
  380|  91.8k|		size_t total_slots;
  381|  91.8k|		size_t slots_left;
  382|  91.8k|		struct lh_entry *cur_entry = NULL;
  383|  91.8k|		int retry_main_loop = 0;
  384|       |
  385|  91.8k|		if (jso->o_type == json_type_object)
  ------------------
  |  Branch (385:7): [True: 79.5k, False: 12.3k]
  ------------------
  386|  79.5k|		{
  387|  79.5k|			total_slots = lh_table_length(JC_OBJECT(jso)->c_object);
  388|  79.5k|			cur_entry = JC_OBJECT(jso)->c_object->tail;
  389|  79.5k|		}
  390|  12.3k|		else
  391|  12.3k|		{
  392|  12.3k|			total_slots = array_list_length(JC_ARRAY(jso)->c_array);
  393|  12.3k|		}
  394|  91.8k|		slots_left = total_slots;
  395|       |
  396|   220k|		while (slots_left > 0)
  ------------------
  |  Branch (396:10): [True: 169k, False: 50.8k]
  ------------------
  397|   169k|		{
  398|   169k|			size_t cur_slot = slots_left - 1;
  399|   169k|			json_object *child = NULL;
  400|       |
  401|       |			// First, clear the slot in the current jso object
  402|       |			// The slot itself will be freed when jso is freed, or
  403|       |			// if the child object in the slot is a container too and
  404|       |			// and we "recurse" into it.
  405|   169k|			switch (jso->o_type)
  406|   169k|			{
  407|   132k|			case json_type_object: 
  ------------------
  |  Branch (407:4): [True: 132k, False: 37.6k]
  ------------------
  408|   132k|				child = (json_object *)lh_entry_v(cur_entry);
  409|       |				// We're going to free child, so detach it from the entry
  410|   132k|				lh_entry_set_val(cur_entry, NULL);
  411|   132k|				break;
  412|  37.6k|			case json_type_array:
  ------------------
  |  Branch (412:4): [True: 37.6k, False: 132k]
  ------------------
  413|  37.6k|				child = (struct json_object *)array_list_get_idx(JC_ARRAY(jso)->c_array, cur_slot);
  414|       |				// We're going to free child, so detach it from the entry
  415|  37.6k|				array_list_set_idx(JC_ARRAY(jso)->c_array, cur_slot, NULL);
  416|  37.6k|				break;
  417|      0|			default:
  ------------------
  |  Branch (417:4): [True: 0, False: 169k]
  ------------------
  418|      0|				assert(!"jso->o_type is not object or array");
  ------------------
  |  Branch (418:5): [Folded, False: 0]
  |  Branch (418:5): [Folded, False: 0]
  ------------------
  419|      0|				break;
  420|   169k|			}
  421|       |
  422|       |			// Now, handle actually freeing the json_object in that slot
  423|   169k|			if (!child || _json_object_put_maybe_free(child, 0) != json_object_put_container)
  ------------------
  |  Branch (423:8): [True: 204, False: 169k]
  |  Branch (423:18): [True: 128k, False: 40.9k]
  ------------------
  424|   128k|			{
  425|       | 				// child is either freed, or still referenced somewhere else
  426|       |				// leave it as-is and handle the previous slot
  427|   128k|				slots_left--;
  428|   128k|				if (jso->o_type == json_type_object)
  ------------------
  |  Branch (428:9): [True: 91.1k, False: 37.6k]
  ------------------
  429|  91.1k|					cur_entry = cur_entry->prev;
  430|   128k|				continue;
  431|   128k|			}
  432|       |			// _ref_count == 0 now, and _user_delete has been called so we can re-use _userdata 
  433|  40.9k|			child->_delete_parent = jso;  // aka _userdata
  434|  40.9k|			child->_user_delete = NULL;   // make sure it's not called again
  435|       |
  436|       |			// Clear the slot entries whose json_object have been freed so when we pop
  437|       |			// back up to this jso we can continue where we left off.
  438|       |			// Note: since we set each entry to NULL above, clearing the slot
  439|       |			//  is a noop wrt releasing a json_object.
  440|  40.9k|			if (jso->o_type == json_type_object)
  ------------------
  |  Branch (440:8): [True: 40.9k, False: 72]
  ------------------
  441|  40.9k|			{
  442|  40.9k|				lh_table_delete_entry_to_tail(JC_OBJECT(jso)->c_object, cur_entry);
  443|  40.9k|			}
  444|     72|			else // json_type_array
  445|     72|			{
  446|     72|				array_list_del_idx(JC_ARRAY(jso)->c_array, cur_slot, total_slots - cur_slot);
  447|     72|			}
  448|       |			// Iterate down through the child, it will be freed once all 
  449|       |			// of *its* children are freed
  450|  40.9k|			jso = child;
  451|  40.9k|			retry_main_loop = 1;
  452|  40.9k|			break;
  453|   169k|		}
  454|       |
  455|  91.8k|		if (retry_main_loop)
  ------------------
  |  Branch (455:7): [True: 40.9k, False: 50.8k]
  ------------------
  456|       |			// Iterating down, don't free jso yet
  457|  40.9k|			continue;
  458|       |
  459|       |		// All slots are cleared, now pop back up to the parent
  460|  50.8k|		{
  461|       |			// jso is a child that's already been detached from its parent
  462|       |			// so we need to actually free it now
  463|       |			// Be sure to grab _delete_parent *before* freeing jso.
  464|  50.8k|			json_object *parent = jso->_delete_parent;
  465|  50.8k|			enum json_object_put_result rc;
  466|  50.8k|			assert(jso->_ref_count == 0);
  ------------------
  |  Branch (466:4): [True: 0, False: 50.8k]
  |  Branch (466:4): [True: 50.8k, False: 0]
  ------------------
  467|  50.8k|			jso->_ref_count++;   // We're the exclusive owner of jso, non-atomic add is ok.
  468|       |			// Note: the call must not be inside assert(), or it gets
  469|       |			// compiled out when NDEBUG is defined and the memory leaks.
  470|  50.8k|			rc = _json_object_put_maybe_free(jso, 1);
  471|  50.8k|			assert(rc == json_object_put_freed);
  ------------------
  |  Branch (471:4): [True: 0, False: 50.8k]
  |  Branch (471:4): [True: 50.8k, False: 0]
  ------------------
  472|  50.8k|			(void)rc;
  473|  50.8k|			jso = parent;
  474|       |			// iteration will be reset at the top of the loop
  475|  50.8k|		}
  476|  50.8k|	}
  477|       |
  478|  9.88k|	return 1;
  479|  9.88k|}
json_object_is_type:
  512|   117k|{
  513|   117k|	if (!jso)
  ------------------
  |  Branch (513:6): [True: 0, False: 117k]
  ------------------
  514|      0|		return (type == json_type_null);
  515|   117k|	return (jso->o_type == type);
  516|   117k|}
json_object_get_type:
  519|   365k|{
  520|   365k|	if (!jso)
  ------------------
  |  Branch (520:6): [True: 0, False: 365k]
  ------------------
  521|      0|		return json_type_null;
  522|   365k|	return jso->o_type;
  523|   365k|}
json_object_set_userdata:
  531|    606|{
  532|       |	// Can't return failure, so abort if we can't perform the operation.
  533|    606|	assert(jso != NULL);
  ------------------
  |  Branch (533:2): [True: 0, False: 606]
  |  Branch (533:2): [True: 606, False: 0]
  ------------------
  534|       |
  535|       |	// First, clean up any previously existing user info
  536|    606|	if (jso->_user_delete)
  ------------------
  |  Branch (536:6): [True: 0, False: 606]
  ------------------
  537|      0|		jso->_user_delete(jso, jso->_userdata);
  538|       |
  539|    606|	jso->_userdata = userdata;
  540|    606|	jso->_user_delete = user_delete;
  541|    606|}
json_object_set_serializer:
  547|    606|{
  548|    606|	json_object_set_userdata(jso, userdata, user_delete);
  549|       |
  550|    606|	if (to_string_func == NULL)
  ------------------
  |  Branch (550:6): [True: 0, False: 606]
  ------------------
  551|      0|	{
  552|       |		// Reset to the standard serialization function
  553|      0|		switch (jso->o_type)
  ------------------
  |  Branch (553:11): [True: 0, False: 0]
  ------------------
  554|      0|		{
  555|      0|		case json_type_null: jso->_to_json_string = NULL; break;
  ------------------
  |  Branch (555:3): [True: 0, False: 0]
  ------------------
  556|      0|		case json_type_boolean:
  ------------------
  |  Branch (556:3): [True: 0, False: 0]
  ------------------
  557|      0|			jso->_to_json_string = &json_object_boolean_to_json_string;
  558|      0|			break;
  559|      0|		case json_type_double:
  ------------------
  |  Branch (559:3): [True: 0, False: 0]
  ------------------
  560|      0|			jso->_to_json_string = &json_object_double_to_json_string_default;
  561|      0|			break;
  562|      0|		case json_type_int: jso->_to_json_string = &json_object_int_to_json_string; break;
  ------------------
  |  Branch (562:3): [True: 0, False: 0]
  ------------------
  563|      0|		case json_type_object:
  ------------------
  |  Branch (563:3): [True: 0, False: 0]
  ------------------
  564|      0|			jso->_to_json_string = &json_object_object_to_json_string;
  565|      0|			break;
  566|      0|		case json_type_array:
  ------------------
  |  Branch (566:3): [True: 0, False: 0]
  ------------------
  567|      0|			jso->_to_json_string = &json_object_array_to_json_string;
  568|      0|			break;
  569|      0|		case json_type_string:
  ------------------
  |  Branch (569:3): [True: 0, False: 0]
  ------------------
  570|      0|			jso->_to_json_string = &json_object_string_to_json_string;
  571|      0|			break;
  572|      0|		}
  573|      0|		return;
  574|      0|	}
  575|       |
  576|    606|	jso->_to_json_string = to_string_func;
  577|    606|}
json_object_to_json_string_length:
  582|  6.04k|{
  583|  6.04k|	const char *r = NULL;
  584|  6.04k|	size_t s = 0;
  585|       |
  586|  6.04k|	if (!jso)
  ------------------
  |  Branch (586:6): [True: 0, False: 6.04k]
  ------------------
  587|      0|	{
  588|      0|		s = 4;
  589|      0|		r = "null";
  590|      0|	}
  591|  6.04k|	else if ((jso->_pb) || (jso->_pb = printbuf_new()))
  ------------------
  |  Branch (591:11): [True: 26, False: 6.02k]
  |  Branch (591:25): [True: 6.02k, False: 0]
  ------------------
  592|  6.04k|	{
  593|  6.04k|		printbuf_reset(jso->_pb);
  594|       |
  595|  6.04k|		if (jso->_to_json_string(jso, jso->_pb, 0, flags) >= 0)
  ------------------
  |  Branch (595:7): [True: 6.04k, False: 0]
  ------------------
  596|  6.04k|		{
  597|  6.04k|			s = (size_t)jso->_pb->bpos;
  598|  6.04k|			r = jso->_pb->buf;
  599|  6.04k|		}
  600|  6.04k|	}
  601|       |
  602|  6.04k|	if (length)
  ------------------
  |  Branch (602:6): [True: 0, False: 6.04k]
  ------------------
  603|      0|		*length = s;
  604|  6.04k|	return r;
  605|  6.04k|}
json_object_to_json_string_ext:
  608|  6.04k|{
  609|       |	return json_object_to_json_string_length(jso, flags, NULL);
  610|  6.04k|}
json_object_to_json_string:
  615|     32|{
  616|     32|	return json_object_to_json_string_ext(jso, JSON_C_TO_STRING_SPACED);
  ------------------
  |  |   49|     32|#define JSON_C_TO_STRING_SPACED (1 << 0)
  ------------------
  617|     32|}
json_object_new_object:
  706|  64.1k|{
  707|  64.1k|	struct json_object_object *jso = JSON_OBJECT_NEW(object);
  ------------------
  |  |  133|  64.1k|	(struct JC_CONCAT(json_object_, jtype) *)json_object_new(                        \
  |  |  134|  64.1k|	    JC_CONCAT(json_type_, jtype), sizeof(struct JC_CONCAT(json_object_, jtype)), \
  |  |  ------------------
  |  |  |  |  129|  64.1k|#define JC_CONCAT(a, b) a##b
  |  |  ------------------
  |  |  135|  64.1k|	    &JC_CONCAT3(json_object_, jtype, _to_json_string))
  |  |  ------------------
  |  |  |  |  130|  64.1k|#define JC_CONCAT3(a, b, c) a##b##c
  |  |  ------------------
  ------------------
  708|  64.1k|	if (!jso)
  ------------------
  |  Branch (708:6): [True: 0, False: 64.1k]
  ------------------
  709|      0|		return NULL;
  710|  64.1k|	jso->c_object =
  711|  64.1k|	    lh_kchar_table_new(JSON_OBJECT_DEF_HASH_ENTRIES, &json_object_lh_entry_free);
  ------------------
  |  |   36|  64.1k|#define JSON_OBJECT_DEF_HASH_ENTRIES 16
  ------------------
  712|  64.1k|	if (!jso->c_object)
  ------------------
  |  Branch (712:6): [True: 0, False: 64.1k]
  ------------------
  713|      0|	{
  714|      0|		json_object_generic_delete(&jso->base);
  715|      0|		errno = ENOMEM;
  716|      0|		return NULL;
  717|      0|	}
  718|  64.1k|	return &jso->base;
  719|  64.1k|}
json_object_get_object:
  722|  99.4k|{
  723|  99.4k|	if (!jso)
  ------------------
  |  Branch (723:6): [True: 0, False: 99.4k]
  ------------------
  724|      0|		return NULL;
  725|  99.4k|	switch (jso->o_type)
  726|  99.4k|	{
  727|  99.4k|	case json_type_object: return JC_OBJECT_C(jso)->c_object;
  ------------------
  |  Branch (727:2): [True: 99.4k, False: 0]
  ------------------
  728|      0|	default: return NULL;
  ------------------
  |  Branch (728:2): [True: 0, False: 99.4k]
  ------------------
  729|  99.4k|	}
  730|  99.4k|}
json_object_object_add_ex:
  734|   137k|{
  735|   137k|	struct json_object *existing_value = NULL;
  736|   137k|	struct lh_entry *existing_entry;
  737|   137k|	unsigned long hash;
  738|       |
  739|   137k|	assert(json_object_get_type(jso) == json_type_object);
  ------------------
  |  Branch (739:2): [True: 0, False: 137k]
  |  Branch (739:2): [True: 137k, False: 0]
  ------------------
  740|       |
  741|       |	// We lookup the entry and replace the value, rather than just deleting
  742|       |	// and re-adding it, so the existing key remains valid.
  743|   137k|	hash = lh_get_hash(JC_OBJECT(jso)->c_object, (const void *)key);
  744|   137k|	existing_entry =
  745|   137k|	    (opts & JSON_C_OBJECT_ADD_KEY_IS_NEW)
  ------------------
  |  |   96|   137k|#define JSON_C_OBJECT_ADD_KEY_IS_NEW (1 << 1)
  ------------------
  |  Branch (745:6): [True: 0, False: 137k]
  ------------------
  746|   137k|	        ? NULL
  747|   137k|	        : lh_table_lookup_entry_w_hash(JC_OBJECT(jso)->c_object, (const void *)key, hash);
  748|       |
  749|       |	// The caller must avoid creating loops in the object tree, but do a
  750|       |	// quick check anyway to make sure we're not creating a trivial loop.
  751|   137k|	if (jso == val)
  ------------------
  |  Branch (751:6): [True: 0, False: 137k]
  ------------------
  752|      0|		return -1;
  753|       |
  754|   137k|	if (!existing_entry)
  ------------------
  |  Branch (754:6): [True: 132k, False: 4.52k]
  ------------------
  755|   132k|	{
  756|   132k|		const void *const k =
  757|   132k|		    (opts & JSON_C_OBJECT_ADD_CONSTANT_KEY) ? (const void *)key : strdup(key);
  ------------------
  |  |  114|   132k|#define JSON_C_OBJECT_ADD_CONSTANT_KEY (1 << 2)
  ------------------
  |  Branch (757:7): [True: 0, False: 132k]
  ------------------
  758|   132k|		if (k == NULL)
  ------------------
  |  Branch (758:7): [True: 0, False: 132k]
  ------------------
  759|      0|			return -1;
  760|   132k|		return lh_table_insert_w_hash(JC_OBJECT(jso)->c_object, k, val, hash, opts);
  761|   132k|	}
  762|  4.52k|	existing_value = (json_object *)lh_entry_v(existing_entry);
  763|  4.52k|	if (existing_value)
  ------------------
  |  Branch (763:6): [True: 4.46k, False: 59]
  ------------------
  764|  4.46k|		json_object_put(existing_value);
  765|  4.52k|	lh_entry_set_val(existing_entry, val);
  766|  4.52k|	return 0;
  767|   137k|}
json_object_object_add:
  770|   137k|{
  771|   137k|	return json_object_object_add_ex(jso, key, val, 0);
  772|   137k|}
json_object_object_length:
  775|  12.3k|{
  776|  12.3k|	assert(json_object_get_type(jso) == json_type_object);
  ------------------
  |  Branch (776:2): [True: 0, False: 12.3k]
  |  Branch (776:2): [True: 12.3k, False: 0]
  ------------------
  777|  12.3k|	return lh_table_length(JC_OBJECT_C(jso)->c_object);
  778|  12.3k|}
json_object_object_get_ex:
  794|   266k|{
  795|   266k|	if (value != NULL)
  ------------------
  |  Branch (795:6): [True: 260k, False: 6.70k]
  ------------------
  796|   260k|		*value = NULL;
  797|       |
  798|   266k|	if (NULL == jso)
  ------------------
  |  Branch (798:6): [True: 0, False: 266k]
  ------------------
  799|      0|		return 0;
  800|       |
  801|   266k|	switch (jso->o_type)
  802|   266k|	{
  803|   266k|	case json_type_object:
  ------------------
  |  Branch (803:2): [True: 266k, False: 0]
  ------------------
  804|   266k|		return lh_table_lookup_ex(JC_OBJECT_C(jso)->c_object, (const void *)key,
  805|   266k|		                          (void **)value);
  806|      0|	default:
  ------------------
  |  Branch (806:2): [True: 0, False: 266k]
  ------------------
  807|      0|		if (value != NULL)
  ------------------
  |  Branch (807:7): [True: 0, False: 0]
  ------------------
  808|      0|			*value = NULL;
  809|      0|		return 0;
  810|   266k|	}
  811|   266k|}
json_object_object_del:
  814|    396|{
  815|    396|	assert(json_object_get_type(jso) == json_type_object);
  ------------------
  |  Branch (815:2): [True: 0, False: 396]
  |  Branch (815:2): [True: 396, False: 0]
  ------------------
  816|    396|	lh_table_delete(JC_OBJECT(jso)->c_object, key);
  817|    396|}
json_object_new_boolean:
  839|    313|{
  840|    313|	struct json_object_boolean *jso = JSON_OBJECT_NEW(boolean);
  ------------------
  |  |  133|    313|	(struct JC_CONCAT(json_object_, jtype) *)json_object_new(                        \
  |  |  134|    313|	    JC_CONCAT(json_type_, jtype), sizeof(struct JC_CONCAT(json_object_, jtype)), \
  |  |  ------------------
  |  |  |  |  129|    313|#define JC_CONCAT(a, b) a##b
  |  |  ------------------
  |  |  135|    313|	    &JC_CONCAT3(json_object_, jtype, _to_json_string))
  |  |  ------------------
  |  |  |  |  130|    313|#define JC_CONCAT3(a, b, c) a##b##c
  |  |  ------------------
  ------------------
  841|    313|	if (!jso)
  ------------------
  |  Branch (841:6): [True: 0, False: 313]
  ------------------
  842|      0|		return NULL;
  843|    313|	jso->c_boolean = b;
  844|    313|	return &jso->base;
  845|    313|}
json_object_get_int:
  895|    251|{
  896|    251|	int64_t cint64 = 0;
  897|    251|	double cdouble;
  898|    251|	enum json_type o_type;
  899|    251|	errno = 0;
  900|       |
  901|    251|	if (!jso)
  ------------------
  |  Branch (901:6): [True: 0, False: 251]
  ------------------
  902|      0|		return 0;
  903|       |
  904|    251|	o_type = jso->o_type;
  905|    251|	if (o_type == json_type_int)
  ------------------
  |  Branch (905:6): [True: 243, False: 8]
  ------------------
  906|    243|	{
  907|    243|		const struct json_object_int *jsoint = JC_INT_C(jso);
  908|    243|		if (jsoint->cint_type == json_object_int_type_int64)
  ------------------
  |  Branch (908:7): [True: 243, False: 0]
  ------------------
  909|    243|		{
  910|    243|			cint64 = jsoint->cint.c_int64;
  911|    243|		}
  912|      0|		else
  913|      0|		{
  914|      0|			if (jsoint->cint.c_uint64 >= INT64_MAX)
  ------------------
  |  Branch (914:8): [True: 0, False: 0]
  ------------------
  915|      0|				cint64 = INT64_MAX;
  916|      0|			else
  917|      0|				cint64 = (int64_t)jsoint->cint.c_uint64;
  918|      0|		}
  919|    243|	}
  920|      8|	else if (o_type == json_type_string)
  ------------------
  |  Branch (920:11): [True: 0, False: 8]
  ------------------
  921|      0|	{
  922|       |		/*
  923|       |		 * Parse strings into 64-bit numbers, then use the
  924|       |		 * 64-to-32-bit number handling below.
  925|       |		 */
  926|      0|		if (json_parse_int64(get_string_component(jso), &cint64) != 0)
  ------------------
  |  Branch (926:7): [True: 0, False: 0]
  ------------------
  927|      0|			return 0; /* whoops, it didn't work. */
  928|      0|		o_type = json_type_int;
  929|      0|	}
  930|       |
  931|    251|	switch (o_type)
  932|    251|	{
  933|    243|	case json_type_int:
  ------------------
  |  Branch (933:2): [True: 243, False: 8]
  ------------------
  934|       |		/* Make sure we return the correct values for out of range numbers. */
  935|    243|		if (cint64 < INT32_MIN)
  ------------------
  |  Branch (935:7): [True: 4, False: 239]
  ------------------
  936|      4|		{
  937|      4|			errno = ERANGE;
  938|      4|			return INT32_MIN;
  939|      4|		}
  940|    239|		if (cint64 > INT32_MAX)
  ------------------
  |  Branch (940:7): [True: 0, False: 239]
  ------------------
  941|      0|		{
  942|      0|			errno = ERANGE;
  943|      0|			return INT32_MAX;
  944|      0|		}
  945|    239|		return (int32_t)cint64;
  946|      4|	case json_type_double:
  ------------------
  |  Branch (946:2): [True: 4, False: 247]
  ------------------
  947|      4|		cdouble = JC_DOUBLE_C(jso)->c_double;
  948|      4|		if (cdouble < INT32_MIN)
  ------------------
  |  Branch (948:7): [True: 0, False: 4]
  ------------------
  949|      0|		{
  950|      0|			errno = ERANGE;
  951|      0|			return INT32_MIN;
  952|      0|		}
  953|      4|		if (cdouble > INT32_MAX)
  ------------------
  |  Branch (953:7): [True: 4, False: 0]
  ------------------
  954|      4|		{
  955|      4|			errno = ERANGE;
  956|      4|			return INT32_MAX;
  957|      4|		}
  958|      0|		if (isnan(cdouble))
  ------------------
  |  Branch (958:7): [True: 0, False: 0]
  ------------------
  959|      0|		{
  960|      0|			errno = EINVAL;
  961|      0|			return INT32_MIN;
  962|      0|		}
  963|      0|		return (int32_t)cdouble;
  964|      4|	case json_type_boolean: return JC_BOOL_C(jso)->c_boolean;
  ------------------
  |  Branch (964:2): [True: 4, False: 247]
  ------------------
  965|      0|	default: return 0;
  ------------------
  |  Branch (965:2): [True: 0, False: 251]
  ------------------
  966|    251|	}
  967|    251|}
json_object_new_int64:
  975|  10.8k|{
  976|  10.8k|	struct json_object_int *jso = JSON_OBJECT_NEW(int);
  ------------------
  |  |  133|  10.8k|	(struct JC_CONCAT(json_object_, jtype) *)json_object_new(                        \
  |  |  134|  10.8k|	    JC_CONCAT(json_type_, jtype), sizeof(struct JC_CONCAT(json_object_, jtype)), \
  |  |  ------------------
  |  |  |  |  129|  10.8k|#define JC_CONCAT(a, b) a##b
  |  |  ------------------
  |  |  135|  10.8k|	    &JC_CONCAT3(json_object_, jtype, _to_json_string))
  |  |  ------------------
  |  |  |  |  130|  10.8k|#define JC_CONCAT3(a, b, c) a##b##c
  |  |  ------------------
  ------------------
  977|  10.8k|	if (!jso)
  ------------------
  |  Branch (977:6): [True: 0, False: 10.8k]
  ------------------
  978|      0|		return NULL;
  979|  10.8k|	jso->cint.c_int64 = i;
  980|  10.8k|	jso->cint_type = json_object_int_type_int64;
  981|  10.8k|	return &jso->base;
  982|  10.8k|}
json_object_new_uint64:
  985|    494|{
  986|    494|	struct json_object_int *jso = JSON_OBJECT_NEW(int);
  ------------------
  |  |  133|    494|	(struct JC_CONCAT(json_object_, jtype) *)json_object_new(                        \
  |  |  134|    494|	    JC_CONCAT(json_type_, jtype), sizeof(struct JC_CONCAT(json_object_, jtype)), \
  |  |  ------------------
  |  |  |  |  129|    494|#define JC_CONCAT(a, b) a##b
  |  |  ------------------
  |  |  135|    494|	    &JC_CONCAT3(json_object_, jtype, _to_json_string))
  |  |  ------------------
  |  |  |  |  130|    494|#define JC_CONCAT3(a, b, c) a##b##c
  |  |  ------------------
  ------------------
  987|    494|	if (!jso)
  ------------------
  |  Branch (987:6): [True: 0, False: 494]
  ------------------
  988|      0|		return NULL;
  989|    494|	jso->cint.c_uint64 = i;
  990|    494|	jso->cint_type = json_object_int_type_uint64;
  991|    494|	return &jso->base;
  992|    494|}
json_object_get_int64:
  995|    140|{
  996|    140|	int64_t cint;
  997|    140|	errno = 0;
  998|       |
  999|    140|	if (!jso)
  ------------------
  |  Branch (999:6): [True: 0, False: 140]
  ------------------
 1000|      0|		return 0;
 1001|    140|	switch (jso->o_type)
 1002|    140|	{
 1003|    140|	case json_type_int:
  ------------------
  |  Branch (1003:2): [True: 140, False: 0]
  ------------------
 1004|    140|	{
 1005|    140|		const struct json_object_int *jsoint = JC_INT_C(jso);
 1006|    140|		switch (jsoint->cint_type)
 1007|    140|		{
 1008|    134|		case json_object_int_type_int64: return jsoint->cint.c_int64;
  ------------------
  |  Branch (1008:3): [True: 134, False: 6]
  ------------------
 1009|      6|		case json_object_int_type_uint64:
  ------------------
  |  Branch (1009:3): [True: 6, False: 134]
  ------------------
 1010|      6|			if (jsoint->cint.c_uint64 > INT64_MAX)
  ------------------
  |  Branch (1010:8): [True: 6, False: 0]
  ------------------
 1011|      6|			{
 1012|      6|				errno = ERANGE;
 1013|      6|				return INT64_MAX;
 1014|      6|			}
 1015|      0|			return (int64_t)jsoint->cint.c_uint64;
 1016|      0|		default: json_abort("invalid cint_type");
  ------------------
  |  Branch (1016:3): [True: 0, False: 140]
  ------------------
 1017|    140|		}
 1018|    140|	}
 1019|      0|	case json_type_double:
  ------------------
  |  Branch (1019:2): [True: 0, False: 140]
  ------------------
 1020|       |		// INT64_MAX can't be exactly represented as a double, so it
 1021|       |		// rounds up to (double)(INT64_MAX+1).  Use >= so that value is
 1022|       |		// rejected rather than cast to int64_t, which would be UB.
 1023|      0|		if (JC_DOUBLE_C(jso)->c_double >= (double)INT64_MAX)
  ------------------
  |  Branch (1023:7): [True: 0, False: 0]
  ------------------
 1024|      0|		{
 1025|      0|			errno = ERANGE;
 1026|      0|			return INT64_MAX;
 1027|      0|		}
 1028|      0|		if (JC_DOUBLE_C(jso)->c_double < (double)INT64_MIN)
  ------------------
  |  Branch (1028:7): [True: 0, False: 0]
  ------------------
 1029|      0|		{
 1030|      0|			errno = ERANGE;
 1031|      0|			return INT64_MIN;
 1032|      0|		}
 1033|      0|		if (isnan(JC_DOUBLE_C(jso)->c_double))
  ------------------
  |  Branch (1033:7): [True: 0, False: 0]
  ------------------
 1034|      0|		{
 1035|      0|			errno = EINVAL;
 1036|      0|			return INT64_MIN;
 1037|      0|		}
 1038|      0|		return (int64_t)JC_DOUBLE_C(jso)->c_double;
 1039|      0|	case json_type_boolean: return JC_BOOL_C(jso)->c_boolean;
  ------------------
  |  Branch (1039:2): [True: 0, False: 140]
  ------------------
 1040|      0|	case json_type_string:
  ------------------
  |  Branch (1040:2): [True: 0, False: 140]
  ------------------
 1041|      0|		if (json_parse_int64(get_string_component(jso), &cint) == 0)
  ------------------
  |  Branch (1041:7): [True: 0, False: 0]
  ------------------
 1042|      0|			return cint;
 1043|       |		/* FALLTHRU */
 1044|      0|	default: return 0;
  ------------------
  |  Branch (1044:2): [True: 0, False: 140]
  ------------------
 1045|    140|	}
 1046|    140|}
json_object_new_double:
 1348|    830|{
 1349|    830|	struct json_object_double *jso = JSON_OBJECT_NEW(double);
  ------------------
  |  |  133|    830|	(struct JC_CONCAT(json_object_, jtype) *)json_object_new(                        \
  |  |  134|    830|	    JC_CONCAT(json_type_, jtype), sizeof(struct JC_CONCAT(json_object_, jtype)), \
  |  |  ------------------
  |  |  |  |  129|    830|#define JC_CONCAT(a, b) a##b
  |  |  ------------------
  |  |  135|    830|	    &JC_CONCAT3(json_object_, jtype, _to_json_string))
  |  |  ------------------
  |  |  |  |  130|    830|#define JC_CONCAT3(a, b, c) a##b##c
  |  |  ------------------
  ------------------
 1350|    830|	if (!jso)
  ------------------
  |  Branch (1350:6): [True: 0, False: 830]
  ------------------
 1351|      0|		return NULL;
 1352|    830|	jso->base._to_json_string = &json_object_double_to_json_string_default;
 1353|    830|	jso->c_double = d;
 1354|    830|	return &jso->base;
 1355|    830|}
json_object_new_double_s:
 1358|    606|{
 1359|    606|	char *new_ds;
 1360|    606|	struct json_object *jso = json_object_new_double(d);
 1361|    606|	if (!jso)
  ------------------
  |  Branch (1361:6): [True: 0, False: 606]
  ------------------
 1362|      0|		return NULL;
 1363|       |
 1364|    606|	new_ds = strdup(ds);
 1365|    606|	if (!new_ds)
  ------------------
  |  Branch (1365:6): [True: 0, False: 606]
  ------------------
 1366|      0|	{
 1367|      0|		json_object_generic_delete(jso);
 1368|      0|		errno = ENOMEM;
 1369|      0|		return NULL;
 1370|      0|	}
 1371|    606|	json_object_set_serializer(jso, _json_object_userdata_to_json_string, new_ds,
 1372|    606|	                           json_object_free_userdata);
 1373|    606|	return jso;
 1374|    606|}
json_object_userdata_to_json_string:
 1389|    177|{
 1390|    177|	int userdata_len = strlen((const char *)jso->_userdata);
 1391|    177|	printbuf_memappend(pb, (const char *)jso->_userdata, userdata_len);
 1392|    177|	return userdata_len;
 1393|    177|}
json_object_free_userdata:
 1396|    693|{
 1397|    693|	free(userdata);
 1398|    693|}
json_object_new_string_len:
 1568|  94.1k|{
 1569|  94.1k|	return _json_object_new_string(s, len);
 1570|  94.1k|}
json_object_get_string:
 1573|   169k|{
 1574|   169k|	if (!jso)
  ------------------
  |  Branch (1574:6): [True: 0, False: 169k]
  ------------------
 1575|      0|		return NULL;
 1576|   169k|	switch (jso->o_type)
 1577|   169k|	{
 1578|   169k|	case json_type_string: return get_string_component(jso);
  ------------------
  |  Branch (1578:2): [True: 169k, False: 32]
  ------------------
 1579|     32|	default: return json_object_to_json_string(jso);
  ------------------
  |  Branch (1579:2): [True: 32, False: 169k]
  ------------------
 1580|   169k|	}
 1581|   169k|}
json_object_new_array:
 1722|  13.1k|{
 1723|  13.1k|	return json_object_new_array_ext(ARRAY_LIST_DEFAULT_SIZE);
  ------------------
  |  |   27|  13.1k|#define ARRAY_LIST_DEFAULT_SIZE 32
  ------------------
 1724|  13.1k|}
json_object_new_array_ext:
 1726|  13.1k|{
 1727|  13.1k|	struct json_object_array *jso = JSON_OBJECT_NEW(array);
  ------------------
  |  |  133|  13.1k|	(struct JC_CONCAT(json_object_, jtype) *)json_object_new(                        \
  |  |  134|  13.1k|	    JC_CONCAT(json_type_, jtype), sizeof(struct JC_CONCAT(json_object_, jtype)), \
  |  |  ------------------
  |  |  |  |  129|  13.1k|#define JC_CONCAT(a, b) a##b
  |  |  ------------------
  |  |  135|  13.1k|	    &JC_CONCAT3(json_object_, jtype, _to_json_string))
  |  |  ------------------
  |  |  |  |  130|  13.1k|#define JC_CONCAT3(a, b, c) a##b##c
  |  |  ------------------
  ------------------
 1728|  13.1k|	if (!jso)
  ------------------
  |  Branch (1728:6): [True: 0, False: 13.1k]
  ------------------
 1729|      0|		return NULL;
 1730|  13.1k|	jso->c_array = array_list_new2(&json_object_array_entry_free, initial_size);
 1731|  13.1k|	if (jso->c_array == NULL)
  ------------------
  |  Branch (1731:6): [True: 0, False: 13.1k]
  ------------------
 1732|      0|	{
 1733|      0|		free(jso);
 1734|      0|		return NULL;
 1735|      0|	}
 1736|  13.1k|	return &jso->base;
 1737|  13.1k|}
json_object_array_length:
 1772|  99.9k|{
 1773|  99.9k|	assert(json_object_get_type(jso) == json_type_array);
  ------------------
  |  Branch (1773:2): [True: 0, False: 99.9k]
  |  Branch (1773:2): [True: 99.9k, False: 0]
  ------------------
 1774|  99.9k|	return array_list_length(JC_ARRAY_C(jso)->c_array);
 1775|  99.9k|}
json_object_array_add:
 1778|  37.6k|{
 1779|  37.6k|	assert(json_object_get_type(jso) == json_type_array);
  ------------------
  |  Branch (1779:2): [True: 0, False: 37.6k]
  |  Branch (1779:2): [True: 37.6k, False: 0]
  ------------------
 1780|  37.6k|	return array_list_add(JC_ARRAY(jso)->c_array, val);
 1781|  37.6k|}
json_object_array_get_idx:
 1802|  77.9k|{
 1803|  77.9k|	assert(json_object_get_type(jso) == json_type_array);
  ------------------
  |  Branch (1803:2): [True: 0, False: 77.9k]
  |  Branch (1803:2): [True: 77.9k, False: 0]
  ------------------
 1804|  77.9k|	return (struct json_object *)array_list_get_idx(JC_ARRAY_C(jso)->c_array, idx);
 1805|  77.9k|}
json_object_array_shrink:
 1825|  9.83k|{
 1826|  9.83k|	if (empty_slots < 0)
  ------------------
  |  Branch (1826:6): [True: 0, False: 9.83k]
  ------------------
 1827|      0|		json_abort("json_object_array_shrink called with negative empty_slots");
 1828|  9.83k|	return array_list_shrink(JC_ARRAY(jso)->c_array, empty_slots);
 1829|  9.83k|}
json_c_shallow_copy_default:
 1959|  38.0k|{
 1960|  38.0k|	switch (src->o_type)
 1961|  38.0k|	{
 1962|     20|	case json_type_boolean: *dst = json_object_new_boolean(JC_BOOL(src)->c_boolean); break;
  ------------------
  |  Branch (1962:2): [True: 20, False: 38.0k]
  ------------------
 1963|       |
 1964|    100|	case json_type_double: *dst = json_object_new_double(JC_DOUBLE(src)->c_double); break;
  ------------------
  |  Branch (1964:2): [True: 100, False: 37.9k]
  ------------------
 1965|       |
 1966|    577|	case json_type_int:
  ------------------
  |  Branch (1966:2): [True: 577, False: 37.4k]
  ------------------
 1967|    577|		switch (JC_INT(src)->cint_type)
 1968|    577|		{
 1969|    570|		case json_object_int_type_int64:
  ------------------
  |  Branch (1969:3): [True: 570, False: 7]
  ------------------
 1970|    570|			*dst = json_object_new_int64(JC_INT(src)->cint.c_int64);
 1971|    570|			break;
 1972|      7|		case json_object_int_type_uint64:
  ------------------
  |  Branch (1972:3): [True: 7, False: 570]
  ------------------
 1973|      7|			*dst = json_object_new_uint64(JC_INT(src)->cint.c_uint64);
 1974|      7|			break;
 1975|      0|		default: json_abort("invalid cint_type");
  ------------------
  |  Branch (1975:3): [True: 0, False: 577]
  ------------------
 1976|    577|		}
 1977|    577|		break;
 1978|       |
 1979|  19.6k|	case json_type_string:
  ------------------
  |  Branch (1979:2): [True: 19.6k, False: 18.3k]
  ------------------
 1980|  19.6k|		*dst = json_object_new_string_len(get_string_component(src),
 1981|  19.6k|		                                  _json_object_get_string_len(JC_STRING(src)));
 1982|  19.6k|		break;
 1983|       |
 1984|  14.8k|	case json_type_object: *dst = json_object_new_object(); break;
  ------------------
  |  Branch (1984:2): [True: 14.8k, False: 23.1k]
  ------------------
 1985|       |
 1986|  2.83k|	case json_type_array: *dst = json_object_new_array(); break;
  ------------------
  |  Branch (1986:2): [True: 2.83k, False: 35.2k]
  ------------------
 1987|       |
 1988|      0|	default: errno = EINVAL; return -1;
  ------------------
  |  Branch (1988:2): [True: 0, False: 38.0k]
  ------------------
 1989|  38.0k|	}
 1990|       |
 1991|  38.0k|	if (!*dst)
  ------------------
  |  Branch (1991:6): [True: 0, False: 38.0k]
  ------------------
 1992|      0|	{
 1993|      0|		errno = ENOMEM;
 1994|      0|		return -1;
 1995|      0|	}
 1996|  38.0k|	(*dst)->_to_json_string = src->_to_json_string;
 1997|       |	// _userdata and _user_delete are copied later
 1998|  38.0k|	return 1;
 1999|  38.0k|}
json_object_deep_copy:
 2086|  2.09k|{
 2087|  2.09k|	int rc;
 2088|       |
 2089|       |	/* Check if arguments are sane ; *dst must not point to a non-NULL object */
 2090|  2.09k|	if (!src || !dst || *dst)
  ------------------
  |  Branch (2090:6): [True: 0, False: 2.09k]
  |  Branch (2090:14): [True: 0, False: 2.09k]
  |  Branch (2090:22): [True: 0, False: 2.09k]
  ------------------
 2091|      0|	{
 2092|      0|		errno = EINVAL;
 2093|      0|		return -1;
 2094|      0|	}
 2095|       |
 2096|  2.09k|	if (shallow_copy == NULL)
  ------------------
  |  Branch (2096:6): [True: 2.09k, False: 0]
  ------------------
 2097|  2.09k|		shallow_copy = json_c_shallow_copy_default;
 2098|       |
 2099|  2.09k|	rc = json_object_deep_copy_recursive(src, NULL, NULL, UINT_MAX, dst, shallow_copy);
 2100|  2.09k|	if (rc < 0)
  ------------------
  |  Branch (2100:6): [True: 0, False: 2.09k]
  ------------------
 2101|      0|	{
 2102|      0|		json_object_put(*dst);
 2103|      0|		*dst = NULL;
 2104|      0|	}
 2105|       |
 2106|  2.09k|	return rc;
 2107|  2.09k|}
json_object.c:_json_object_put_maybe_free:
  301|   379k|{
  302|       |	/* Avoid invalid free and crash explicitly instead of (silently)
  303|       |	 * segfaulting.
  304|       |	 */
  305|   379k|	assert(jso->_ref_count > 0);
  ------------------
  |  Branch (305:2): [True: 0, False: 379k]
  |  Branch (305:2): [True: 379k, False: 0]
  ------------------
  306|       |
  307|       |#if defined(HAVE_ATOMIC_BUILTINS) && defined(ENABLE_THREADING)
  308|       |	/* Note: this only allow the refcount to remain correct
  309|       |	 * when multiple threads are adjusting it.  It is still an error
  310|       |	 * for a thread to decrement the refcount if it doesn't "own" it,
  311|       |	 * as that can result in the thread that loses the race to 0
  312|       |	 * operating on an already-freed object.
  313|       |	 */
  314|       |	if (__sync_sub_and_fetch(&jso->_ref_count, 1) > 0)
  315|       |#else
  316|   379k|	if (--jso->_ref_count > 0)
  ------------------
  |  Branch (316:6): [True: 144k, False: 234k]
  ------------------
  317|   144k|#endif
  318|   144k|	{
  319|   144k|		return json_object_put_still_refd;
  320|   144k|	}
  321|       |
  322|   234k|	if (jso->_user_delete)
  ------------------
  |  Branch (322:6): [True: 693, False: 234k]
  ------------------
  323|    693|		jso->_user_delete(jso, jso->_userdata);
  324|   234k|	jso->_user_delete = NULL;
  325|   234k|	jso->_userdata = NULL; // aka _delete_parent, but json_object_put() will
  326|       |	                       // have already grabbed it if it needs it.
  327|       |
  328|   234k|	switch (jso->o_type)
  329|   234k|	{
  330|   102k|	case json_type_object: 
  ------------------
  |  Branch (330:2): [True: 102k, False: 132k]
  ------------------
  331|   102k|		if (free_containers || lh_table_length(JC_OBJECT(jso)->c_object) == 0)
  ------------------
  |  Branch (331:7): [True: 38.6k, False: 64.1k]
  |  Branch (331:26): [True: 25.5k, False: 38.6k]
  ------------------
  332|  64.1k|		{
  333|  64.1k|			json_object_object_delete(jso);
  334|  64.1k|			break;
  335|  64.1k|		}
  336|  38.6k|		return json_object_put_container;
  337|  25.3k|	case json_type_array:
  ------------------
  |  Branch (337:2): [True: 25.3k, False: 209k]
  ------------------
  338|       |		// container objects are handled by the caller
  339|  25.3k|		if (free_containers || array_list_length(JC_ARRAY(jso)->c_array) == 0)
  ------------------
  |  Branch (339:7): [True: 12.2k, False: 13.1k]
  |  Branch (339:26): [True: 874, False: 12.2k]
  ------------------
  340|  13.1k|		{
  341|  13.1k|			json_object_array_delete(jso);
  342|  13.1k|			break;
  343|  13.1k|		}
  344|  12.2k|		return json_object_put_container;
  345|  94.1k|	case json_type_string:
  ------------------
  |  Branch (345:2): [True: 94.1k, False: 140k]
  ------------------
  346|  94.1k|		json_object_string_delete(jso);
  347|  94.1k|		break;
  348|  12.5k|	default:
  ------------------
  |  Branch (348:2): [True: 12.5k, False: 222k]
  ------------------
  349|  12.5k|		json_object_generic_delete(jso);
  350|  12.5k|		break;
  351|   234k|	}
  352|   183k|	return json_object_put_freed;
  353|   234k|}
json_object.c:json_object_object_delete:
  700|  64.1k|{
  701|  64.1k|	lh_table_free(JC_OBJECT(jso_base)->c_object);
  702|  64.1k|	json_object_generic_delete(jso_base);
  703|  64.1k|}
json_object.c:json_object_array_delete:
 1716|  13.1k|{
 1717|  13.1k|	array_list_free(JC_ARRAY(jso)->c_array);
 1718|  13.1k|	json_object_generic_delete(jso);
 1719|  13.1k|}
json_object.c:json_object_string_delete:
 1518|  94.1k|{
 1519|  94.1k|	if (JC_STRING(jso)->len < 0)
  ------------------
  |  Branch (1519:6): [True: 0, False: 94.1k]
  ------------------
 1520|      0|		free(JC_STRING(jso)->c_string.pdata);
 1521|  94.1k|	json_object_generic_delete(jso);
 1522|  94.1k|}
json_object.c:JC_OBJECT:
   81|   735k|{
   82|   735k|	return (void *)jso;
   83|   735k|}
json_object.c:JC_ARRAY:
   89|   161k|{
   90|   161k|	return (void *)jso;
   91|   161k|}
json_object.c:json_object_object_to_json_string:
  638|  42.7k|{
  639|  42.7k|	int had_children = 0;
  640|  42.7k|	struct json_object_iter iter;
  641|       |
  642|  42.7k|	printbuf_strappend(pb, "{" /*}*/);
  ------------------
  |  |   95|  42.7k|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   78|  42.7k|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  643|  42.7k|	json_object_object_foreachC(jso, iter)
  ------------------
  |  |  530|  42.7k|	for (iter.entry = lh_table_head(json_object_get_object(obj));                                    \
  |  |  531|   125k|	     (iter.entry ? (iter.key = (char *)lh_entry_k(iter.entry),                          \
  |  |  ------------------
  |  |  |  Branch (531:7): [True: 82.5k, False: 42.7k]
  |  |  |  Branch (531:8): [True: 82.5k, False: 42.7k]
  |  |  ------------------
  |  |  532|  82.5k|	                   iter.val = (struct json_object *)lh_entry_v(iter.entry), iter.entry) \
  |  |  533|   125k|	                 : 0);                                                                  \
  |  |  534|  82.5k|	     iter.entry = lh_entry_next(iter.entry))
  ------------------
  644|  82.5k|	{
  645|  82.5k|		if (had_children)
  ------------------
  |  Branch (645:7): [True: 57.7k, False: 24.7k]
  ------------------
  646|  57.7k|		{
  647|  57.7k|			printbuf_strappend(pb, ",");
  ------------------
  |  |   95|  57.7k|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   78|  57.7k|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  648|  57.7k|		}
  649|  82.5k|		if (flags & JSON_C_TO_STRING_PRETTY)
  ------------------
  |  |   58|  82.5k|#define JSON_C_TO_STRING_PRETTY (1 << 1)
  ------------------
  |  Branch (649:7): [True: 0, False: 82.5k]
  ------------------
  650|      0|			printbuf_strappend(pb, "\n");
  ------------------
  |  |   95|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   78|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  651|  82.5k|		had_children = 1;
  652|  82.5k|		if (flags & JSON_C_TO_STRING_SPACED && !(flags & JSON_C_TO_STRING_PRETTY))
  ------------------
  |  |   49|   165k|#define JSON_C_TO_STRING_SPACED (1 << 0)
  ------------------
              		if (flags & JSON_C_TO_STRING_SPACED && !(flags & JSON_C_TO_STRING_PRETTY))
  ------------------
  |  |   58|      0|#define JSON_C_TO_STRING_PRETTY (1 << 1)
  ------------------
  |  Branch (652:7): [True: 0, False: 82.5k]
  |  Branch (652:42): [True: 0, False: 0]
  ------------------
  653|      0|			printbuf_strappend(pb, " ");
  ------------------
  |  |   95|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   78|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  654|  82.5k|		indent(pb, level + 1, flags);
  655|  82.5k|		if (flags & JSON_C_TO_STRING_COLOR)
  ------------------
  |  |   84|  82.5k|#define JSON_C_TO_STRING_COLOR (1 << 5)
  ------------------
  |  Branch (655:7): [True: 0, False: 82.5k]
  ------------------
  656|      0|			printbuf_strappend(pb, ANSI_COLOR_FG_BLUE);
  ------------------
  |  |   95|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   78|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  657|       |
  658|  82.5k|		printbuf_strappend(pb, "\"");
  ------------------
  |  |   95|  82.5k|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   78|  82.5k|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  659|  82.5k|		json_escape_str(pb, iter.key, strlen(iter.key), flags);
  660|  82.5k|		printbuf_strappend(pb, "\"");
  ------------------
  |  |   95|  82.5k|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   78|  82.5k|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  661|       |
  662|  82.5k|		if (flags & JSON_C_TO_STRING_COLOR)
  ------------------
  |  |   84|  82.5k|#define JSON_C_TO_STRING_COLOR (1 << 5)
  ------------------
  |  Branch (662:7): [True: 0, False: 82.5k]
  ------------------
  663|      0|			printbuf_strappend(pb, ANSI_COLOR_RESET);
  ------------------
  |  |   95|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   78|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  664|       |
  665|  82.5k|		if (flags & JSON_C_TO_STRING_SPACED)
  ------------------
  |  |   49|  82.5k|#define JSON_C_TO_STRING_SPACED (1 << 0)
  ------------------
  |  Branch (665:7): [True: 0, False: 82.5k]
  ------------------
  666|      0|			printbuf_strappend(pb, ": ");
  ------------------
  |  |   95|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   78|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  667|  82.5k|		else
  668|  82.5k|			printbuf_strappend(pb, ":");
  ------------------
  |  |   95|  82.5k|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   78|  82.5k|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  669|       |
  670|  82.5k|		if (iter.val == NULL) {
  ------------------
  |  Branch (670:7): [True: 40, False: 82.4k]
  ------------------
  671|     40|			if (flags & JSON_C_TO_STRING_COLOR)
  ------------------
  |  |   84|     40|#define JSON_C_TO_STRING_COLOR (1 << 5)
  ------------------
  |  Branch (671:8): [True: 0, False: 40]
  ------------------
  672|      0|				printbuf_strappend(pb, ANSI_COLOR_FG_MAGENTA);
  ------------------
  |  |   95|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   78|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  673|     40|			printbuf_strappend(pb, "null");
  ------------------
  |  |   95|     40|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   78|     40|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  674|     40|			if (flags & JSON_C_TO_STRING_COLOR)
  ------------------
  |  |   84|     40|#define JSON_C_TO_STRING_COLOR (1 << 5)
  ------------------
  |  Branch (674:8): [True: 0, False: 40]
  ------------------
  675|      0|				printbuf_strappend(pb, ANSI_COLOR_RESET);
  ------------------
  |  |   95|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   78|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  676|  82.4k|		} else if (iter.val->_to_json_string(iter.val, pb, level + 1, flags) < 0)
  ------------------
  |  Branch (676:14): [True: 0, False: 82.4k]
  ------------------
  677|      0|			return -1;
  678|  82.5k|	}
  679|  42.7k|	if ((flags & JSON_C_TO_STRING_PRETTY) && had_children)
  ------------------
  |  |   58|  42.7k|#define JSON_C_TO_STRING_PRETTY (1 << 1)
  ------------------
  |  Branch (679:6): [True: 0, False: 42.7k]
  |  Branch (679:43): [True: 0, False: 0]
  ------------------
  680|      0|	{
  681|      0|		printbuf_strappend(pb, "\n");
  ------------------
  |  |   95|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   78|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  682|      0|		indent(pb, level, flags);
  683|      0|	}
  684|  42.7k|	if (flags & JSON_C_TO_STRING_SPACED && !(flags & JSON_C_TO_STRING_PRETTY))
  ------------------
  |  |   49|  85.5k|#define JSON_C_TO_STRING_SPACED (1 << 0)
  ------------------
              	if (flags & JSON_C_TO_STRING_SPACED && !(flags & JSON_C_TO_STRING_PRETTY))
  ------------------
  |  |   58|      0|#define JSON_C_TO_STRING_PRETTY (1 << 1)
  ------------------
  |  Branch (684:6): [True: 0, False: 42.7k]
  |  Branch (684:41): [True: 0, False: 0]
  ------------------
  685|      0|		return printbuf_strappend(pb, /*{*/ " }");
  ------------------
  |  |   95|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   78|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  686|  42.7k|	else
  687|  42.7k|		return printbuf_strappend(pb, /*{*/ "}");
  ------------------
  |  |   95|  42.7k|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   78|  42.7k|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  688|  42.7k|}
json_object.c:indent:
  620|   100k|{
  621|   100k|	if (flags & JSON_C_TO_STRING_PRETTY)
  ------------------
  |  |   58|   100k|#define JSON_C_TO_STRING_PRETTY (1 << 1)
  ------------------
  |  Branch (621:6): [True: 0, False: 100k]
  ------------------
  622|      0|	{
  623|      0|		if (flags & JSON_C_TO_STRING_PRETTY_TAB)
  ------------------
  |  |   66|      0|#define JSON_C_TO_STRING_PRETTY_TAB (1 << 3)
  ------------------
  |  Branch (623:7): [True: 0, False: 0]
  ------------------
  624|      0|		{
  625|      0|			printbuf_memset(pb, -1, '\t', level);
  626|      0|		}
  627|      0|		else
  628|      0|		{
  629|      0|			printbuf_memset(pb, -1, ' ', level * 2);
  630|      0|		}
  631|      0|	}
  632|   100k|}
json_object.c:json_escape_str:
  190|   136k|{
  191|   136k|	size_t pos = 0, start_offset = 0;
  192|   136k|	unsigned char c;
  193|  1.88M|	while (len)
  ------------------
  |  Branch (193:9): [True: 1.75M, False: 136k]
  ------------------
  194|  1.75M|	{
  195|  1.75M|		--len;
  196|  1.75M|		c = str[pos];
  197|  1.75M|		switch (c)
  198|  1.75M|		{
  199|    710|		case '\b':
  ------------------
  |  Branch (199:3): [True: 710, False: 1.75M]
  ------------------
  200|  16.6k|		case '\n':
  ------------------
  |  Branch (200:3): [True: 15.8k, False: 1.73M]
  ------------------
  201|  16.8k|		case '\r':
  ------------------
  |  Branch (201:3): [True: 211, False: 1.75M]
  ------------------
  202|  20.0k|		case '\t':
  ------------------
  |  Branch (202:3): [True: 3.20k, False: 1.74M]
  ------------------
  203|  21.2k|		case '\f':
  ------------------
  |  Branch (203:3): [True: 1.25k, False: 1.75M]
  ------------------
  204|  27.0k|		case '"':
  ------------------
  |  Branch (204:3): [True: 5.81k, False: 1.74M]
  ------------------
  205|  37.8k|		case '\\':
  ------------------
  |  Branch (205:3): [True: 10.7k, False: 1.74M]
  ------------------
  206|  65.2k|		case '/':
  ------------------
  |  Branch (206:3): [True: 27.4k, False: 1.72M]
  ------------------
  207|  65.2k|			if ((flags & JSON_C_TO_STRING_NOSLASHESCAPE) && c == '/')
  ------------------
  |  |   75|  65.2k|#define JSON_C_TO_STRING_NOSLASHESCAPE (1 << 4)
  ------------------
  |  Branch (207:8): [True: 65.2k, False: 0]
  |  Branch (207:52): [True: 27.4k, False: 37.8k]
  ------------------
  208|  27.4k|			{
  209|  27.4k|				pos++;
  210|  27.4k|				break;
  211|  27.4k|			}
  212|       |
  213|  37.8k|			if (pos > start_offset)
  ------------------
  |  Branch (213:8): [True: 24.2k, False: 13.5k]
  ------------------
  214|  24.2k|				printbuf_memappend(pb, str + start_offset, pos - start_offset);
  215|       |
  216|  37.8k|			if (c == '\b')
  ------------------
  |  Branch (216:8): [True: 710, False: 37.1k]
  ------------------
  217|    710|				printbuf_memappend(pb, "\\b", 2);
  218|  37.1k|			else if (c == '\n')
  ------------------
  |  Branch (218:13): [True: 15.8k, False: 21.2k]
  ------------------
  219|  15.8k|				printbuf_memappend(pb, "\\n", 2);
  220|  21.2k|			else if (c == '\r')
  ------------------
  |  Branch (220:13): [True: 211, False: 21.0k]
  ------------------
  221|    211|				printbuf_memappend(pb, "\\r", 2);
  222|  21.0k|			else if (c == '\t')
  ------------------
  |  Branch (222:13): [True: 3.20k, False: 17.8k]
  ------------------
  223|  3.20k|				printbuf_memappend(pb, "\\t", 2);
  224|  17.8k|			else if (c == '\f')
  ------------------
  |  Branch (224:13): [True: 1.25k, False: 16.5k]
  ------------------
  225|  1.25k|				printbuf_memappend(pb, "\\f", 2);
  226|  16.5k|			else if (c == '"')
  ------------------
  |  Branch (226:13): [True: 5.81k, False: 10.7k]
  ------------------
  227|  5.81k|				printbuf_memappend(pb, "\\\"", 2);
  228|  10.7k|			else if (c == '\\')
  ------------------
  |  Branch (228:13): [True: 10.7k, False: 0]
  ------------------
  229|  10.7k|				printbuf_memappend(pb, "\\\\", 2);
  230|      0|			else if (c == '/')
  ------------------
  |  Branch (230:13): [True: 0, False: 0]
  ------------------
  231|      0|				printbuf_memappend(pb, "\\/", 2);
  232|       |
  233|  37.8k|			start_offset = ++pos;
  234|  37.8k|			break;
  235|  1.68M|		default:
  ------------------
  |  Branch (235:3): [True: 1.68M, False: 65.2k]
  ------------------
  236|  1.68M|			if (c < ' ')
  ------------------
  |  Branch (236:8): [True: 86.0k, False: 1.60M]
  ------------------
  237|  86.0k|			{
  238|  86.0k|				char sbuf[7];
  239|  86.0k|				if (pos > start_offset)
  ------------------
  |  Branch (239:9): [True: 1.38k, False: 84.6k]
  ------------------
  240|  1.38k|					printbuf_memappend(pb, str + start_offset,
  241|  1.38k|					                   pos - start_offset);
  242|  86.0k|				snprintf(sbuf, sizeof(sbuf), "\\u00%c%c", json_hex_chars[c >> 4],
  243|  86.0k|				         json_hex_chars[c & 0xf]);
  244|  86.0k|				printbuf_memappend_fast(pb, sbuf, (int)sizeof(sbuf) - 1);
  ------------------
  |  |   59|  86.0k|	do                                                           \
  |  |   60|  86.0k|	{                                                            \
  |  |   61|  86.0k|		if ((p->size - p->bpos) > bufsize)                   \
  |  |  ------------------
  |  |  |  Branch (61:7): [True: 85.9k, False: 84]
  |  |  ------------------
  |  |   62|  86.0k|		{                                                    \
  |  |   63|  85.9k|			memcpy(p->buf + p->bpos, (bufptr), bufsize); \
  |  |   64|  85.9k|			p->bpos += bufsize;                          \
  |  |   65|  85.9k|			p->buf[p->bpos] = '\0';                      \
  |  |   66|  85.9k|		}                                                    \
  |  |   67|  86.0k|		else                                                 \
  |  |   68|  86.0k|		{                                                    \
  |  |   69|     84|			printbuf_memappend(p, (bufptr), bufsize);    \
  |  |   70|     84|		}                                                    \
  |  |   71|  86.0k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (71:11): [Folded, False: 86.0k]
  |  |  ------------------
  ------------------
  245|  86.0k|				start_offset = ++pos;
  246|  86.0k|			}
  247|  1.60M|			else
  248|  1.60M|				pos++;
  249|  1.75M|		}
  250|  1.75M|	}
  251|   136k|	if (pos > start_offset)
  ------------------
  |  Branch (251:6): [True: 135k, False: 1.47k]
  ------------------
  252|   135k|		printbuf_memappend(pb, str + start_offset, pos - start_offset);
  253|   136k|	return 0;
  254|   136k|}
json_object.c:json_object_new:
  491|   183k|{
  492|   183k|	struct json_object *jso;
  493|       |
  494|   183k|	jso = (struct json_object *)malloc(alloc_size);
  495|   183k|	if (!jso)
  ------------------
  |  Branch (495:6): [True: 0, False: 183k]
  ------------------
  496|      0|		return NULL;
  497|       |
  498|   183k|	jso->o_type = o_type;
  499|   183k|	jso->_ref_count = 1;
  500|   183k|	jso->_to_json_string = to_json_string;
  501|   183k|	jso->_pb = NULL;
  502|   183k|	jso->_user_delete = NULL;
  503|   183k|	jso->_userdata = NULL;
  504|       |	//jso->...   // Type-specific fields must be set by caller
  505|       |
  506|   183k|	return jso;
  507|   183k|}
json_object.c:json_object_lh_entry_free:
  691|   132k|{
  692|   132k|	struct json_object *jso = (struct json_object *)lh_entry_v(ent);
  693|   132k|	if (!lh_entry_k_is_constant(ent))
  ------------------
  |  Branch (693:6): [True: 132k, False: 0]
  ------------------
  694|   132k|		free(lh_entry_k(ent));
  695|   132k|	if (jso) // micro-opt, skip func call on null object
  ------------------
  |  Branch (695:6): [True: 396, False: 132k]
  ------------------
  696|    396|		json_object_put(jso);
  697|   132k|}
json_object.c:json_object_generic_delete:
  484|   183k|{
  485|   183k|	printbuf_free(jso->_pb);
  486|   183k|	free(jso);
  487|   183k|}
json_object.c:JC_OBJECT_C:
   85|   378k|{
   86|   378k|	return (const void *)jso;
   87|   378k|}
json_object.c:json_object_boolean_to_json_string:
  823|     41|{
  824|     41|	int ret;
  825|       |
  826|     41|	if (flags & JSON_C_TO_STRING_COLOR)
  ------------------
  |  |   84|     41|#define JSON_C_TO_STRING_COLOR (1 << 5)
  ------------------
  |  Branch (826:6): [True: 0, False: 41]
  ------------------
  827|      0|		printbuf_strappend(pb, ANSI_COLOR_FG_MAGENTA);
  ------------------
  |  |   95|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   78|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  828|       |
  829|     41|	if (JC_BOOL(jso)->c_boolean)
  ------------------
  |  Branch (829:6): [True: 24, False: 17]
  ------------------
  830|     24|		ret = printbuf_strappend(pb, "true");
  ------------------
  |  |   95|     24|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   78|     24|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  831|     17|	else
  832|     17|		ret = printbuf_strappend(pb, "false");
  ------------------
  |  |   95|     17|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   78|     17|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  833|     41|	if (ret > -1 && flags & JSON_C_TO_STRING_COLOR)
  ------------------
  |  |   84|     41|#define JSON_C_TO_STRING_COLOR (1 << 5)
  ------------------
  |  Branch (833:6): [True: 41, False: 0]
  |  Branch (833:18): [True: 0, False: 41]
  ------------------
  834|      0|		return printbuf_strappend(pb, ANSI_COLOR_RESET);
  ------------------
  |  |   95|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   78|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  835|     41|	return ret;
  836|     41|}
json_object.c:JC_BOOL_C:
  101|      4|{
  102|      4|	return (const void *)jso;
  103|      4|}
json_object.c:JC_INT_C:
  117|    383|{
  118|    383|	return (const void *)jso;
  119|    383|}
json_object.c:JC_DOUBLE_C:
  109|      4|{
  110|      4|	return (const void *)jso;
  111|      4|}
json_object.c:JC_STRING_C:
  125|   243k|{
  126|   243k|	return (const void *)jso;
  127|   243k|}
json_object.c:JC_BOOL:
   97|     61|{
   98|     61|	return (void *)jso;
   99|     61|}
json_object.c:json_object_int_to_json_string:
  879|  1.38k|{
  880|       |	/* room for 19 digits, the sign char, and a null term */
  881|  1.38k|	char sbuf[21];
  882|  1.38k|	if (JC_INT(jso)->cint_type == json_object_int_type_int64)
  ------------------
  |  Branch (882:6): [True: 1.36k, False: 20]
  ------------------
  883|  1.36k|		snprintf(sbuf, sizeof(sbuf), "%" PRId64, JC_INT(jso)->cint.c_int64);
  884|     20|	else
  885|     20|		snprintf(sbuf, sizeof(sbuf), "%" PRIu64, JC_INT(jso)->cint.c_uint64);
  886|  1.38k|	return printbuf_memappend(pb, sbuf, strlen(sbuf));
  887|  1.38k|}
json_object.c:get_string_component:
  183|   243k|{
  184|   243k|	return get_string_component_mutable((void *)(uintptr_t)(const void *)jso);
  185|   243k|}
json_object.c:get_string_component_mutable:
  174|   243k|{
  175|   243k|	if (JC_STRING_C(jso)->len < 0)
  ------------------
  |  Branch (175:6): [True: 0, False: 243k]
  ------------------
  176|      0|	{
  177|       |		/* Due to json_object_set_string(), we might have a pointer */
  178|      0|		return JC_STRING(jso)->c_string.pdata;
  179|      0|	}
  180|   243k|	return JC_STRING(jso)->c_string.idata;
  181|   243k|}
json_object.c:JC_INT:
  113|  3.93k|{
  114|  3.93k|	return (void *)jso;
  115|  3.93k|}
json_object.c:json_object_double_to_json_string_default:
 1336|     26|{
 1337|       |	return json_object_double_to_json_string_format(jso, pb, level, flags, NULL);
 1338|     26|}
json_object.c:json_object_double_to_json_string_format:
 1243|     26|{
 1244|     26|	struct json_object_double *jsodbl = JC_DOUBLE(jso);
 1245|     26|	char buf[128], *p, *q;
 1246|     26|	int size;
 1247|       |	/* Although JSON RFC does not support
 1248|       |	 * NaN or Infinity as numeric values
 1249|       |	 * ECMA 262 section 9.8.1 defines
 1250|       |	 * how to handle these cases as strings
 1251|       |	 */
 1252|     26|	if (isnan(jsodbl->c_double))
  ------------------
  |  Branch (1252:6): [True: 26, False: 0]
  ------------------
 1253|     26|	{
 1254|     26|		size = snprintf(buf, sizeof(buf), "NaN");
 1255|     26|	}
 1256|      0|	else if (isinf(jsodbl->c_double))
  ------------------
  |  Branch (1256:11): [True: 0, False: 0]
  ------------------
 1257|      0|	{
 1258|      0|		if (jsodbl->c_double > 0)
  ------------------
  |  Branch (1258:7): [True: 0, False: 0]
  ------------------
 1259|      0|			size = snprintf(buf, sizeof(buf), "Infinity");
 1260|      0|		else
 1261|      0|			size = snprintf(buf, sizeof(buf), "-Infinity");
 1262|      0|	}
 1263|      0|	else
 1264|      0|	{
 1265|      0|		const char *std_format = "%.17g";
 1266|      0|		int format_drops_decimals = 0;
 1267|      0|		int looks_numeric = 0;
 1268|       |
 1269|      0|		if (!format)
  ------------------
  |  Branch (1269:7): [True: 0, False: 0]
  ------------------
 1270|      0|		{
 1271|      0|#if defined(HAVE___THREAD)
 1272|      0|			if (tls_serialization_float_format)
  ------------------
  |  Branch (1272:8): [True: 0, False: 0]
  ------------------
 1273|      0|				format = tls_serialization_float_format;
 1274|      0|			else
 1275|      0|#endif
 1276|      0|			    if (global_serialization_float_format)
  ------------------
  |  Branch (1276:12): [True: 0, False: 0]
  ------------------
 1277|      0|				format = global_serialization_float_format;
 1278|      0|			else
 1279|      0|				format = std_format;
 1280|      0|		}
 1281|      0|		size = snprintf(buf, sizeof(buf), format, jsodbl->c_double);
 1282|       |
 1283|      0|		if (size < 0)
  ------------------
  |  Branch (1283:7): [True: 0, False: 0]
  ------------------
 1284|      0|			return -1;
 1285|       |
 1286|      0|		p = strchr(buf, ',');
 1287|      0|		if (p)
  ------------------
  |  Branch (1287:7): [True: 0, False: 0]
  ------------------
 1288|      0|			*p = '.';
 1289|      0|		else
 1290|      0|			p = strchr(buf, '.');
 1291|       |
 1292|      0|		if (format == std_format || strstr(format, ".0f") == NULL)
  ------------------
  |  Branch (1292:7): [True: 0, False: 0]
  |  Branch (1292:31): [True: 0, False: 0]
  ------------------
 1293|      0|			format_drops_decimals = 1;
 1294|       |
 1295|      0|		looks_numeric = /* Looks like *some* kind of number */
 1296|      0|		    is_plain_digit(buf[0]) || (size > 1 && buf[0] == '-' && is_plain_digit(buf[1]));
  ------------------
  |  |   41|      0|#define is_plain_digit(c) ((c) >= '0' && (c) <= '9')
  |  |  ------------------
  |  |  |  Branch (41:28): [True: 0, False: 0]
  |  |  |  Branch (41:42): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              		    is_plain_digit(buf[0]) || (size > 1 && buf[0] == '-' && is_plain_digit(buf[1]));
  ------------------
  |  |   41|      0|#define is_plain_digit(c) ((c) >= '0' && (c) <= '9')
  |  |  ------------------
  |  |  |  Branch (41:28): [True: 0, False: 0]
  |  |  |  Branch (41:42): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1296:34): [True: 0, False: 0]
  |  Branch (1296:46): [True: 0, False: 0]
  ------------------
 1297|       |
 1298|      0|		if (size < (int)sizeof(buf) - 2 && looks_numeric && !p && /* Has no decimal point */
  ------------------
  |  Branch (1298:7): [True: 0, False: 0]
  |  Branch (1298:38): [True: 0, False: 0]
  |  Branch (1298:55): [True: 0, False: 0]
  ------------------
 1299|      0|		    strchr(buf, 'e') == NULL && /* Not scientific notation */
  ------------------
  |  Branch (1299:7): [True: 0, False: 0]
  ------------------
 1300|      0|		    format_drops_decimals)
  ------------------
  |  Branch (1300:7): [True: 0, False: 0]
  ------------------
 1301|      0|		{
 1302|       |			// Ensure it looks like a float, even if snprintf didn't,
 1303|       |			//  unless a custom format is set to omit the decimal.
 1304|      0|			strcat(buf, ".0");
 1305|      0|			size += 2;
 1306|      0|		}
 1307|      0|		if (p && (flags & JSON_C_TO_STRING_NOZERO))
  ------------------
  |  |   70|      0|#define JSON_C_TO_STRING_NOZERO (1 << 2)
  ------------------
  |  Branch (1307:7): [True: 0, False: 0]
  |  Branch (1307:12): [True: 0, False: 0]
  ------------------
 1308|      0|		{
 1309|       |			/* last useful digit, always keep 1 zero */
 1310|      0|			p++;
 1311|      0|			for (q = p; *q; q++)
  ------------------
  |  Branch (1311:16): [True: 0, False: 0]
  ------------------
 1312|      0|			{
 1313|      0|				if (*q != '0')
  ------------------
  |  Branch (1313:9): [True: 0, False: 0]
  ------------------
 1314|      0|					p = q;
 1315|      0|			}
 1316|       |			/* drop trailing zeroes */
 1317|      0|			if (*p != 0)
  ------------------
  |  Branch (1317:8): [True: 0, False: 0]
  ------------------
 1318|      0|				*(++p) = 0;
 1319|      0|			size = p - buf;
 1320|      0|		}
 1321|      0|	}
 1322|       |	// although unlikely, snprintf can fail
 1323|     26|	if (size < 0)
  ------------------
  |  Branch (1323:6): [True: 0, False: 26]
  ------------------
 1324|      0|		return -1;
 1325|       |
 1326|     26|	if (size >= (int)sizeof(buf))
  ------------------
  |  Branch (1326:6): [True: 0, False: 26]
  ------------------
 1327|       |		// The standard formats are guaranteed not to overrun the buffer,
 1328|       |		// but if a custom one happens to do so, just silently truncate.
 1329|      0|		size = sizeof(buf) - 1;
 1330|     26|	printbuf_memappend(pb, buf, size);
 1331|     26|	return size;
 1332|     26|}
json_object.c:_json_object_userdata_to_json_string:
 1383|    177|{
 1384|    177|	return json_object_userdata_to_json_string(jso, pb, level, flags);
 1385|    177|}
json_object.c:JC_DOUBLE:
  105|    126|{
  106|    126|	return (void *)jso;
  107|    126|}
json_object.c:json_object_string_to_json_string:
 1505|  54.3k|{
 1506|  54.3k|	ssize_t len = JC_STRING(jso)->len;
 1507|  54.3k|	if (flags & JSON_C_TO_STRING_COLOR)
  ------------------
  |  |   84|  54.3k|#define JSON_C_TO_STRING_COLOR (1 << 5)
  ------------------
  |  Branch (1507:6): [True: 0, False: 54.3k]
  ------------------
 1508|      0|		printbuf_strappend(pb, ANSI_COLOR_FG_GREEN);
  ------------------
  |  |   95|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   78|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
 1509|  54.3k|	printbuf_strappend(pb, "\"");
  ------------------
  |  |   95|  54.3k|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   78|  54.3k|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
 1510|  54.3k|	json_escape_str(pb, get_string_component(jso), len < 0 ? -(ssize_t)len : len, flags);
  ------------------
  |  Branch (1510:49): [True: 0, False: 54.3k]
  ------------------
 1511|  54.3k|	printbuf_strappend(pb, "\"");
  ------------------
  |  |   95|  54.3k|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   78|  54.3k|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
 1512|  54.3k|	if (flags & JSON_C_TO_STRING_COLOR)
  ------------------
  |  |   84|  54.3k|#define JSON_C_TO_STRING_COLOR (1 << 5)
  ------------------
  |  Branch (1512:6): [True: 0, False: 54.3k]
  ------------------
 1513|      0|		printbuf_strappend(pb, ANSI_COLOR_RESET);
  ------------------
  |  |   95|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   78|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
 1514|  54.3k|	return 0;
 1515|  54.3k|}
json_object.c:_json_object_new_string:
 1525|  94.1k|{
 1526|  94.1k|	size_t objsize;
 1527|  94.1k|	struct json_object_string *jso;
 1528|       |
 1529|       |	/*
 1530|       |	 * Structures           Actual memory layout
 1531|       |	 * -------------------  --------------------
 1532|       |	 * [json_object_string  [json_object_string
 1533|       |	 *  [json_object]        [json_object]
 1534|       |	 *  ...other fields...   ...other fields...
 1535|       |	 *  c_string]            len
 1536|       |	 *                       bytes
 1537|       |	 *                       of
 1538|       |	 *                       string
 1539|       |	 *                       data
 1540|       |	 *                       \0]
 1541|       |	 */
 1542|  94.1k|	if (len > (SSIZE_T_MAX - (sizeof(*jso) - sizeof(jso->c_string)) - 1))
  ------------------
  |  |   51|  94.1k|#define SSIZE_T_MAX LONG_MAX
  ------------------
  |  Branch (1542:6): [True: 0, False: 94.1k]
  ------------------
 1543|      0|		return NULL;
 1544|  94.1k|	objsize = (sizeof(*jso) - sizeof(jso->c_string)) + len + 1;
 1545|  94.1k|	if (len < sizeof(void *))
  ------------------
  |  Branch (1545:6): [True: 63.7k, False: 30.4k]
  ------------------
 1546|       |		// We need a minimum size to support json_object_set_string() mutability
 1547|       |		// so we can stuff a pointer into pdata :(
 1548|  63.7k|		objsize += sizeof(void *) - len;
 1549|       |
 1550|  94.1k|	jso = (struct json_object_string *)json_object_new(json_type_string, objsize,
 1551|  94.1k|	                                                   &json_object_string_to_json_string);
 1552|       |
 1553|  94.1k|	if (!jso)
  ------------------
  |  Branch (1553:6): [True: 0, False: 94.1k]
  ------------------
 1554|      0|		return NULL;
 1555|  94.1k|	jso->len = len;
 1556|  94.1k|	memcpy(jso->c_string.idata, s, len);
 1557|       |	// Cast below needed for Clang UB sanitizer
 1558|  94.1k|	((char *)jso->c_string.idata)[len] = '\0';
 1559|  94.1k|	return &jso->base;
 1560|  94.1k|}
json_object.c:_json_object_get_string_len:
 1584|  19.6k|{
 1585|  19.6k|	ssize_t len;
 1586|  19.6k|	len = jso->len;
 1587|  19.6k|	return (len < 0) ? -(ssize_t)len : len;
  ------------------
  |  Branch (1587:9): [True: 0, False: 19.6k]
  ------------------
 1588|  19.6k|}
json_object.c:json_object_array_to_json_string:
 1667|  7.73k|{
 1668|  7.73k|	int had_children = 0;
 1669|  7.73k|	size_t ii;
 1670|       |
 1671|  7.73k|	printbuf_strappend(pb, "[");
  ------------------
  |  |   95|  7.73k|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   78|  7.73k|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
 1672|  25.7k|	for (ii = 0; ii < json_object_array_length(jso); ii++)
  ------------------
  |  Branch (1672:15): [True: 18.0k, False: 7.73k]
  ------------------
 1673|  18.0k|	{
 1674|  18.0k|		struct json_object *val;
 1675|  18.0k|		if (had_children)
  ------------------
  |  Branch (1675:7): [True: 10.5k, False: 7.46k]
  ------------------
 1676|  10.5k|		{
 1677|  10.5k|			printbuf_strappend(pb, ",");
  ------------------
  |  |   95|  10.5k|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   78|  10.5k|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
 1678|  10.5k|		}
 1679|  18.0k|		if (flags & JSON_C_TO_STRING_PRETTY)
  ------------------
  |  |   58|  18.0k|#define JSON_C_TO_STRING_PRETTY (1 << 1)
  ------------------
  |  Branch (1679:7): [True: 0, False: 18.0k]
  ------------------
 1680|      0|			printbuf_strappend(pb, "\n");
  ------------------
  |  |   95|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   78|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
 1681|  18.0k|		had_children = 1;
 1682|  18.0k|		if (flags & JSON_C_TO_STRING_SPACED && !(flags & JSON_C_TO_STRING_PRETTY))
  ------------------
  |  |   49|  36.0k|#define JSON_C_TO_STRING_SPACED (1 << 0)
  ------------------
              		if (flags & JSON_C_TO_STRING_SPACED && !(flags & JSON_C_TO_STRING_PRETTY))
  ------------------
  |  |   58|      0|#define JSON_C_TO_STRING_PRETTY (1 << 1)
  ------------------
  |  Branch (1682:7): [True: 0, False: 18.0k]
  |  Branch (1682:42): [True: 0, False: 0]
  ------------------
 1683|      0|			printbuf_strappend(pb, " ");
  ------------------
  |  |   95|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   78|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
 1684|  18.0k|		indent(pb, level + 1, flags);
 1685|  18.0k|		val = json_object_array_get_idx(jso, ii);
 1686|  18.0k|		if (val == NULL) {
  ------------------
  |  Branch (1686:7): [True: 30, False: 18.0k]
  ------------------
 1687|       |
 1688|     30|			if (flags & JSON_C_TO_STRING_COLOR)
  ------------------
  |  |   84|     30|#define JSON_C_TO_STRING_COLOR (1 << 5)
  ------------------
  |  Branch (1688:8): [True: 0, False: 30]
  ------------------
 1689|      0|				printbuf_strappend(pb, ANSI_COLOR_FG_MAGENTA);
  ------------------
  |  |   95|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   78|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
 1690|     30|			printbuf_strappend(pb, "null");
  ------------------
  |  |   95|     30|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   78|     30|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
 1691|     30|			if (flags & JSON_C_TO_STRING_COLOR)
  ------------------
  |  |   84|     30|#define JSON_C_TO_STRING_COLOR (1 << 5)
  ------------------
  |  Branch (1691:8): [True: 0, False: 30]
  ------------------
 1692|      0|				printbuf_strappend(pb, ANSI_COLOR_RESET);
  ------------------
  |  |   95|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   78|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
 1693|       |
 1694|  18.0k|		} else if (val->_to_json_string(val, pb, level + 1, flags) < 0)
  ------------------
  |  Branch (1694:14): [True: 0, False: 18.0k]
  ------------------
 1695|      0|			return -1;
 1696|  18.0k|	}
 1697|  7.73k|	if ((flags & JSON_C_TO_STRING_PRETTY) && had_children)
  ------------------
  |  |   58|  7.73k|#define JSON_C_TO_STRING_PRETTY (1 << 1)
  ------------------
  |  Branch (1697:6): [True: 0, False: 7.73k]
  |  Branch (1697:43): [True: 0, False: 0]
  ------------------
 1698|      0|	{
 1699|      0|		printbuf_strappend(pb, "\n");
  ------------------
  |  |   95|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   78|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
 1700|      0|		indent(pb, level, flags);
 1701|      0|	}
 1702|       |
 1703|  7.73k|	if (flags & JSON_C_TO_STRING_SPACED && !(flags & JSON_C_TO_STRING_PRETTY))
  ------------------
  |  |   49|  15.4k|#define JSON_C_TO_STRING_SPACED (1 << 0)
  ------------------
              	if (flags & JSON_C_TO_STRING_SPACED && !(flags & JSON_C_TO_STRING_PRETTY))
  ------------------
  |  |   58|      0|#define JSON_C_TO_STRING_PRETTY (1 << 1)
  ------------------
  |  Branch (1703:6): [True: 0, False: 7.73k]
  |  Branch (1703:41): [True: 0, False: 0]
  ------------------
 1704|      0|		return printbuf_strappend(pb, " ]");
  ------------------
  |  |   95|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   78|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
 1705|  7.73k|	return printbuf_strappend(pb, "]");
  ------------------
  |  |   95|  7.73k|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   78|  7.73k|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
 1706|  7.73k|}
json_object.c:JC_ARRAY_C:
   93|   177k|{
   94|   177k|	return (const void *)jso;
   95|   177k|}
json_object.c:JC_STRING:
  121|   411k|{
  122|   411k|	return (void *)jso;
  123|   411k|}
json_object.c:json_object_deep_copy_recursive:
 2011|  38.0k|{
 2012|  38.0k|	struct json_object_iter iter;
 2013|  38.0k|	size_t src_array_len, ii;
 2014|       |
 2015|  38.0k|	int shallow_copy_rc = 0;
 2016|  38.0k|	shallow_copy_rc = shallow_copy(src, parent, key_in_parent, index_in_parent, dst);
 2017|       |	/* -1=error, 1=object created ok, 2=userdata set */
 2018|  38.0k|	if (shallow_copy_rc < 1)
  ------------------
  |  Branch (2018:6): [True: 0, False: 38.0k]
  ------------------
 2019|      0|	{
 2020|      0|		errno = EINVAL;
 2021|      0|		return -1;
 2022|      0|	}
 2023|  38.0k|	assert(*dst != NULL);
  ------------------
  |  Branch (2023:2): [True: 0, False: 38.0k]
  |  Branch (2023:2): [True: 38.0k, False: 0]
  ------------------
 2024|       |
 2025|  38.0k|	switch (src->o_type)
 2026|  38.0k|	{
 2027|  14.8k|	case json_type_object:
  ------------------
  |  Branch (2027:2): [True: 14.8k, False: 23.1k]
  ------------------
 2028|  14.8k|		json_object_object_foreachC(src, iter)
  ------------------
  |  |  530|  14.8k|	for (iter.entry = lh_table_head(json_object_get_object(obj));                                    \
  |  |  531|  43.7k|	     (iter.entry ? (iter.key = (char *)lh_entry_k(iter.entry),                          \
  |  |  ------------------
  |  |  |  Branch (531:7): [True: 28.8k, False: 14.8k]
  |  |  |  Branch (531:8): [True: 28.8k, False: 14.8k]
  |  |  ------------------
  |  |  532|  28.8k|	                   iter.val = (struct json_object *)lh_entry_v(iter.entry), iter.entry) \
  |  |  533|  43.7k|	                 : 0);                                                                  \
  |  |  534|  28.8k|	     iter.entry = lh_entry_next(iter.entry))
  ------------------
 2029|  28.8k|		{
 2030|  28.8k|			struct json_object *jso = NULL;
 2031|       |			/* This handles the `json_type_null` case */
 2032|  28.8k|			if (!iter.val)
  ------------------
  |  Branch (2032:8): [True: 20, False: 28.8k]
  ------------------
 2033|     20|				jso = NULL;
 2034|  28.8k|			else if (json_object_deep_copy_recursive(iter.val, src, iter.key, UINT_MAX,
  ------------------
  |  Branch (2034:13): [True: 0, False: 28.8k]
  ------------------
 2035|  28.8k|			                                         &jso, shallow_copy) < 0)
 2036|      0|			{
 2037|      0|				json_object_put(jso);
 2038|      0|				return -1;
 2039|      0|			}
 2040|       |
 2041|  28.8k|			if (json_object_object_add(*dst, iter.key, jso) < 0)
  ------------------
  |  Branch (2041:8): [True: 0, False: 28.8k]
  ------------------
 2042|      0|			{
 2043|      0|				json_object_put(jso);
 2044|      0|				return -1;
 2045|      0|			}
 2046|  28.8k|		}
 2047|  14.8k|		break;
 2048|       |
 2049|  14.8k|	case json_type_array:
  ------------------
  |  Branch (2049:2): [True: 2.83k, False: 35.2k]
  ------------------
 2050|  2.83k|		src_array_len = json_object_array_length(src);
 2051|  9.99k|		for (ii = 0; ii < src_array_len; ii++)
  ------------------
  |  Branch (2051:16): [True: 7.16k, False: 2.83k]
  ------------------
 2052|  7.16k|		{
 2053|  7.16k|			struct json_object *jso = NULL;
 2054|  7.16k|			struct json_object *jso1 = json_object_array_get_idx(src, ii);
 2055|       |			/* This handles the `json_type_null` case */
 2056|  7.16k|			if (!jso1)
  ------------------
  |  Branch (2056:8): [True: 15, False: 7.14k]
  ------------------
 2057|     15|				jso = NULL;
 2058|  7.14k|			else if (json_object_deep_copy_recursive(jso1, src, NULL, ii, &jso,
  ------------------
  |  Branch (2058:13): [True: 0, False: 7.14k]
  ------------------
 2059|  7.14k|			                                         shallow_copy) < 0)
 2060|      0|			{
 2061|      0|				json_object_put(jso);
 2062|      0|				return -1;
 2063|      0|			}
 2064|       |
 2065|  7.16k|			if (json_object_array_add(*dst, jso) < 0)
  ------------------
  |  Branch (2065:8): [True: 0, False: 7.16k]
  ------------------
 2066|      0|			{
 2067|      0|				json_object_put(jso);
 2068|      0|				return -1;
 2069|      0|			}
 2070|  7.16k|		}
 2071|  2.83k|		break;
 2072|       |
 2073|  20.3k|	default:
  ------------------
  |  Branch (2073:2): [True: 20.3k, False: 17.6k]
  ------------------
 2074|  20.3k|		break;
 2075|       |		/* else, nothing to do, shallow_copy already did. */
 2076|  38.0k|	}
 2077|       |
 2078|  38.0k|	if (shallow_copy_rc != 2)
  ------------------
  |  Branch (2078:6): [True: 38.0k, False: 0]
  ------------------
 2079|  38.0k|		return json_object_copy_serializer_data(src, *dst);
 2080|       |
 2081|      0|	return 0;
 2082|  38.0k|}
json_object.c:json_object_copy_serializer_data:
 1920|  38.0k|{
 1921|  38.0k|	if (!src->_userdata && !src->_user_delete)
  ------------------
  |  Branch (1921:6): [True: 37.9k, False: 87]
  |  Branch (1921:25): [True: 37.9k, False: 0]
  ------------------
 1922|  37.9k|		return 0;
 1923|       |
 1924|     87|	if (dst->_to_json_string == json_object_userdata_to_json_string ||
  ------------------
  |  Branch (1924:6): [True: 0, False: 87]
  ------------------
 1925|     87|	    dst->_to_json_string == _json_object_userdata_to_json_string)
  ------------------
  |  Branch (1925:6): [True: 87, False: 0]
  ------------------
 1926|     87|	{
 1927|     87|		char *p;
 1928|     87|		assert(src->_userdata);
  ------------------
  |  Branch (1928:3): [True: 0, False: 87]
  |  Branch (1928:3): [True: 87, False: 0]
  ------------------
 1929|     87|		p = strdup(src->_userdata);
 1930|     87|		if (p == NULL)
  ------------------
  |  Branch (1930:7): [True: 0, False: 87]
  ------------------
 1931|      0|		{
 1932|      0|			_json_c_set_last_err("json_object_copy_serializer_data: out of memory\n");
 1933|      0|			return -1;
 1934|      0|		}
 1935|     87|		dst->_userdata = p;
 1936|     87|	}
 1937|       |	// else if ... other supported serializers ...
 1938|      0|	else
 1939|      0|	{
 1940|      0|		_json_c_set_last_err(
 1941|      0|		    "json_object_copy_serializer_data: unable to copy unknown serializer data: "
 1942|      0|		    "%p\n", (void *)dst->_to_json_string);
 1943|      0|		return -1;
 1944|      0|	}
 1945|     87|	dst->_user_delete = src->_user_delete;
 1946|     87|	return 0;
 1947|     87|}

json_tokener_error_desc:
  133|    397|{
  134|    397|	int jerr_int = (int)jerr;
  135|    397|	if (jerr_int < 0 ||
  ------------------
  |  Branch (135:6): [True: 0, False: 397]
  ------------------
  136|    397|	    jerr_int >= (int)(sizeof(json_tokener_errors) / sizeof(json_tokener_errors[0])))
  ------------------
  |  Branch (136:6): [True: 0, False: 397]
  ------------------
  137|      0|		return "Unknown error, "
  138|      0|		       "invalid json_tokener_error value passed to json_tokener_error_desc()";
  139|    397|	return json_tokener_errors[jerr];
  140|    397|}
json_tokener_get_error:
  143|    794|{
  144|    794|	return tok->err;
  145|    794|}
json_tokener_new_ex:
  154|  6.76k|{
  155|  6.76k|	struct json_tokener *tok;
  156|       |
  157|  6.76k|	if (depth < 1)
  ------------------
  |  Branch (157:6): [True: 0, False: 6.76k]
  ------------------
  158|      0|		return NULL;
  159|       |
  160|  6.76k|	tok = (struct json_tokener *)calloc(1, sizeof(struct json_tokener));
  161|  6.76k|	if (!tok)
  ------------------
  |  Branch (161:6): [True: 0, False: 6.76k]
  ------------------
  162|      0|		return NULL;
  163|  6.76k|	tok->stack = (struct json_tokener_srec *)calloc(depth, sizeof(struct json_tokener_srec));
  164|  6.76k|	if (!tok->stack)
  ------------------
  |  Branch (164:6): [True: 0, False: 6.76k]
  ------------------
  165|      0|	{
  166|      0|		free(tok);
  167|      0|		return NULL;
  168|      0|	}
  169|  6.76k|	tok->pb = printbuf_new();
  170|  6.76k|	if (!tok->pb)
  ------------------
  |  Branch (170:6): [True: 0, False: 6.76k]
  ------------------
  171|      0|	{
  172|      0|		free(tok->stack);
  173|      0|		free(tok);
  174|      0|		return NULL;
  175|      0|	}
  176|  6.76k|	tok->max_depth = depth;
  177|  6.76k|	json_tokener_reset(tok);
  178|  6.76k|	return tok;
  179|  6.76k|}
json_tokener_new:
  182|  6.76k|{
  183|  6.76k|	return json_tokener_new_ex(JSON_TOKENER_DEFAULT_DEPTH);
  ------------------
  |  |   92|  6.76k|#define JSON_TOKENER_DEFAULT_DEPTH 32
  ------------------
  184|  6.76k|}
json_tokener_free:
  187|  6.76k|{
  188|  6.76k|	if (!tok)
  ------------------
  |  Branch (188:6): [True: 0, False: 6.76k]
  ------------------
  189|      0|		return;
  190|  6.76k|	json_tokener_reset(tok);
  191|  6.76k|	if (tok->pb)
  ------------------
  |  Branch (191:6): [True: 6.76k, False: 0]
  ------------------
  192|  6.76k|		printbuf_free(tok->pb);
  193|  6.76k|	free(tok->stack);
  194|  6.76k|	free(tok);
  195|  6.76k|}
json_tokener_reset:
  208|  13.5k|{
  209|  13.5k|	int i;
  210|  13.5k|	if (!tok)
  ------------------
  |  Branch (210:6): [True: 0, False: 13.5k]
  ------------------
  211|      0|		return;
  212|       |
  213|  28.0k|	for (i = tok->depth; i >= 0; i--)
  ------------------
  |  Branch (213:23): [True: 14.5k, False: 13.5k]
  ------------------
  214|  14.5k|		json_tokener_reset_level(tok, i);
  215|  13.5k|	tok->depth = 0;
  216|  13.5k|	tok->err = json_tokener_success;
  217|  13.5k|}
json_tokener_parse_ex:
  318|  6.76k|{
  319|  6.76k|	struct json_object *obj = NULL;
  320|  6.76k|	char c = '\1';
  321|  6.76k|	unsigned int nBytes = 0;
  322|  6.76k|	unsigned int *nBytesp = &nBytes;
  323|       |
  324|  6.76k|#ifdef HAVE_USELOCALE
  325|  6.76k|	locale_t oldlocale = uselocale(NULL);
  326|  6.76k|	locale_t newloc;
  327|       |#elif defined(HAVE_SETLOCALE)
  328|       |	char *oldlocale = NULL;
  329|       |#endif
  330|       |
  331|  6.76k|	tok->char_offset = 0;
  332|  6.76k|	tok->err = json_tokener_success;
  333|       |
  334|       |	/* this interface is presently not 64-bit clean due to the int len argument
  335|       |	 * and the internal printbuf interface that takes 32-bit int len arguments
  336|       |	 * so the function limits the maximum string size to INT32_MAX (2GB).
  337|       |	 * If the function is called with len == -1 then strlen is called to check
  338|       |	 * the string length is less than INT32_MAX (2GB)
  339|       |	 */
  340|  6.76k|	if ((len < -1) || (len == -1 && strlen(str) > INT32_MAX))
  ------------------
  |  Branch (340:6): [True: 0, False: 6.76k]
  |  Branch (340:21): [True: 0, False: 6.76k]
  |  Branch (340:34): [True: 0, False: 0]
  ------------------
  341|      0|	{
  342|      0|		tok->err = json_tokener_error_size;
  343|      0|		return NULL;
  344|      0|	}
  345|       |
  346|  6.76k|#ifdef HAVE_USELOCALE
  347|  6.76k|	{
  348|  6.76k|#ifdef HAVE_DUPLOCALE
  349|  6.76k|		locale_t duploc = duplocale(oldlocale);
  350|  6.76k|		if (duploc == NULL && errno == ENOMEM)
  ------------------
  |  Branch (350:7): [True: 0, False: 6.76k]
  |  Branch (350:25): [True: 0, False: 0]
  ------------------
  351|      0|		{
  352|      0|			tok->err = json_tokener_error_memory;
  353|      0|			return NULL;
  354|      0|		}
  355|  6.76k|		newloc = newlocale(LC_NUMERIC_MASK, "C", duploc);
  356|       |#else
  357|       |		newloc = newlocale(LC_NUMERIC_MASK, "C", oldlocale);
  358|       |#endif
  359|  6.76k|		if (newloc == NULL)
  ------------------
  |  Branch (359:7): [True: 0, False: 6.76k]
  ------------------
  360|      0|		{
  361|      0|			tok->err = json_tokener_error_memory;
  362|      0|#ifdef HAVE_DUPLOCALE
  363|      0|			freelocale(duploc);
  364|      0|#endif
  365|      0|			return NULL;
  366|      0|		}
  367|       |#ifdef NEWLOCALE_NEEDS_FREELOCALE
  368|       |#ifdef HAVE_DUPLOCALE
  369|       |		// Older versions of FreeBSD (<12.4) don't free the locale
  370|       |		// passed to newlocale(), so do it here
  371|       |		freelocale(duploc);
  372|       |#endif
  373|       |#endif
  374|  6.76k|		uselocale(newloc);
  375|  6.76k|	}
  376|       |#elif defined(HAVE_SETLOCALE)
  377|       |	{
  378|       |		char *tmplocale;
  379|       |		tmplocale = setlocale(LC_NUMERIC, NULL);
  380|       |		if (tmplocale)
  381|       |		{
  382|       |			oldlocale = strdup(tmplocale);
  383|       |			if (oldlocale == NULL)
  384|       |			{
  385|       |				tok->err = json_tokener_error_memory;
  386|       |				return NULL;
  387|       |			}
  388|       |		}
  389|       |		setlocale(LC_NUMERIC, "C");
  390|       |	}
  391|       |#endif
  392|       |
  393|   818k|	while (PEEK_CHAR(c, tok)) // Note: c might be '\0' !
  ------------------
  |  |  285|   818k|	(((tok)->char_offset == len)                                         \
  |  |  ------------------
  |  |  |  Branch (285:2): [True: 818k, False: 0]
  |  |  |  Branch (285:3): [True: 0, False: 818k]
  |  |  ------------------
  |  |  286|   818k|	     ? (((tok)->depth == 0 && state == json_tokener_state_eatws &&   \
  |  |  ------------------
  |  |  |  |  261|      0|#define state tok->stack[tok->depth].state
  |  |  ------------------
  |  |  |  Branch (286:11): [True: 0, False: 0]
  |  |  |  Branch (286:32): [True: 0, False: 0]
  |  |  ------------------
  |  |  287|      0|	         saved_state == json_tokener_state_finish)                   \
  |  |  ------------------
  |  |  |  |  262|      0|#define saved_state tok->stack[tok->depth].saved_state
  |  |  ------------------
  |  |  |  Branch (287:11): [True: 0, False: 0]
  |  |  ------------------
  |  |  288|      0|	            ? (((tok)->err = json_tokener_success), 0)               \
  |  |  289|      0|	            : (((tok)->err = json_tokener_continue), 0))             \
  |  |  290|   818k|	     : (((tok->flags & JSON_TOKENER_VALIDATE_UTF8) &&                \
  |  |  ------------------
  |  |  |  |  179|   818k|#define JSON_TOKENER_VALIDATE_UTF8 0x10
  |  |  ------------------
  |  |  |  Branch (290:11): [True: 0, False: 818k]
  |  |  ------------------
  |  |  291|   818k|	         (!json_tokener_validate_utf8(*str, nBytesp)))               \
  |  |  ------------------
  |  |  |  Branch (291:11): [True: 0, False: 0]
  |  |  ------------------
  |  |  292|   818k|	            ? ((tok->err = json_tokener_error_parse_utf8_string), 0) \
  |  |  293|   818k|	            : (((dest) = *str), 1)))
  ------------------
  394|   818k|	{
  395|       |
  396|  2.06M|	redo_char:
  397|  2.06M|		switch (state)
  ------------------
  |  |  261|  2.06M|#define state tok->stack[tok->depth].state
  |  |  ------------------
  |  |  |  Branch (261:15): [True: 2.06M, False: 0]
  |  |  ------------------
  ------------------
  398|  2.06M|		{
  399|       |
  400|   807k|		case json_tokener_state_eatws:
  ------------------
  |  Branch (400:3): [True: 807k, False: 1.25M]
  ------------------
  401|       |			/* Advance until we change state */
  402|  1.03M|			while (is_ws_char(c))
  ------------------
  |  Branch (402:11): [True: 228k, False: 807k]
  ------------------
  403|   228k|			{
  404|   228k|				if ((!ADVANCE_CHAR(str, tok)) || (!PEEK_CHAR(c, tok)))
  ------------------
  |  |  300|   228k|#define ADVANCE_CHAR(str, tok) (++(str), ((tok)->char_offset)++, c)
  ------------------
              				if ((!ADVANCE_CHAR(str, tok)) || (!PEEK_CHAR(c, tok)))
  ------------------
  |  |  285|   228k|	(((tok)->char_offset == len)                                         \
  |  |  ------------------
  |  |  |  Branch (285:3): [True: 0, False: 228k]
  |  |  ------------------
  |  |  286|   228k|	     ? (((tok)->depth == 0 && state == json_tokener_state_eatws &&   \
  |  |  ------------------
  |  |  |  |  261|      0|#define state tok->stack[tok->depth].state
  |  |  ------------------
  |  |  |  Branch (286:11): [True: 0, False: 0]
  |  |  |  Branch (286:32): [True: 0, False: 0]
  |  |  ------------------
  |  |  287|      0|	         saved_state == json_tokener_state_finish)                   \
  |  |  ------------------
  |  |  |  |  262|      0|#define saved_state tok->stack[tok->depth].saved_state
  |  |  ------------------
  |  |  |  Branch (287:11): [True: 0, False: 0]
  |  |  ------------------
  |  |  288|      0|	            ? (((tok)->err = json_tokener_success), 0)               \
  |  |  289|      0|	            : (((tok)->err = json_tokener_continue), 0))             \
  |  |  290|   228k|	     : (((tok->flags & JSON_TOKENER_VALIDATE_UTF8) &&                \
  |  |  ------------------
  |  |  |  |  179|   228k|#define JSON_TOKENER_VALIDATE_UTF8 0x10
  |  |  ------------------
  |  |  |  Branch (290:11): [True: 0, False: 228k]
  |  |  ------------------
  |  |  291|   228k|	         (!json_tokener_validate_utf8(*str, nBytesp)))               \
  |  |  ------------------
  |  |  |  Branch (291:11): [True: 0, False: 0]
  |  |  ------------------
  |  |  292|   228k|	            ? ((tok->err = json_tokener_error_parse_utf8_string), 0) \
  |  |  293|   228k|	            : (((dest) = *str), 1)))
  ------------------
  |  Branch (404:9): [True: 0, False: 228k]
  |  Branch (404:38): [True: 0, False: 228k]
  ------------------
  405|      0|					goto out;
  406|   228k|			}
  407|   807k|			if (c == '/' && !(tok->flags & JSON_TOKENER_STRICT))
  ------------------
  |  |  159|  1.09k|#define JSON_TOKENER_STRICT 0x01
  ------------------
  |  Branch (407:8): [True: 1.09k, False: 806k]
  |  Branch (407:20): [True: 1.09k, False: 0]
  ------------------
  408|  1.09k|			{
  409|  1.09k|				printbuf_reset(tok->pb);
  410|  1.09k|				printbuf_memappend_checked(tok->pb, &c, 1);
  ------------------
  |  |  307|  1.09k|	do {                                                  \
  |  |  308|  1.09k|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 1.09k]
  |  |  ------------------
  |  |  309|  1.09k|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|  1.09k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 1.09k]
  |  |  ------------------
  ------------------
  411|  1.09k|				state = json_tokener_state_comment_start;
  ------------------
  |  |  261|  1.09k|#define state tok->stack[tok->depth].state
  ------------------
  412|  1.09k|			}
  413|   806k|			else
  414|   806k|			{
  415|   806k|				state = saved_state;
  ------------------
  |  |  261|   806k|#define state tok->stack[tok->depth].state
  ------------------
              				state = saved_state;
  ------------------
  |  |  262|   806k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
  416|   806k|				goto redo_char;
  417|   806k|			}
  418|  1.09k|			break;
  419|       |
  420|   146k|		case json_tokener_state_start:
  ------------------
  |  Branch (420:3): [True: 146k, False: 1.92M]
  ------------------
  421|   146k|			switch (c)
  422|   146k|			{
  423|  49.2k|			case '{':
  ------------------
  |  Branch (423:4): [True: 49.2k, False: 97.1k]
  ------------------
  424|  49.2k|				state = json_tokener_state_eatws;
  ------------------
  |  |  261|  49.2k|#define state tok->stack[tok->depth].state
  ------------------
  425|  49.2k|				saved_state = json_tokener_state_object_field_start;
  ------------------
  |  |  262|  49.2k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
  426|  49.2k|				current = json_object_new_object();
  ------------------
  |  |  263|  49.2k|#define current tok->stack[tok->depth].current
  ------------------
  427|  49.2k|				if (current == NULL)
  ------------------
  |  |  263|  49.2k|#define current tok->stack[tok->depth].current
  ------------------
  |  Branch (427:9): [True: 0, False: 49.2k]
  ------------------
  428|      0|				{
  429|      0|					tok->err = json_tokener_error_memory;
  430|      0|					goto out;
  431|      0|				}
  432|  49.2k|				break;
  433|  49.2k|			case '[':
  ------------------
  |  Branch (433:4): [True: 10.2k, False: 136k]
  ------------------
  434|  10.2k|				state = json_tokener_state_eatws;
  ------------------
  |  |  261|  10.2k|#define state tok->stack[tok->depth].state
  ------------------
  435|  10.2k|				saved_state = json_tokener_state_array;
  ------------------
  |  |  262|  10.2k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
  436|  10.2k|				current = json_object_new_array();
  ------------------
  |  |  263|  10.2k|#define current tok->stack[tok->depth].current
  ------------------
  437|  10.2k|				if (current == NULL)
  ------------------
  |  |  263|  10.2k|#define current tok->stack[tok->depth].current
  ------------------
  |  Branch (437:9): [True: 0, False: 10.2k]
  ------------------
  438|      0|				{
  439|      0|					tok->err = json_tokener_error_memory;
  440|      0|					goto out;
  441|      0|				}
  442|  10.2k|				break;
  443|  10.2k|			case 'I':
  ------------------
  |  Branch (443:4): [True: 1, False: 146k]
  ------------------
  444|     12|			case 'i':
  ------------------
  |  Branch (444:4): [True: 11, False: 146k]
  ------------------
  445|     12|				state = json_tokener_state_inf;
  ------------------
  |  |  261|     12|#define state tok->stack[tok->depth].state
  ------------------
  446|     12|				printbuf_reset(tok->pb);
  447|     12|				tok->st_pos = 0;
  448|     12|				goto redo_char;
  449|    131|			case 'N':
  ------------------
  |  Branch (449:4): [True: 131, False: 146k]
  ------------------
  450|    378|			case 'n':
  ------------------
  |  Branch (450:4): [True: 247, False: 146k]
  ------------------
  451|    378|				state = json_tokener_state_null; // or NaN
  ------------------
  |  |  261|    378|#define state tok->stack[tok->depth].state
  ------------------
  452|    378|				printbuf_reset(tok->pb);
  453|    378|				tok->st_pos = 0;
  454|    378|				goto redo_char;
  455|     87|			case '\'':
  ------------------
  |  Branch (455:4): [True: 87, False: 146k]
  ------------------
  456|     87|				if (tok->flags & JSON_TOKENER_STRICT)
  ------------------
  |  |  159|     87|#define JSON_TOKENER_STRICT 0x01
  ------------------
  |  Branch (456:9): [True: 0, False: 87]
  ------------------
  457|      0|				{
  458|       |					/* in STRICT mode only double-quote are allowed */
  459|      0|					tok->err = json_tokener_error_parse_unexpected;
  460|      0|					goto out;
  461|      0|				}
  462|       |				/* FALLTHRU */
  463|  74.5k|			case '"':
  ------------------
  |  Branch (463:4): [True: 74.4k, False: 71.8k]
  ------------------
  464|  74.5k|				state = json_tokener_state_string;
  ------------------
  |  |  261|  74.5k|#define state tok->stack[tok->depth].state
  ------------------
  465|  74.5k|				printbuf_reset(tok->pb);
  466|  74.5k|				tok->quote_char = c;
  467|  74.5k|				break;
  468|     23|			case 'T':
  ------------------
  |  Branch (468:4): [True: 23, False: 146k]
  ------------------
  469|     67|			case 't':
  ------------------
  |  Branch (469:4): [True: 44, False: 146k]
  ------------------
  470|    192|			case 'F':
  ------------------
  |  Branch (470:4): [True: 125, False: 146k]
  ------------------
  471|    319|			case 'f':
  ------------------
  |  Branch (471:4): [True: 127, False: 146k]
  ------------------
  472|    319|				state = json_tokener_state_boolean;
  ------------------
  |  |  261|    319|#define state tok->stack[tok->depth].state
  ------------------
  473|    319|				printbuf_reset(tok->pb);
  474|    319|				tok->st_pos = 0;
  475|    319|				goto redo_char;
  476|  2.66k|			case '0':
  ------------------
  |  Branch (476:4): [True: 2.66k, False: 143k]
  ------------------
  477|  5.32k|			case '1':
  ------------------
  |  Branch (477:4): [True: 2.65k, False: 143k]
  ------------------
  478|  6.22k|			case '2':
  ------------------
  |  Branch (478:4): [True: 901, False: 145k]
  ------------------
  479|  6.61k|			case '3':
  ------------------
  |  Branch (479:4): [True: 391, False: 145k]
  ------------------
  480|  8.03k|			case '4':
  ------------------
  |  Branch (480:4): [True: 1.42k, False: 144k]
  ------------------
  481|  8.65k|			case '5':
  ------------------
  |  Branch (481:4): [True: 623, False: 145k]
  ------------------
  482|  8.79k|			case '6':
  ------------------
  |  Branch (482:4): [True: 134, False: 146k]
  ------------------
  483|  8.92k|			case '7':
  ------------------
  |  Branch (483:4): [True: 136, False: 146k]
  ------------------
  484|  8.99k|			case '8':
  ------------------
  |  Branch (484:4): [True: 73, False: 146k]
  ------------------
  485|  9.42k|			case '9':
  ------------------
  |  Branch (485:4): [True: 423, False: 145k]
  ------------------
  486|  11.4k|			case '-':
  ------------------
  |  Branch (486:4): [True: 2.03k, False: 144k]
  ------------------
  487|  11.4k|				state = json_tokener_state_number;
  ------------------
  |  |  261|  11.4k|#define state tok->stack[tok->depth].state
  ------------------
  488|  11.4k|				printbuf_reset(tok->pb);
  489|  11.4k|				tok->is_double = 0;
  490|  11.4k|				goto redo_char;
  491|     81|			default: tok->err = json_tokener_error_parse_unexpected; goto out;
  ------------------
  |  Branch (491:4): [True: 81, False: 146k]
  ------------------
  492|   146k|			}
  493|   134k|			break;
  494|       |
  495|   145k|		case json_tokener_state_finish:
  ------------------
  |  Branch (495:3): [True: 145k, False: 1.92M]
  ------------------
  496|   145k|			if (tok->depth == 0)
  ------------------
  |  Branch (496:8): [True: 6.33k, False: 138k]
  ------------------
  497|  6.33k|				goto out;
  498|   138k|			obj = json_object_get(current);
  ------------------
  |  |  263|   138k|#define current tok->stack[tok->depth].current
  ------------------
  499|   138k|			json_tokener_reset_level(tok, tok->depth);
  500|   138k|			tok->depth--;
  501|   138k|			goto redo_char;
  502|       |
  503|     13|		case json_tokener_state_inf: /* aka starts with 'i' (or 'I', or "-i", or "-I") */
  ------------------
  |  Branch (503:3): [True: 13, False: 2.06M]
  ------------------
  504|     13|		{
  505|       |			/* If we were guaranteed to have len set, then we could (usually) handle
  506|       |			 * the entire "Infinity" check in a single strncmp (strncasecmp), but
  507|       |			 * since len might be -1 (i.e. "read until \0"), we need to check it
  508|       |			 * a character at a time.
  509|       |			 * Trying to handle it both ways would make this code considerably more
  510|       |			 * complicated with likely little performance benefit.
  511|       |			 */
  512|     13|			int is_negative = 0;
  513|       |
  514|       |			/* Note: tok->st_pos must be 0 when state is set to json_tokener_state_inf */
  515|     33|			while (tok->st_pos < (int)json_inf_str_len)
  ------------------
  |  Branch (515:11): [True: 33, False: 0]
  ------------------
  516|     33|			{
  517|     33|				char inf_char = *str;
  518|     33|				if (inf_char != json_inf_str[tok->st_pos] &&
  ------------------
  |  Branch (518:9): [True: 26, False: 7]
  ------------------
  519|     26|				    ((tok->flags & JSON_TOKENER_STRICT) ||
  ------------------
  |  |  159|     26|#define JSON_TOKENER_STRICT 0x01
  ------------------
  |  Branch (519:10): [True: 0, False: 26]
  ------------------
  520|     26|				      inf_char != json_inf_str_invert[tok->st_pos])
  ------------------
  |  Branch (520:11): [True: 13, False: 13]
  ------------------
  521|     33|				   )
  522|     13|				{
  523|     13|					tok->err = json_tokener_error_parse_unexpected;
  524|     13|					goto out;
  525|     13|				}
  526|     20|				tok->st_pos++;
  527|     20|				(void)ADVANCE_CHAR(str, tok);
  ------------------
  |  |  300|     20|#define ADVANCE_CHAR(str, tok) (++(str), ((tok)->char_offset)++, c)
  ------------------
  528|     20|				if (!PEEK_CHAR(c, tok))
  ------------------
  |  |  285|     20|	(((tok)->char_offset == len)                                         \
  |  |  ------------------
  |  |  |  Branch (285:3): [True: 0, False: 20]
  |  |  ------------------
  |  |  286|     20|	     ? (((tok)->depth == 0 && state == json_tokener_state_eatws &&   \
  |  |  ------------------
  |  |  |  |  261|      0|#define state tok->stack[tok->depth].state
  |  |  ------------------
  |  |  |  Branch (286:11): [True: 0, False: 0]
  |  |  |  Branch (286:32): [True: 0, False: 0]
  |  |  ------------------
  |  |  287|      0|	         saved_state == json_tokener_state_finish)                   \
  |  |  ------------------
  |  |  |  |  262|      0|#define saved_state tok->stack[tok->depth].saved_state
  |  |  ------------------
  |  |  |  Branch (287:11): [True: 0, False: 0]
  |  |  ------------------
  |  |  288|      0|	            ? (((tok)->err = json_tokener_success), 0)               \
  |  |  289|      0|	            : (((tok)->err = json_tokener_continue), 0))             \
  |  |  290|     20|	     : (((tok->flags & JSON_TOKENER_VALIDATE_UTF8) &&                \
  |  |  ------------------
  |  |  |  |  179|     20|#define JSON_TOKENER_VALIDATE_UTF8 0x10
  |  |  ------------------
  |  |  |  Branch (290:11): [True: 0, False: 20]
  |  |  ------------------
  |  |  291|     20|	         (!json_tokener_validate_utf8(*str, nBytesp)))               \
  |  |  ------------------
  |  |  |  Branch (291:11): [True: 0, False: 0]
  |  |  ------------------
  |  |  292|     20|	            ? ((tok->err = json_tokener_error_parse_utf8_string), 0) \
  |  |  293|     20|	            : (((dest) = *str), 1)))
  ------------------
  |  Branch (528:9): [True: 0, False: 20]
  ------------------
  529|      0|				{
  530|       |					/* out of input chars, for now at least */
  531|      0|					goto out;
  532|      0|				}
  533|     20|			}
  534|       |			/* We checked the full length of "Infinity", so create the object.
  535|       |			 * When handling -Infinity, the number parsing code will have dropped
  536|       |			 * the "-" into tok->pb for us, so check it now.
  537|       |			 */
  538|      0|			if (printbuf_length(tok->pb) > 0 && *(tok->pb->buf) == '-')
  ------------------
  |  |   73|      0|#define printbuf_length(p) ((p)->bpos)
  ------------------
  |  Branch (538:8): [True: 0, False: 0]
  |  Branch (538:40): [True: 0, False: 0]
  ------------------
  539|      0|			{
  540|      0|				is_negative = 1;
  541|      0|			}
  542|      0|			current = json_object_new_double(is_negative ? -INFINITY : INFINITY);
  ------------------
  |  |  263|      0|#define current tok->stack[tok->depth].current
  ------------------
  |  Branch (542:37): [True: 0, False: 0]
  ------------------
  543|      0|			if (current == NULL)
  ------------------
  |  |  263|      0|#define current tok->stack[tok->depth].current
  ------------------
  |  Branch (543:8): [True: 0, False: 0]
  ------------------
  544|      0|			{
  545|      0|				tok->err = json_tokener_error_memory;
  546|      0|				goto out;
  547|      0|			}
  548|      0|			saved_state = json_tokener_state_finish;
  ------------------
  |  |  262|      0|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
  549|      0|			state = json_tokener_state_eatws;
  ------------------
  |  |  261|      0|#define state tok->stack[tok->depth].state
  ------------------
  550|      0|			goto redo_char;
  551|      0|		}
  552|      0|		break;
  553|  1.70k|		case json_tokener_state_null: /* aka starts with 'n' */
  ------------------
  |  Branch (553:3): [True: 1.70k, False: 2.06M]
  ------------------
  554|  1.70k|		{
  555|  1.70k|			int size;
  556|  1.70k|			int size_nan;
  557|  1.70k|			printbuf_memappend_checked(tok->pb, &c, 1);
  ------------------
  |  |  307|  1.70k|	do {                                                  \
  |  |  308|  1.70k|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 1.70k]
  |  |  ------------------
  |  |  309|  1.70k|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|  1.70k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 1.70k]
  |  |  ------------------
  ------------------
  558|  1.70k|			size = json_min(tok->st_pos + 1, json_null_str_len);
  ------------------
  |  |   22|  1.70k|#define json_min(a, b) ((a) < (b) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (22:25): [True: 1.11k, False: 584]
  |  |  ------------------
  ------------------
  559|  1.70k|			size_nan = json_min(tok->st_pos + 1, json_nan_str_len);
  ------------------
  |  |   22|  1.70k|#define json_min(a, b) ((a) < (b) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (22:25): [True: 756, False: 945]
  |  |  ------------------
  ------------------
  560|  1.70k|			if ((!(tok->flags & JSON_TOKENER_STRICT) &&
  ------------------
  |  |  159|  1.70k|#define JSON_TOKENER_STRICT 0x01
  ------------------
  |  Branch (560:9): [True: 1.70k, False: 0]
  ------------------
  561|  1.70k|			     strncasecmp(json_null_str, tok->pb->buf, size) == 0) ||
  ------------------
  |  Branch (561:9): [True: 1.30k, False: 400]
  ------------------
  562|    400|			    (strncmp(json_null_str, tok->pb->buf, size) == 0))
  ------------------
  |  Branch (562:8): [True: 0, False: 400]
  ------------------
  563|  1.30k|			{
  564|  1.30k|				if (tok->st_pos == json_null_str_len)
  ------------------
  |  Branch (564:9): [True: 229, False: 1.07k]
  ------------------
  565|    229|				{
  566|    229|					current = NULL;
  ------------------
  |  |  263|    229|#define current tok->stack[tok->depth].current
  ------------------
  567|    229|					saved_state = json_tokener_state_finish;
  ------------------
  |  |  262|    229|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
  568|    229|					state = json_tokener_state_eatws;
  ------------------
  |  |  261|    229|#define state tok->stack[tok->depth].state
  ------------------
  569|    229|					goto redo_char;
  570|    229|				}
  571|  1.30k|			}
  572|    400|			else if ((!(tok->flags & JSON_TOKENER_STRICT) &&
  ------------------
  |  |  159|    400|#define JSON_TOKENER_STRICT 0x01
  ------------------
  |  Branch (572:14): [True: 400, False: 0]
  ------------------
  573|    400|			          strncasecmp(json_nan_str, tok->pb->buf, size_nan) == 0) ||
  ------------------
  |  Branch (573:14): [True: 375, False: 25]
  ------------------
  574|     25|			         (strncmp(json_nan_str, tok->pb->buf, size_nan) == 0))
  ------------------
  |  Branch (574:13): [True: 0, False: 25]
  ------------------
  575|    375|			{
  576|    375|				if (tok->st_pos == json_nan_str_len)
  ------------------
  |  Branch (576:9): [True: 124, False: 251]
  ------------------
  577|    124|				{
  578|    124|					current = json_object_new_double(NAN);
  ------------------
  |  |  263|    124|#define current tok->stack[tok->depth].current
  ------------------
  579|    124|					if (current == NULL)
  ------------------
  |  |  263|    124|#define current tok->stack[tok->depth].current
  ------------------
  |  Branch (579:10): [True: 0, False: 124]
  ------------------
  580|      0|					{
  581|      0|						tok->err = json_tokener_error_memory;
  582|      0|						goto out;
  583|      0|					}
  584|    124|					saved_state = json_tokener_state_finish;
  ------------------
  |  |  262|    124|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
  585|    124|					state = json_tokener_state_eatws;
  ------------------
  |  |  261|    124|#define state tok->stack[tok->depth].state
  ------------------
  586|    124|					goto redo_char;
  587|    124|				}
  588|    375|			}
  589|     25|			else
  590|     25|			{
  591|     25|				tok->err = json_tokener_error_parse_null;
  592|     25|				goto out;
  593|     25|			}
  594|  1.32k|			tok->st_pos++;
  595|  1.32k|		}
  596|      0|		break;
  597|       |
  598|  1.09k|		case json_tokener_state_comment_start:
  ------------------
  |  Branch (598:3): [True: 1.09k, False: 2.06M]
  ------------------
  599|  1.09k|			if (c == '*')
  ------------------
  |  Branch (599:8): [True: 280, False: 819]
  ------------------
  600|    280|			{
  601|    280|				state = json_tokener_state_comment;
  ------------------
  |  |  261|    280|#define state tok->stack[tok->depth].state
  ------------------
  602|    280|			}
  603|    819|			else if (c == '/')
  ------------------
  |  Branch (603:13): [True: 806, False: 13]
  ------------------
  604|    806|			{
  605|    806|				state = json_tokener_state_comment_eol;
  ------------------
  |  |  261|    806|#define state tok->stack[tok->depth].state
  ------------------
  606|    806|			}
  607|     13|			else
  608|     13|			{
  609|     13|				tok->err = json_tokener_error_parse_comment;
  610|     13|				goto out;
  611|     13|			}
  612|  1.08k|			printbuf_memappend_checked(tok->pb, &c, 1);
  ------------------
  |  |  307|  1.08k|	do {                                                  \
  |  |  308|  1.08k|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 1.08k]
  |  |  ------------------
  |  |  309|  1.08k|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|  1.08k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 1.08k]
  |  |  ------------------
  ------------------
  613|  1.08k|			break;
  614|       |
  615|  1.39k|		case json_tokener_state_comment:
  ------------------
  |  Branch (615:3): [True: 1.39k, False: 2.06M]
  ------------------
  616|  1.39k|		{
  617|       |			/* Advance until we change state */
  618|  1.39k|			const char *case_start = str;
  619|  22.0k|			while (c != '*')
  ------------------
  |  Branch (619:11): [True: 20.6k, False: 1.37k]
  ------------------
  620|  20.6k|			{
  621|  20.6k|				if (!ADVANCE_CHAR(str, tok) || !PEEK_CHAR(c, tok))
  ------------------
  |  |  300|  41.3k|#define ADVANCE_CHAR(str, tok) (++(str), ((tok)->char_offset)++, c)
  ------------------
              				if (!ADVANCE_CHAR(str, tok) || !PEEK_CHAR(c, tok))
  ------------------
  |  |  285|  20.6k|	(((tok)->char_offset == len)                                         \
  |  |  ------------------
  |  |  |  Branch (285:3): [True: 0, False: 20.6k]
  |  |  ------------------
  |  |  286|  20.6k|	     ? (((tok)->depth == 0 && state == json_tokener_state_eatws &&   \
  |  |  ------------------
  |  |  |  |  261|      0|#define state tok->stack[tok->depth].state
  |  |  ------------------
  |  |  |  Branch (286:11): [True: 0, False: 0]
  |  |  |  Branch (286:32): [True: 0, False: 0]
  |  |  ------------------
  |  |  287|      0|	         saved_state == json_tokener_state_finish)                   \
  |  |  ------------------
  |  |  |  |  262|      0|#define saved_state tok->stack[tok->depth].saved_state
  |  |  ------------------
  |  |  |  Branch (287:11): [True: 0, False: 0]
  |  |  ------------------
  |  |  288|      0|	            ? (((tok)->err = json_tokener_success), 0)               \
  |  |  289|      0|	            : (((tok)->err = json_tokener_continue), 0))             \
  |  |  290|  20.6k|	     : (((tok->flags & JSON_TOKENER_VALIDATE_UTF8) &&                \
  |  |  ------------------
  |  |  |  |  179|  20.6k|#define JSON_TOKENER_VALIDATE_UTF8 0x10
  |  |  ------------------
  |  |  |  Branch (290:11): [True: 0, False: 20.6k]
  |  |  ------------------
  |  |  291|  20.6k|	         (!json_tokener_validate_utf8(*str, nBytesp)))               \
  |  |  ------------------
  |  |  |  Branch (291:11): [True: 0, False: 0]
  |  |  ------------------
  |  |  292|  20.6k|	            ? ((tok->err = json_tokener_error_parse_utf8_string), 0) \
  |  |  293|  20.6k|	            : (((dest) = *str), 1)))
  ------------------
  |  Branch (621:9): [True: 25, False: 20.6k]
  |  Branch (621:36): [True: 0, False: 20.6k]
  ------------------
  622|     25|				{
  623|     25|					printbuf_memappend_checked(tok->pb, case_start,
  ------------------
  |  |  307|     25|	do {                                                  \
  |  |  308|     25|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 25]
  |  |  ------------------
  |  |  309|     25|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|     25|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 25]
  |  |  ------------------
  ------------------
  624|     25|					                           str - case_start);
  625|     25|					goto out;
  626|     25|				}
  627|  20.6k|			}
  628|  1.37k|			printbuf_memappend_checked(tok->pb, case_start, 1 + str - case_start);
  ------------------
  |  |  307|  1.37k|	do {                                                  \
  |  |  308|  1.37k|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 1.37k]
  |  |  ------------------
  |  |  309|  1.37k|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|  1.37k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 1.37k]
  |  |  ------------------
  ------------------
  629|  1.37k|			state = json_tokener_state_comment_end;
  ------------------
  |  |  261|  1.37k|#define state tok->stack[tok->depth].state
  ------------------
  630|  1.37k|		}
  631|      0|		break;
  632|       |
  633|    806|		case json_tokener_state_comment_eol:
  ------------------
  |  Branch (633:3): [True: 806, False: 2.06M]
  ------------------
  634|    806|		{
  635|       |			/* Advance until we change state */
  636|    806|			const char *case_start = str;
  637|  57.1k|			while (c != '\n')
  ------------------
  |  Branch (637:11): [True: 56.3k, False: 765]
  ------------------
  638|  56.3k|			{
  639|  56.3k|				if (!ADVANCE_CHAR(str, tok) || !PEEK_CHAR(c, tok))
  ------------------
  |  |  300|   112k|#define ADVANCE_CHAR(str, tok) (++(str), ((tok)->char_offset)++, c)
  ------------------
              				if (!ADVANCE_CHAR(str, tok) || !PEEK_CHAR(c, tok))
  ------------------
  |  |  285|  56.3k|	(((tok)->char_offset == len)                                         \
  |  |  ------------------
  |  |  |  Branch (285:3): [True: 0, False: 56.3k]
  |  |  ------------------
  |  |  286|  56.3k|	     ? (((tok)->depth == 0 && state == json_tokener_state_eatws &&   \
  |  |  ------------------
  |  |  |  |  261|      0|#define state tok->stack[tok->depth].state
  |  |  ------------------
  |  |  |  Branch (286:11): [True: 0, False: 0]
  |  |  |  Branch (286:32): [True: 0, False: 0]
  |  |  ------------------
  |  |  287|      0|	         saved_state == json_tokener_state_finish)                   \
  |  |  ------------------
  |  |  |  |  262|      0|#define saved_state tok->stack[tok->depth].saved_state
  |  |  ------------------
  |  |  |  Branch (287:11): [True: 0, False: 0]
  |  |  ------------------
  |  |  288|      0|	            ? (((tok)->err = json_tokener_success), 0)               \
  |  |  289|      0|	            : (((tok)->err = json_tokener_continue), 0))             \
  |  |  290|  56.3k|	     : (((tok->flags & JSON_TOKENER_VALIDATE_UTF8) &&                \
  |  |  ------------------
  |  |  |  |  179|  56.3k|#define JSON_TOKENER_VALIDATE_UTF8 0x10
  |  |  ------------------
  |  |  |  Branch (290:11): [True: 0, False: 56.3k]
  |  |  ------------------
  |  |  291|  56.3k|	         (!json_tokener_validate_utf8(*str, nBytesp)))               \
  |  |  ------------------
  |  |  |  Branch (291:11): [True: 0, False: 0]
  |  |  ------------------
  |  |  292|  56.3k|	            ? ((tok->err = json_tokener_error_parse_utf8_string), 0) \
  |  |  293|  56.3k|	            : (((dest) = *str), 1)))
  ------------------
  |  Branch (639:9): [True: 41, False: 56.3k]
  |  Branch (639:36): [True: 0, False: 56.3k]
  ------------------
  640|     41|				{
  641|     41|					printbuf_memappend_checked(tok->pb, case_start,
  ------------------
  |  |  307|     41|	do {                                                  \
  |  |  308|     41|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 41]
  |  |  ------------------
  |  |  309|     41|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|     41|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 41]
  |  |  ------------------
  ------------------
  642|     41|					                           str - case_start);
  643|     41|					goto out;
  644|     41|				}
  645|  56.3k|			}
  646|    765|			printbuf_memappend_checked(tok->pb, case_start, str - case_start);
  ------------------
  |  |  307|    765|	do {                                                  \
  |  |  308|    765|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 765]
  |  |  ------------------
  |  |  309|    765|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|    765|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 765]
  |  |  ------------------
  ------------------
  647|    765|			MC_DEBUG("json_tokener_comment: %s\n", tok->pb->buf);
  ------------------
  |  |   87|    765|	if (0)           \
  |  |  ------------------
  |  |  |  Branch (87:6): [Folded, False: 765]
  |  |  ------------------
  |  |   88|    765|	mc_debug(x, ##__VA_ARGS__)
  ------------------
  648|    765|			state = json_tokener_state_eatws;
  ------------------
  |  |  261|    765|#define state tok->stack[tok->depth].state
  ------------------
  649|    765|		}
  650|      0|		break;
  651|       |
  652|  1.37k|		case json_tokener_state_comment_end:
  ------------------
  |  Branch (652:3): [True: 1.37k, False: 2.06M]
  ------------------
  653|  1.37k|			printbuf_memappend_checked(tok->pb, &c, 1);
  ------------------
  |  |  307|  1.37k|	do {                                                  \
  |  |  308|  1.37k|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 1.37k]
  |  |  ------------------
  |  |  309|  1.37k|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|  1.37k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 1.37k]
  |  |  ------------------
  ------------------
  654|  1.37k|			if (c == '/')
  ------------------
  |  Branch (654:8): [True: 250, False: 1.12k]
  ------------------
  655|    250|			{
  656|    250|				MC_DEBUG("json_tokener_comment: %s\n", tok->pb->buf);
  ------------------
  |  |   87|    250|	if (0)           \
  |  |  ------------------
  |  |  |  Branch (87:6): [Folded, False: 250]
  |  |  ------------------
  |  |   88|    250|	mc_debug(x, ##__VA_ARGS__)
  ------------------
  657|    250|				state = json_tokener_state_eatws;
  ------------------
  |  |  261|    250|#define state tok->stack[tok->depth].state
  ------------------
  658|    250|			}
  659|  1.12k|			else
  660|  1.12k|			{
  661|  1.12k|				state = json_tokener_state_comment;
  ------------------
  |  |  261|  1.12k|#define state tok->stack[tok->depth].state
  ------------------
  662|  1.12k|			}
  663|  1.37k|			break;
  664|       |
  665|   120k|		case json_tokener_state_string:
  ------------------
  |  Branch (665:3): [True: 120k, False: 1.94M]
  ------------------
  666|   120k|		{
  667|       |			/* Advance until we change state */
  668|   120k|			const char *case_start = str;
  669|  1.73M|			while (1)
  ------------------
  |  Branch (669:11): [True: 1.73M, Folded]
  ------------------
  670|  1.73M|			{
  671|  1.73M|				if (c == tok->quote_char)
  ------------------
  |  Branch (671:9): [True: 74.5k, False: 1.65M]
  ------------------
  672|  74.5k|				{
  673|  74.5k|					printbuf_memappend_checked(tok->pb, case_start,
  ------------------
  |  |  307|  74.5k|	do {                                                  \
  |  |  308|  74.5k|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 74.5k]
  |  |  ------------------
  |  |  309|  74.5k|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|  74.5k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 74.5k]
  |  |  ------------------
  ------------------
  674|  74.5k|					                           str - case_start);
  675|  74.5k|					current =
  ------------------
  |  |  263|  74.5k|#define current tok->stack[tok->depth].current
  ------------------
  676|  74.5k|					    json_object_new_string_len(tok->pb->buf, tok->pb->bpos);
  677|  74.5k|					if (current == NULL)
  ------------------
  |  |  263|  74.5k|#define current tok->stack[tok->depth].current
  ------------------
  |  Branch (677:10): [True: 0, False: 74.5k]
  ------------------
  678|      0|					{
  679|      0|						tok->err = json_tokener_error_memory;
  680|      0|						goto out;
  681|      0|					}
  682|  74.5k|					saved_state = json_tokener_state_finish;
  ------------------
  |  |  262|  74.5k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
  683|  74.5k|					state = json_tokener_state_eatws;
  ------------------
  |  |  261|  74.5k|#define state tok->stack[tok->depth].state
  ------------------
  684|  74.5k|					break;
  685|  74.5k|				}
  686|  1.65M|				else if (c == '\\')
  ------------------
  |  Branch (686:14): [True: 45.6k, False: 1.61M]
  ------------------
  687|  45.6k|				{
  688|  45.6k|					printbuf_memappend_checked(tok->pb, case_start,
  ------------------
  |  |  307|  45.6k|	do {                                                  \
  |  |  308|  45.6k|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 45.6k]
  |  |  ------------------
  |  |  309|  45.6k|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|  45.6k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 45.6k]
  |  |  ------------------
  ------------------
  689|  45.6k|					                           str - case_start);
  690|  45.6k|					saved_state = json_tokener_state_string;
  ------------------
  |  |  262|  45.6k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
  691|  45.6k|					state = json_tokener_state_string_escape;
  ------------------
  |  |  261|  45.6k|#define state tok->stack[tok->depth].state
  ------------------
  692|  45.6k|					break;
  693|  45.6k|				}
  694|  1.61M|				else if ((tok->flags & JSON_TOKENER_STRICT) && (unsigned char)c <= 0x1f)
  ------------------
  |  |  159|  1.61M|#define JSON_TOKENER_STRICT 0x01
  ------------------
  |  Branch (694:14): [True: 0, False: 1.61M]
  |  Branch (694:52): [True: 0, False: 0]
  ------------------
  695|      0|				{
  696|       |					// Disallow control characters in strict mode
  697|      0|					tok->err = json_tokener_error_parse_string;
  698|      0|					goto out;
  699|      0|				}
  700|  1.61M|				if (!ADVANCE_CHAR(str, tok) || !PEEK_CHAR(c, tok))
  ------------------
  |  |  300|  3.22M|#define ADVANCE_CHAR(str, tok) (++(str), ((tok)->char_offset)++, c)
  ------------------
              				if (!ADVANCE_CHAR(str, tok) || !PEEK_CHAR(c, tok))
  ------------------
  |  |  285|  1.61M|	(((tok)->char_offset == len)                                         \
  |  |  ------------------
  |  |  |  Branch (285:3): [True: 0, False: 1.61M]
  |  |  ------------------
  |  |  286|  1.61M|	     ? (((tok)->depth == 0 && state == json_tokener_state_eatws &&   \
  |  |  ------------------
  |  |  |  |  261|      0|#define state tok->stack[tok->depth].state
  |  |  ------------------
  |  |  |  Branch (286:11): [True: 0, False: 0]
  |  |  |  Branch (286:32): [True: 0, False: 0]
  |  |  ------------------
  |  |  287|      0|	         saved_state == json_tokener_state_finish)                   \
  |  |  ------------------
  |  |  |  |  262|      0|#define saved_state tok->stack[tok->depth].saved_state
  |  |  ------------------
  |  |  |  Branch (287:11): [True: 0, False: 0]
  |  |  ------------------
  |  |  288|      0|	            ? (((tok)->err = json_tokener_success), 0)               \
  |  |  289|      0|	            : (((tok)->err = json_tokener_continue), 0))             \
  |  |  290|  1.61M|	     : (((tok->flags & JSON_TOKENER_VALIDATE_UTF8) &&                \
  |  |  ------------------
  |  |  |  |  179|  1.61M|#define JSON_TOKENER_VALIDATE_UTF8 0x10
  |  |  ------------------
  |  |  |  Branch (290:11): [True: 0, False: 1.61M]
  |  |  ------------------
  |  |  291|  1.61M|	         (!json_tokener_validate_utf8(*str, nBytesp)))               \
  |  |  ------------------
  |  |  |  Branch (291:11): [True: 0, False: 0]
  |  |  ------------------
  |  |  292|  1.61M|	            ? ((tok->err = json_tokener_error_parse_utf8_string), 0) \
  |  |  293|  1.61M|	            : (((dest) = *str), 1)))
  ------------------
  |  Branch (700:9): [True: 40, False: 1.61M]
  |  Branch (700:36): [True: 0, False: 1.61M]
  ------------------
  701|     40|				{
  702|     40|					printbuf_memappend_checked(tok->pb, case_start,
  ------------------
  |  |  307|     40|	do {                                                  \
  |  |  308|     40|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 40]
  |  |  ------------------
  |  |  309|     40|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|     40|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 40]
  |  |  ------------------
  ------------------
  703|     40|					                           str - case_start);
  704|     40|					goto out;
  705|     40|				}
  706|  1.61M|			}
  707|   120k|		}
  708|   120k|		break;
  709|       |
  710|   120k|		case json_tokener_state_string_escape:
  ------------------
  |  Branch (710:3): [True: 53.2k, False: 2.01M]
  ------------------
  711|  53.2k|			switch (c)
  712|  53.2k|			{
  713|  10.1k|			case '"':
  ------------------
  |  Branch (713:4): [True: 10.1k, False: 43.0k]
  ------------------
  714|  31.4k|			case '\\':
  ------------------
  |  Branch (714:4): [True: 21.2k, False: 31.9k]
  ------------------
  715|  31.6k|			case '/':
  ------------------
  |  Branch (715:4): [True: 139, False: 53.0k]
  ------------------
  716|  31.6k|				printbuf_memappend_checked(tok->pb, &c, 1);
  ------------------
  |  |  307|  31.6k|	do {                                                  \
  |  |  308|  31.6k|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 31.6k]
  |  |  ------------------
  |  |  309|  31.6k|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|  31.6k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 31.6k]
  |  |  ------------------
  ------------------
  717|  31.6k|				state = saved_state;
  ------------------
  |  |  261|  31.6k|#define state tok->stack[tok->depth].state
  ------------------
              				state = saved_state;
  ------------------
  |  |  262|  31.6k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
  718|  31.6k|				break;
  719|    760|			case 'b':
  ------------------
  |  Branch (719:4): [True: 760, False: 52.4k]
  ------------------
  720|  18.0k|			case 'n':
  ------------------
  |  Branch (720:4): [True: 17.2k, False: 35.9k]
  ------------------
  721|  18.3k|			case 'r':
  ------------------
  |  Branch (721:4): [True: 286, False: 52.9k]
  ------------------
  722|  18.8k|			case 't':
  ------------------
  |  Branch (722:4): [True: 583, False: 52.6k]
  ------------------
  723|  19.1k|			case 'f':
  ------------------
  |  Branch (723:4): [True: 237, False: 52.9k]
  ------------------
  724|  19.1k|				if (c == 'b')
  ------------------
  |  Branch (724:9): [True: 760, False: 18.3k]
  ------------------
  725|    760|					printbuf_memappend_checked(tok->pb, "\b", 1);
  ------------------
  |  |  307|    760|	do {                                                  \
  |  |  308|    760|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 760]
  |  |  ------------------
  |  |  309|    760|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|    760|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 760]
  |  |  ------------------
  ------------------
  726|  18.3k|				else if (c == 'n')
  ------------------
  |  Branch (726:14): [True: 17.2k, False: 1.10k]
  ------------------
  727|  17.2k|					printbuf_memappend_checked(tok->pb, "\n", 1);
  ------------------
  |  |  307|  17.2k|	do {                                                  \
  |  |  308|  17.2k|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 17.2k]
  |  |  ------------------
  |  |  309|  17.2k|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|  17.2k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 17.2k]
  |  |  ------------------
  ------------------
  728|  1.10k|				else if (c == 'r')
  ------------------
  |  Branch (728:14): [True: 286, False: 820]
  ------------------
  729|    286|					printbuf_memappend_checked(tok->pb, "\r", 1);
  ------------------
  |  |  307|    286|	do {                                                  \
  |  |  308|    286|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 286]
  |  |  ------------------
  |  |  309|    286|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|    286|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 286]
  |  |  ------------------
  ------------------
  730|    820|				else if (c == 't')
  ------------------
  |  Branch (730:14): [True: 583, False: 237]
  ------------------
  731|    583|					printbuf_memappend_checked(tok->pb, "\t", 1);
  ------------------
  |  |  307|    583|	do {                                                  \
  |  |  308|    583|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 583]
  |  |  ------------------
  |  |  309|    583|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|    583|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 583]
  |  |  ------------------
  ------------------
  732|    237|				else if (c == 'f')
  ------------------
  |  Branch (732:14): [True: 237, False: 0]
  ------------------
  733|    237|					printbuf_memappend_checked(tok->pb, "\f", 1);
  ------------------
  |  |  307|    237|	do {                                                  \
  |  |  308|    237|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 237]
  |  |  ------------------
  |  |  309|    237|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|    237|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 237]
  |  |  ------------------
  ------------------
  734|  19.1k|				state = saved_state;
  ------------------
  |  |  261|  19.1k|#define state tok->stack[tok->depth].state
  ------------------
              				state = saved_state;
  ------------------
  |  |  262|  19.1k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
  735|  19.1k|				break;
  736|  2.46k|			case 'u':
  ------------------
  |  Branch (736:4): [True: 2.46k, False: 50.7k]
  ------------------
  737|  2.46k|				tok->ucs_char = 0;
  738|  2.46k|				tok->st_pos = 0;
  739|  2.46k|				state = json_tokener_state_escape_unicode;
  ------------------
  |  |  261|  2.46k|#define state tok->stack[tok->depth].state
  ------------------
  740|  2.46k|				break;
  741|     13|			default: tok->err = json_tokener_error_parse_string; goto out;
  ------------------
  |  Branch (741:4): [True: 13, False: 53.2k]
  ------------------
  742|  53.2k|			}
  743|  53.2k|			break;
  744|       |
  745|       |			// ===================================================
  746|       |
  747|  53.2k|		case json_tokener_state_escape_unicode:
  ------------------
  |  Branch (747:3): [True: 2.92k, False: 2.06M]
  ------------------
  748|  2.92k|		{
  749|       |			/* Handle a 4-byte \uNNNN sequence, or two sequences if a surrogate pair */
  750|  11.6k|			while (1)
  ------------------
  |  Branch (750:11): [True: 11.6k, Folded]
  ------------------
  751|  11.6k|			{
  752|  11.6k|				if (!c || !is_hex_char(c))
  ------------------
  |  Branch (752:9): [True: 2, False: 11.6k]
  |  Branch (752:15): [True: 11, False: 11.6k]
  ------------------
  753|     13|				{
  754|     13|					tok->err = json_tokener_error_parse_string;
  755|     13|					goto out;
  756|     13|				}
  757|  11.6k|				tok->ucs_char |=
  758|  11.6k|				    ((unsigned int)jt_hexdigit(c) << ((3 - tok->st_pos) * 4));
  ------------------
  |  |   47|  11.6k|#define jt_hexdigit(x) (((x) <= '9') ? (x) - '0' : ((x)&7) + 9)
  |  |  ------------------
  |  |  |  Branch (47:25): [True: 7.86k, False: 3.78k]
  |  |  ------------------
  ------------------
  759|  11.6k|				tok->st_pos++;
  760|  11.6k|				if (tok->st_pos >= 4)
  ------------------
  |  Branch (760:9): [True: 2.90k, False: 8.74k]
  ------------------
  761|  2.90k|					break;
  762|       |
  763|  8.74k|				(void)ADVANCE_CHAR(str, tok);
  ------------------
  |  |  300|  8.74k|#define ADVANCE_CHAR(str, tok) (++(str), ((tok)->char_offset)++, c)
  ------------------
  764|  8.74k|				if (!PEEK_CHAR(c, tok))
  ------------------
  |  |  285|  8.74k|	(((tok)->char_offset == len)                                         \
  |  |  ------------------
  |  |  |  Branch (285:3): [True: 0, False: 8.74k]
  |  |  ------------------
  |  |  286|  8.74k|	     ? (((tok)->depth == 0 && state == json_tokener_state_eatws &&   \
  |  |  ------------------
  |  |  |  |  261|      0|#define state tok->stack[tok->depth].state
  |  |  ------------------
  |  |  |  Branch (286:11): [True: 0, False: 0]
  |  |  |  Branch (286:32): [True: 0, False: 0]
  |  |  ------------------
  |  |  287|      0|	         saved_state == json_tokener_state_finish)                   \
  |  |  ------------------
  |  |  |  |  262|      0|#define saved_state tok->stack[tok->depth].saved_state
  |  |  ------------------
  |  |  |  Branch (287:11): [True: 0, False: 0]
  |  |  ------------------
  |  |  288|      0|	            ? (((tok)->err = json_tokener_success), 0)               \
  |  |  289|      0|	            : (((tok)->err = json_tokener_continue), 0))             \
  |  |  290|  8.74k|	     : (((tok->flags & JSON_TOKENER_VALIDATE_UTF8) &&                \
  |  |  ------------------
  |  |  |  |  179|  8.74k|#define JSON_TOKENER_VALIDATE_UTF8 0x10
  |  |  ------------------
  |  |  |  Branch (290:11): [True: 0, False: 8.74k]
  |  |  ------------------
  |  |  291|  8.74k|	         (!json_tokener_validate_utf8(*str, nBytesp)))               \
  |  |  ------------------
  |  |  |  Branch (291:11): [True: 0, False: 0]
  |  |  ------------------
  |  |  292|  8.74k|	            ? ((tok->err = json_tokener_error_parse_utf8_string), 0) \
  |  |  293|  8.74k|	            : (((dest) = *str), 1)))
  ------------------
  |  Branch (764:9): [True: 0, False: 8.74k]
  ------------------
  765|      0|				{
  766|       |					/*
  767|       |					 * We're out of characters in the current call to
  768|       |					 * json_tokener_parse(), but a subsequent call might
  769|       |					 * provide us with more, so leave our current state
  770|       |					 * as-is (including tok->high_surrogate) and return.
  771|       |					 */
  772|      0|					goto out;
  773|      0|				}
  774|  8.74k|			}
  775|  2.90k|			tok->st_pos = 0;
  776|       |
  777|       |			/* Now, we have a full \uNNNN sequence in tok->ucs_char */
  778|       |
  779|       |			/* If the *previous* sequence was a high surrogate ... */
  780|  2.90k|			if (tok->high_surrogate)
  ------------------
  |  Branch (780:8): [True: 456, False: 2.45k]
  ------------------
  781|    456|			{
  782|    456|				if (IS_LOW_SURROGATE(tok->ucs_char))
  ------------------
  |  |  149|    456|#define IS_LOW_SURROGATE(uc) (((uc)&0xFFFFFC00) == 0xDC00)
  |  |  ------------------
  |  |  |  Branch (149:30): [True: 284, False: 172]
  |  |  ------------------
  ------------------
  783|    284|				{
  784|       |					/* Recalculate the ucs_char, then fall thru to process normally */
  785|    284|					tok->ucs_char = DECODE_SURROGATE_PAIR(tok->high_surrogate,
  ------------------
  |  |  150|    284|#define DECODE_SURROGATE_PAIR(hi, lo) ((((hi)&0x3FF) << 10) + ((lo)&0x3FF) + 0x10000)
  ------------------
  786|    284|					                                      tok->ucs_char);
  787|    284|				}
  788|    172|				else
  789|    172|				{
  790|       |					/* High surrogate was not followed by a low surrogate
  791|       |					 * Replace the high and process the rest normally
  792|       |					 */
  793|    172|					printbuf_memappend_checked(tok->pb,
  ------------------
  |  |  307|    172|	do {                                                  \
  |  |  308|    172|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 172]
  |  |  ------------------
  |  |  309|    172|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|    172|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 172]
  |  |  ------------------
  ------------------
  794|    172|					                           (char *)utf8_replacement_char, 3);
  795|    172|				}
  796|    456|				tok->high_surrogate = 0;
  797|    456|			}
  798|       |
  799|  2.90k|			if (tok->ucs_char < 0x80)
  ------------------
  |  Branch (799:8): [True: 926, False: 1.98k]
  ------------------
  800|    926|			{
  801|    926|				unsigned char unescaped_utf[1];
  802|    926|				unescaped_utf[0] = tok->ucs_char;
  803|    926|				printbuf_memappend_checked(tok->pb, (char *)unescaped_utf, 1);
  ------------------
  |  |  307|    926|	do {                                                  \
  |  |  308|    926|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 926]
  |  |  ------------------
  |  |  309|    926|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|    926|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 926]
  |  |  ------------------
  ------------------
  804|    926|			}
  805|  1.98k|			else if (tok->ucs_char < 0x800)
  ------------------
  |  Branch (805:13): [True: 42, False: 1.93k]
  ------------------
  806|     42|			{
  807|     42|				unsigned char unescaped_utf[2];
  808|     42|				unescaped_utf[0] = 0xc0 | (tok->ucs_char >> 6);
  809|     42|				unescaped_utf[1] = 0x80 | (tok->ucs_char & 0x3f);
  810|     42|				printbuf_memappend_checked(tok->pb, (char *)unescaped_utf, 2);
  ------------------
  |  |  307|     42|	do {                                                  \
  |  |  308|     42|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 42]
  |  |  ------------------
  |  |  309|     42|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|     42|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 42]
  |  |  ------------------
  ------------------
  811|     42|			}
  812|  1.93k|			else if (IS_HIGH_SURROGATE(tok->ucs_char))
  ------------------
  |  |  148|  1.93k|#define IS_HIGH_SURROGATE(uc) (((uc)&0xFFFFFC00) == 0xD800)
  |  |  ------------------
  |  |  |  Branch (148:31): [True: 743, False: 1.19k]
  |  |  ------------------
  ------------------
  813|    743|			{
  814|       |				/*
  815|       |				 * The next two characters should be \u, HOWEVER,
  816|       |				 * we can't simply peek ahead here, because the
  817|       |				 * characters we need might not be passed to us
  818|       |				 * until a subsequent call to json_tokener_parse.
  819|       |				 * Instead, transition through a couple of states.
  820|       |				 * (now):
  821|       |				 *   _escape_unicode => _unicode_need_escape
  822|       |				 * (see a '\\' char):
  823|       |				 *   _unicode_need_escape => _unicode_need_u
  824|       |				 * (see a 'u' char):
  825|       |				 *   _unicode_need_u => _escape_unicode
  826|       |				 *      ...and we'll end up back around here.
  827|       |				 */
  828|    743|				tok->high_surrogate = tok->ucs_char;
  829|    743|				tok->ucs_char = 0;
  830|    743|				state = json_tokener_state_escape_unicode_need_escape;
  ------------------
  |  |  261|    743|#define state tok->stack[tok->depth].state
  ------------------
  831|    743|				break;
  832|    743|			}
  833|  1.19k|			else if (IS_LOW_SURROGATE(tok->ucs_char))
  ------------------
  |  |  149|  1.19k|#define IS_LOW_SURROGATE(uc) (((uc)&0xFFFFFC00) == 0xDC00)
  |  |  ------------------
  |  |  |  Branch (149:30): [True: 416, False: 780]
  |  |  ------------------
  ------------------
  834|    416|			{
  835|       |				/* Got a low surrogate not preceded by a high */
  836|    416|				printbuf_memappend_checked(tok->pb, (char *)utf8_replacement_char, 3);
  ------------------
  |  |  307|    416|	do {                                                  \
  |  |  308|    416|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 416]
  |  |  ------------------
  |  |  309|    416|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|    416|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 416]
  |  |  ------------------
  ------------------
  837|    416|			}
  838|    780|			else if (tok->ucs_char < 0x10000)
  ------------------
  |  Branch (838:13): [True: 496, False: 284]
  ------------------
  839|    496|			{
  840|    496|				unsigned char unescaped_utf[3];
  841|    496|				unescaped_utf[0] = 0xe0 | (tok->ucs_char >> 12);
  842|    496|				unescaped_utf[1] = 0x80 | ((tok->ucs_char >> 6) & 0x3f);
  843|    496|				unescaped_utf[2] = 0x80 | (tok->ucs_char & 0x3f);
  844|    496|				printbuf_memappend_checked(tok->pb, (char *)unescaped_utf, 3);
  ------------------
  |  |  307|    496|	do {                                                  \
  |  |  308|    496|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 496]
  |  |  ------------------
  |  |  309|    496|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|    496|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 496]
  |  |  ------------------
  ------------------
  845|    496|			}
  846|    284|			else if (tok->ucs_char < 0x110000)
  ------------------
  |  Branch (846:13): [True: 284, False: 0]
  ------------------
  847|    284|			{
  848|    284|				unsigned char unescaped_utf[4];
  849|    284|				unescaped_utf[0] = 0xf0 | ((tok->ucs_char >> 18) & 0x07);
  850|    284|				unescaped_utf[1] = 0x80 | ((tok->ucs_char >> 12) & 0x3f);
  851|    284|				unescaped_utf[2] = 0x80 | ((tok->ucs_char >> 6) & 0x3f);
  852|    284|				unescaped_utf[3] = 0x80 | (tok->ucs_char & 0x3f);
  853|    284|				printbuf_memappend_checked(tok->pb, (char *)unescaped_utf, 4);
  ------------------
  |  |  307|    284|	do {                                                  \
  |  |  308|    284|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 284]
  |  |  ------------------
  |  |  309|    284|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|    284|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 284]
  |  |  ------------------
  ------------------
  854|    284|			}
  855|      0|			else
  856|      0|			{
  857|       |				/* Don't know what we got--insert the replacement char */
  858|      0|				printbuf_memappend_checked(tok->pb, (char *)utf8_replacement_char, 3);
  ------------------
  |  |  307|      0|	do {                                                  \
  |  |  308|      0|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  309|      0|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  859|      0|			}
  860|  2.16k|			state = saved_state; // i.e. _state_string or _state_object_field
  ------------------
  |  |  261|  2.16k|#define state tok->stack[tok->depth].state
  ------------------
              			state = saved_state; // i.e. _state_string or _state_object_field
  ------------------
  |  |  262|  2.16k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
  861|  2.16k|		}
  862|      0|		break;
  863|       |
  864|    743|		case json_tokener_state_escape_unicode_need_escape:
  ------------------
  |  Branch (864:3): [True: 743, False: 2.06M]
  ------------------
  865|       |			// We get here after processing a high_surrogate
  866|       |			// require a '\\' char
  867|    743|			if (!c || c != '\\')
  ------------------
  |  Branch (867:8): [True: 1, False: 742]
  |  Branch (867:14): [True: 149, False: 593]
  ------------------
  868|    150|			{
  869|       |				/* Got a high surrogate without another sequence following
  870|       |				 * it.  Put a replacement char in for the high surrogate
  871|       |				 * and pop back up to _state_string or _state_object_field.
  872|       |				 */
  873|    150|				printbuf_memappend_checked(tok->pb, (char *)utf8_replacement_char, 3);
  ------------------
  |  |  307|    150|	do {                                                  \
  |  |  308|    150|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 150]
  |  |  ------------------
  |  |  309|    150|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|    150|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 150]
  |  |  ------------------
  ------------------
  874|    150|				tok->high_surrogate = 0;
  875|    150|				tok->ucs_char = 0;
  876|    150|				tok->st_pos = 0;
  877|    150|				state = saved_state;
  ------------------
  |  |  261|    150|#define state tok->stack[tok->depth].state
  ------------------
              				state = saved_state;
  ------------------
  |  |  262|    150|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
  878|    150|				goto redo_char;
  879|    150|			}
  880|    593|			state = json_tokener_state_escape_unicode_need_u;
  ------------------
  |  |  261|    593|#define state tok->stack[tok->depth].state
  ------------------
  881|    593|			break;
  882|       |
  883|    593|		case json_tokener_state_escape_unicode_need_u:
  ------------------
  |  Branch (883:3): [True: 593, False: 2.06M]
  ------------------
  884|       |			/* We already had a \ char, check that it's \u */
  885|    593|			if (!c || c != 'u')
  ------------------
  |  Branch (885:8): [True: 1, False: 592]
  |  Branch (885:14): [True: 135, False: 457]
  ------------------
  886|    136|			{
  887|       |				/* Got a high surrogate with some non-unicode escape
  888|       |				 * sequence following it.
  889|       |				 * Put a replacement char in for the high surrogate
  890|       |				 * and handle the escape sequence normally.
  891|       |				 */
  892|    136|				printbuf_memappend_checked(tok->pb, (char *)utf8_replacement_char, 3);
  ------------------
  |  |  307|    136|	do {                                                  \
  |  |  308|    136|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 136]
  |  |  ------------------
  |  |  309|    136|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|    136|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 136]
  |  |  ------------------
  ------------------
  893|    136|				tok->high_surrogate = 0;
  894|    136|				tok->ucs_char = 0;
  895|    136|				tok->st_pos = 0;
  896|    136|				state = json_tokener_state_string_escape;
  ------------------
  |  |  261|    136|#define state tok->stack[tok->depth].state
  ------------------
  897|    136|				goto redo_char;
  898|    136|			}
  899|    457|			state = json_tokener_state_escape_unicode;
  ------------------
  |  |  261|    457|#define state tok->stack[tok->depth].state
  ------------------
  900|    457|			break;
  901|       |
  902|       |			// ===================================================
  903|       |
  904|  1.77k|		case json_tokener_state_boolean:
  ------------------
  |  Branch (904:3): [True: 1.77k, False: 2.06M]
  ------------------
  905|  1.77k|		{
  906|  1.77k|			int size1, size2;
  907|  1.77k|			printbuf_memappend_checked(tok->pb, &c, 1);
  ------------------
  |  |  307|  1.77k|	do {                                                  \
  |  |  308|  1.77k|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 1.77k]
  |  |  ------------------
  |  |  309|  1.77k|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|  1.77k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 1.77k]
  |  |  ------------------
  ------------------
  908|  1.77k|			size1 = json_min(tok->st_pos + 1, json_true_str_len);
  ------------------
  |  |   22|  1.77k|#define json_min(a, b) ((a) < (b) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (22:25): [True: 938, False: 834]
  |  |  ------------------
  ------------------
  909|  1.77k|			size2 = json_min(tok->st_pos + 1, json_false_str_len);
  ------------------
  |  |   22|  1.77k|#define json_min(a, b) ((a) < (b) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (22:25): [True: 1.23k, False: 537]
  |  |  ------------------
  ------------------
  910|  1.77k|			if ((!(tok->flags & JSON_TOKENER_STRICT) &&
  ------------------
  |  |  159|  1.77k|#define JSON_TOKENER_STRICT 0x01
  ------------------
  |  Branch (910:9): [True: 1.77k, False: 0]
  ------------------
  911|  1.77k|			     strncasecmp(json_true_str, tok->pb->buf, size1) == 0) ||
  ------------------
  |  Branch (911:9): [True: 279, False: 1.49k]
  ------------------
  912|  1.49k|			    (strncmp(json_true_str, tok->pb->buf, size1) == 0))
  ------------------
  |  Branch (912:8): [True: 0, False: 1.49k]
  ------------------
  913|    279|			{
  914|    279|				if (tok->st_pos == json_true_str_len)
  ------------------
  |  Branch (914:9): [True: 52, False: 227]
  ------------------
  915|     52|				{
  916|     52|					current = json_object_new_boolean(1);
  ------------------
  |  |  263|     52|#define current tok->stack[tok->depth].current
  ------------------
  917|     52|					if (current == NULL)
  ------------------
  |  |  263|     52|#define current tok->stack[tok->depth].current
  ------------------
  |  Branch (917:10): [True: 0, False: 52]
  ------------------
  918|      0|					{
  919|      0|						tok->err = json_tokener_error_memory;
  920|      0|						goto out;
  921|      0|					}
  922|     52|					saved_state = json_tokener_state_finish;
  ------------------
  |  |  262|     52|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
  923|     52|					state = json_tokener_state_eatws;
  ------------------
  |  |  261|     52|#define state tok->stack[tok->depth].state
  ------------------
  924|     52|					goto redo_char;
  925|     52|				}
  926|    279|			}
  927|  1.49k|			else if ((!(tok->flags & JSON_TOKENER_STRICT) &&
  ------------------
  |  |  159|  1.49k|#define JSON_TOKENER_STRICT 0x01
  ------------------
  |  Branch (927:14): [True: 1.49k, False: 0]
  ------------------
  928|  1.49k|			          strncasecmp(json_false_str, tok->pb->buf, size2) == 0) ||
  ------------------
  |  Branch (928:14): [True: 1.46k, False: 26]
  ------------------
  929|     26|			         (strncmp(json_false_str, tok->pb->buf, size2) == 0))
  ------------------
  |  Branch (929:13): [True: 0, False: 26]
  ------------------
  930|  1.46k|			{
  931|  1.46k|				if (tok->st_pos == json_false_str_len)
  ------------------
  |  Branch (931:9): [True: 241, False: 1.22k]
  ------------------
  932|    241|				{
  933|    241|					current = json_object_new_boolean(0);
  ------------------
  |  |  263|    241|#define current tok->stack[tok->depth].current
  ------------------
  934|    241|					if (current == NULL)
  ------------------
  |  |  263|    241|#define current tok->stack[tok->depth].current
  ------------------
  |  Branch (934:10): [True: 0, False: 241]
  ------------------
  935|      0|					{
  936|      0|						tok->err = json_tokener_error_memory;
  937|      0|						goto out;
  938|      0|					}
  939|    241|					saved_state = json_tokener_state_finish;
  ------------------
  |  |  262|    241|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
  940|    241|					state = json_tokener_state_eatws;
  ------------------
  |  |  261|    241|#define state tok->stack[tok->depth].state
  ------------------
  941|    241|					goto redo_char;
  942|    241|				}
  943|  1.46k|			}
  944|     26|			else
  945|     26|			{
  946|     26|				tok->err = json_tokener_error_parse_boolean;
  947|     26|				goto out;
  948|     26|			}
  949|  1.45k|			tok->st_pos++;
  950|  1.45k|		}
  951|      0|		break;
  952|       |
  953|  11.4k|		case json_tokener_state_number:
  ------------------
  |  Branch (953:3): [True: 11.4k, False: 2.05M]
  ------------------
  954|  11.4k|		{
  955|       |			/* Advance until we change state */
  956|  11.4k|			const char *case_start = str;
  957|  11.4k|			int case_len = 0;
  958|  11.4k|			int is_exponent = 0;
  959|  11.4k|			int neg_sign_ok = 1;
  960|  11.4k|			int pos_sign_ok = 0;
  961|  11.4k|			if (printbuf_length(tok->pb) > 0)
  ------------------
  |  |   73|  11.4k|#define printbuf_length(p) ((p)->bpos)
  ------------------
  |  Branch (961:8): [True: 0, False: 11.4k]
  ------------------
  962|      0|			{
  963|       |				/* We don't save all state from the previous incremental parse
  964|       |				   so we need to re-generate it based on the saved string so far.
  965|       |				 */
  966|      0|				char *e_loc = strchr(tok->pb->buf, 'e');
  967|      0|				if (!e_loc)
  ------------------
  |  Branch (967:9): [True: 0, False: 0]
  ------------------
  968|      0|					e_loc = strchr(tok->pb->buf, 'E');
  969|      0|				if (e_loc)
  ------------------
  |  Branch (969:9): [True: 0, False: 0]
  ------------------
  970|      0|				{
  971|      0|					char *last_saved_char =
  972|      0|					    &tok->pb->buf[printbuf_length(tok->pb) - 1];
  ------------------
  |  |   73|      0|#define printbuf_length(p) ((p)->bpos)
  ------------------
  973|      0|					is_exponent = 1;
  974|      0|					pos_sign_ok = neg_sign_ok = 1;
  975|       |					/* If the "e" isn't at the end, we can't start with a '-' */
  976|      0|					if (e_loc != last_saved_char)
  ------------------
  |  Branch (976:10): [True: 0, False: 0]
  ------------------
  977|      0|					{
  978|      0|						neg_sign_ok = 0;
  979|      0|						pos_sign_ok = 0;
  980|      0|					}
  981|       |					// else leave it set to 1, i.e. start of the new input
  982|      0|				}
  983|      0|			}
  984|       |
  985|  82.1k|			while (c && ((c >= '0' && c <= '9') ||
  ------------------
  |  Branch (985:11): [True: 82.1k, False: 34]
  |  Branch (985:18): [True: 69.9k, False: 12.2k]
  |  Branch (985:30): [True: 67.1k, False: 2.77k]
  ------------------
  986|  14.9k|			             (!is_exponent && (c == 'e' || c == 'E')) ||
  ------------------
  |  Branch (986:18): [True: 13.9k, False: 985]
  |  Branch (986:35): [True: 494, False: 13.4k]
  |  Branch (986:47): [True: 35, False: 13.4k]
  ------------------
  987|  14.4k|			             (neg_sign_ok && c == '-') || (pos_sign_ok && c == '+') ||
  ------------------
  |  Branch (987:18): [True: 2.59k, False: 11.8k]
  |  Branch (987:33): [True: 2.03k, False: 559]
  |  Branch (987:47): [True: 559, False: 11.8k]
  |  Branch (987:62): [True: 460, False: 99]
  ------------------
  988|  11.9k|			             (!tok->is_double && c == '.')))
  ------------------
  |  Branch (988:18): [True: 11.3k, False: 611]
  |  Branch (988:37): [True: 526, False: 10.8k]
  ------------------
  989|  70.6k|			{
  990|  70.6k|				pos_sign_ok = neg_sign_ok = 0;
  991|  70.6k|				++case_len;
  992|       |
  993|       |				/* non-digit characters checks */
  994|       |				/* note: since the main loop condition to get here was
  995|       |				 * an input starting with 0-9 or '-', we are
  996|       |				 * protected from input starting with '.' or
  997|       |				 * e/E.
  998|       |				 */
  999|  70.6k|				switch (c)
 1000|  70.6k|				{
 1001|    526|				case '.':
  ------------------
  |  Branch (1001:5): [True: 526, False: 70.1k]
  ------------------
 1002|    526|					tok->is_double = 1;
 1003|    526|					pos_sign_ok = 1;
 1004|    526|					neg_sign_ok = 1;
 1005|    526|					break;
 1006|    494|				case 'e': /* FALLTHRU */
  ------------------
  |  Branch (1006:5): [True: 494, False: 70.2k]
  ------------------
 1007|    529|				case 'E':
  ------------------
  |  Branch (1007:5): [True: 35, False: 70.6k]
  ------------------
 1008|    529|					is_exponent = 1;
 1009|    529|					tok->is_double = 1;
 1010|       |					/* the exponent part can begin with a negative sign */
 1011|    529|					pos_sign_ok = neg_sign_ok = 1;
 1012|    529|					break;
 1013|  69.6k|				default: break;
  ------------------
  |  Branch (1013:5): [True: 69.6k, False: 1.05k]
  ------------------
 1014|  70.6k|				}
 1015|       |
 1016|  70.6k|				if (!ADVANCE_CHAR(str, tok) || !PEEK_CHAR(c, tok))
  ------------------
  |  |  300|   141k|#define ADVANCE_CHAR(str, tok) (++(str), ((tok)->char_offset)++, c)
  ------------------
              				if (!ADVANCE_CHAR(str, tok) || !PEEK_CHAR(c, tok))
  ------------------
  |  |  285|  70.6k|	(((tok)->char_offset == len)                                         \
  |  |  ------------------
  |  |  |  Branch (285:3): [True: 0, False: 70.6k]
  |  |  ------------------
  |  |  286|  70.6k|	     ? (((tok)->depth == 0 && state == json_tokener_state_eatws &&   \
  |  |  ------------------
  |  |  |  |  261|      0|#define state tok->stack[tok->depth].state
  |  |  ------------------
  |  |  |  Branch (286:11): [True: 0, False: 0]
  |  |  |  Branch (286:32): [True: 0, False: 0]
  |  |  ------------------
  |  |  287|      0|	         saved_state == json_tokener_state_finish)                   \
  |  |  ------------------
  |  |  |  |  262|      0|#define saved_state tok->stack[tok->depth].saved_state
  |  |  ------------------
  |  |  |  Branch (287:11): [True: 0, False: 0]
  |  |  ------------------
  |  |  288|      0|	            ? (((tok)->err = json_tokener_success), 0)               \
  |  |  289|      0|	            : (((tok)->err = json_tokener_continue), 0))             \
  |  |  290|  70.6k|	     : (((tok->flags & JSON_TOKENER_VALIDATE_UTF8) &&                \
  |  |  ------------------
  |  |  |  |  179|  70.6k|#define JSON_TOKENER_VALIDATE_UTF8 0x10
  |  |  ------------------
  |  |  |  Branch (290:11): [True: 0, False: 70.6k]
  |  |  ------------------
  |  |  291|  70.6k|	         (!json_tokener_validate_utf8(*str, nBytesp)))               \
  |  |  ------------------
  |  |  |  Branch (291:11): [True: 0, False: 0]
  |  |  ------------------
  |  |  292|  70.6k|	            ? ((tok->err = json_tokener_error_parse_utf8_string), 0) \
  |  |  293|  70.6k|	            : (((dest) = *str), 1)))
  ------------------
  |  Branch (1016:9): [True: 0, False: 70.6k]
  |  Branch (1016:36): [True: 0, False: 70.6k]
  ------------------
 1017|      0|				{
 1018|      0|					printbuf_memappend_checked(tok->pb, case_start, case_len);
  ------------------
  |  |  307|      0|	do {                                                  \
  |  |  308|      0|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  309|      0|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1019|      0|					goto out;
 1020|      0|				}
 1021|  70.6k|			}
 1022|       |			/*
 1023|       |				Now we know c isn't a valid number char, but check whether
 1024|       |				it might have been intended to be, and return a potentially
 1025|       |				more understandable error right away.
 1026|       |				However, if we're at the top-level, use the number as-is
 1027|       |				because c can be part of a new object to parse on the
 1028|       |				next call to json_tokener_parse().
 1029|       |			 */
 1030|  11.4k|			if (tok->depth > 0 && c != ',' && c != ']' && c != '}' && c != '/' &&
  ------------------
  |  Branch (1030:8): [True: 11.3k, False: 73]
  |  Branch (1030:26): [True: 3.31k, False: 8.07k]
  |  Branch (1030:38): [True: 3.30k, False: 11]
  |  Branch (1030:50): [True: 1.09k, False: 2.20k]
  |  Branch (1030:62): [True: 1.02k, False: 75]
  ------------------
 1031|  1.02k|			    c != 'I' && c != 'i' && !is_ws_char(c))
  ------------------
  |  Branch (1031:8): [True: 1.02k, False: 1]
  |  Branch (1031:20): [True: 1.01k, False: 1]
  |  Branch (1031:32): [True: 35, False: 984]
  ------------------
 1032|     35|			{
 1033|     35|				tok->err = json_tokener_error_parse_number;
 1034|     35|				goto out;
 1035|     35|			}
 1036|  11.4k|			if (case_len > 0)
  ------------------
  |  Branch (1036:8): [True: 11.4k, False: 0]
  ------------------
 1037|  11.4k|				printbuf_memappend_checked(tok->pb, case_start, case_len);
  ------------------
  |  |  307|  11.4k|	do {                                                  \
  |  |  308|  11.4k|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 11.4k]
  |  |  ------------------
  |  |  309|  11.4k|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|  11.4k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 11.4k]
  |  |  ------------------
  ------------------
 1038|       |
 1039|       |			// Check for -Infinity
 1040|  11.4k|			if (tok->pb->buf[0] == '-' && case_len <= 1 && (c == 'i' || c == 'I'))
  ------------------
  |  Branch (1040:8): [True: 2.02k, False: 9.39k]
  |  Branch (1040:34): [True: 4, False: 2.02k]
  |  Branch (1040:52): [True: 0, False: 4]
  |  Branch (1040:64): [True: 1, False: 3]
  ------------------
 1041|      1|			{
 1042|      1|				state = json_tokener_state_inf;
  ------------------
  |  |  261|      1|#define state tok->stack[tok->depth].state
  ------------------
 1043|      1|				tok->st_pos = 0;
 1044|      1|				goto redo_char;
 1045|      1|			}
 1046|  11.4k|			if (tok->is_double && !(tok->flags & JSON_TOKENER_STRICT))
  ------------------
  |  |  159|    607|#define JSON_TOKENER_STRICT 0x01
  ------------------
  |  Branch (1046:8): [True: 607, False: 10.8k]
  |  Branch (1046:26): [True: 607, False: 0]
  ------------------
 1047|    607|			{
 1048|       |				/* Trim some chars off the end, to allow things
 1049|       |				   like "123e+" to parse ok. */
 1050|  1.33k|				while (printbuf_length(tok->pb) > 1)
  ------------------
  |  |   73|  1.33k|#define printbuf_length(p) ((p)->bpos)
  ------------------
  |  Branch (1050:12): [True: 1.31k, False: 27]
  ------------------
 1051|  1.31k|				{
 1052|  1.31k|					char last_char = tok->pb->buf[printbuf_length(tok->pb) - 1];
  ------------------
  |  |   73|  1.31k|#define printbuf_length(p) ((p)->bpos)
  ------------------
 1053|  1.31k|					if (last_char != 'e' && last_char != 'E' &&
  ------------------
  |  Branch (1053:10): [True: 941, False: 369]
  |  Branch (1053:30): [True: 921, False: 20]
  ------------------
 1054|    921|					    last_char != '-' && last_char != '+')
  ------------------
  |  Branch (1054:10): [True: 918, False: 3]
  |  Branch (1054:30): [True: 580, False: 338]
  ------------------
 1055|    580|					{
 1056|    580|						break;
 1057|    580|					}
 1058|    730|					tok->pb->buf[printbuf_length(tok->pb) - 1] = '\0';
  ------------------
  |  |   73|    730|#define printbuf_length(p) ((p)->bpos)
  ------------------
 1059|    730|					printbuf_length(tok->pb)--;
  ------------------
  |  |   73|    730|#define printbuf_length(p) ((p)->bpos)
  ------------------
 1060|    730|				}
 1061|    607|			}
 1062|  11.4k|		}
 1063|      0|			{
 1064|  11.4k|				int64_t num64;
 1065|  11.4k|				uint64_t numuint64;
 1066|  11.4k|				double numd;
 1067|  11.4k|				if (!tok->is_double && tok->pb->buf[0] == '-' &&
  ------------------
  |  Branch (1067:9): [True: 10.8k, False: 607]
  |  Branch (1067:28): [True: 1.52k, False: 9.28k]
  ------------------
 1068|  1.52k|				    json_parse_int64(tok->pb->buf, &num64) == 0)
  ------------------
  |  Branch (1068:9): [True: 1.52k, False: 3]
  ------------------
 1069|  1.52k|				{
 1070|  1.52k|					if (errno == ERANGE && (tok->flags & JSON_TOKENER_STRICT))
  ------------------
  |  |  159|     15|#define JSON_TOKENER_STRICT 0x01
  ------------------
  |  Branch (1070:10): [True: 15, False: 1.50k]
  |  Branch (1070:29): [True: 0, False: 15]
  ------------------
 1071|      0|					{
 1072|      0|						tok->err = json_tokener_error_parse_number;
 1073|      0|						goto out;
 1074|      0|					}
 1075|  1.52k|					current = json_object_new_int64(num64);
  ------------------
  |  |  263|  1.52k|#define current tok->stack[tok->depth].current
  ------------------
 1076|  1.52k|					if (current == NULL)
  ------------------
  |  |  263|  1.52k|#define current tok->stack[tok->depth].current
  ------------------
  |  Branch (1076:10): [True: 0, False: 1.52k]
  ------------------
 1077|      0|					{
 1078|      0|						tok->err = json_tokener_error_memory;
 1079|      0|						goto out;
 1080|      0|					}
 1081|  1.52k|				}
 1082|  9.89k|				else if (!tok->is_double && tok->pb->buf[0] != '-' &&
  ------------------
  |  Branch (1082:14): [True: 9.29k, False: 607]
  |  Branch (1082:33): [True: 9.28k, False: 3]
  ------------------
 1083|  9.28k|				         json_parse_uint64(tok->pb->buf, &numuint64) == 0)
  ------------------
  |  Branch (1083:14): [True: 9.28k, False: 0]
  ------------------
 1084|  9.28k|				{
 1085|  9.28k|					if (errno == ERANGE && (tok->flags & JSON_TOKENER_STRICT))
  ------------------
  |  |  159|     85|#define JSON_TOKENER_STRICT 0x01
  ------------------
  |  Branch (1085:10): [True: 85, False: 9.20k]
  |  Branch (1085:29): [True: 0, False: 85]
  ------------------
 1086|      0|					{
 1087|      0|						tok->err = json_tokener_error_parse_number;
 1088|      0|						goto out;
 1089|      0|					}
 1090|  9.28k|					if (numuint64 && tok->pb->buf[0] == '0' &&
  ------------------
  |  Branch (1090:10): [True: 8.50k, False: 778]
  |  Branch (1090:23): [True: 1.85k, False: 6.65k]
  ------------------
 1091|  1.85k|					    (tok->flags & JSON_TOKENER_STRICT))
  ------------------
  |  |  159|  1.85k|#define JSON_TOKENER_STRICT 0x01
  ------------------
  |  Branch (1091:10): [True: 0, False: 1.85k]
  ------------------
 1092|      0|					{
 1093|      0|						tok->err = json_tokener_error_parse_number;
 1094|      0|						goto out;
 1095|      0|					}
 1096|  9.28k|					if (numuint64 <= INT64_MAX)
  ------------------
  |  Branch (1096:10): [True: 8.80k, False: 487]
  ------------------
 1097|  8.80k|					{
 1098|  8.80k|						num64 = (uint64_t)numuint64;
 1099|  8.80k|						current = json_object_new_int64(num64);
  ------------------
  |  |  263|  8.80k|#define current tok->stack[tok->depth].current
  ------------------
 1100|  8.80k|						if (current == NULL)
  ------------------
  |  |  263|  8.80k|#define current tok->stack[tok->depth].current
  ------------------
  |  Branch (1100:11): [True: 0, False: 8.80k]
  ------------------
 1101|      0|						{
 1102|      0|							tok->err = json_tokener_error_memory;
 1103|      0|							goto out;
 1104|      0|						}
 1105|  8.80k|					}
 1106|    487|					else
 1107|    487|					{
 1108|    487|						current = json_object_new_uint64(numuint64);
  ------------------
  |  |  263|    487|#define current tok->stack[tok->depth].current
  ------------------
 1109|    487|						if (current == NULL)
  ------------------
  |  |  263|    487|#define current tok->stack[tok->depth].current
  ------------------
  |  Branch (1109:11): [True: 0, False: 487]
  ------------------
 1110|      0|						{
 1111|      0|							tok->err = json_tokener_error_memory;
 1112|      0|							goto out;
 1113|      0|						}
 1114|    487|					}
 1115|  9.28k|				}
 1116|    610|				else if (tok->is_double &&
  ------------------
  |  Branch (1116:14): [True: 607, False: 3]
  ------------------
 1117|    607|				         json_tokener_parse_double(
  ------------------
  |  Branch (1117:14): [True: 606, False: 1]
  ------------------
 1118|    607|				             tok->pb->buf, printbuf_length(tok->pb), &numd) == 0)
  ------------------
  |  |   73|    607|#define printbuf_length(p) ((p)->bpos)
  ------------------
 1119|    606|				{
 1120|    606|					current = json_object_new_double_s(numd, tok->pb->buf);
  ------------------
  |  |  263|    606|#define current tok->stack[tok->depth].current
  ------------------
 1121|    606|					if (current == NULL)
  ------------------
  |  |  263|    606|#define current tok->stack[tok->depth].current
  ------------------
  |  Branch (1121:10): [True: 0, False: 606]
  ------------------
 1122|      0|					{
 1123|      0|						tok->err = json_tokener_error_memory;
 1124|      0|						goto out;
 1125|      0|					}
 1126|    606|				}
 1127|      4|				else
 1128|      4|				{
 1129|      4|					tok->err = json_tokener_error_parse_number;
 1130|      4|					goto out;
 1131|      4|				}
 1132|  11.4k|				saved_state = json_tokener_state_finish;
  ------------------
  |  |  262|  11.4k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
 1133|  11.4k|				state = json_tokener_state_eatws;
  ------------------
  |  |  261|  11.4k|#define state tok->stack[tok->depth].state
  ------------------
 1134|  11.4k|				goto redo_char;
 1135|  11.4k|			}
 1136|      0|			break;
 1137|       |
 1138|  21.0k|		case json_tokener_state_array_after_sep:
  ------------------
  |  Branch (1138:3): [True: 21.0k, False: 2.04M]
  ------------------
 1139|  31.3k|		case json_tokener_state_array:
  ------------------
  |  Branch (1139:3): [True: 10.2k, False: 2.05M]
  ------------------
 1140|  31.3k|			if (c == ']')
  ------------------
  |  Branch (1140:8): [True: 367, False: 30.9k]
  ------------------
 1141|    367|			{
 1142|       |				// Minimize memory usage; assume parsed objs are unlikely to be changed
 1143|    367|				json_object_array_shrink(current, 0);
  ------------------
  |  |  263|    367|#define current tok->stack[tok->depth].current
  ------------------
 1144|       |
 1145|    367|				if (state == json_tokener_state_array_after_sep &&
  ------------------
  |  |  261|    367|#define state tok->stack[tok->depth].state
  ------------------
  |  Branch (1145:9): [True: 21, False: 346]
  ------------------
 1146|     21|				    (tok->flags & JSON_TOKENER_STRICT))
  ------------------
  |  |  159|     21|#define JSON_TOKENER_STRICT 0x01
  ------------------
  |  Branch (1146:9): [True: 0, False: 21]
  ------------------
 1147|      0|				{
 1148|      0|					tok->err = json_tokener_error_parse_unexpected;
 1149|      0|					goto out;
 1150|      0|				}
 1151|    367|				saved_state = json_tokener_state_finish;
  ------------------
  |  |  262|    367|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
 1152|    367|				state = json_tokener_state_eatws;
  ------------------
  |  |  261|    367|#define state tok->stack[tok->depth].state
  ------------------
 1153|    367|			}
 1154|  30.9k|			else
 1155|  30.9k|			{
 1156|  30.9k|				if (tok->depth >= tok->max_depth - 1)
  ------------------
  |  Branch (1156:9): [True: 1, False: 30.9k]
  ------------------
 1157|      1|				{
 1158|      1|					tok->err = json_tokener_error_depth;
 1159|      1|					goto out;
 1160|      1|				}
 1161|  30.9k|				state = json_tokener_state_array_add;
  ------------------
  |  |  261|  30.9k|#define state tok->stack[tok->depth].state
  ------------------
 1162|  30.9k|				tok->depth++;
 1163|  30.9k|				json_tokener_reset_level(tok, tok->depth);
 1164|  30.9k|				goto redo_char;
 1165|  30.9k|			}
 1166|    367|			break;
 1167|       |
 1168|  30.5k|		case json_tokener_state_array_add:
  ------------------
  |  Branch (1168:3): [True: 30.5k, False: 2.03M]
  ------------------
 1169|  30.5k|			if (json_object_array_add(current, obj) != 0)
  ------------------
  |  |  263|  30.5k|#define current tok->stack[tok->depth].current
  ------------------
  |  Branch (1169:8): [True: 0, False: 30.5k]
  ------------------
 1170|      0|			{
 1171|      0|				tok->err = json_tokener_error_memory;
 1172|      0|				goto out;
 1173|      0|			}
 1174|  30.5k|			saved_state = json_tokener_state_array_sep;
  ------------------
  |  |  262|  30.5k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
 1175|  30.5k|			state = json_tokener_state_eatws;
  ------------------
  |  |  261|  30.5k|#define state tok->stack[tok->depth].state
  ------------------
 1176|  30.5k|			goto redo_char;
 1177|       |
 1178|  30.5k|		case json_tokener_state_array_sep:
  ------------------
  |  Branch (1178:3): [True: 30.5k, False: 2.03M]
  ------------------
 1179|  30.5k|			if (c == ']')
  ------------------
  |  Branch (1179:8): [True: 9.46k, False: 21.0k]
  ------------------
 1180|  9.46k|			{
 1181|       |				// Minimize memory usage; assume parsed objs are unlikely to be changed
 1182|  9.46k|				json_object_array_shrink(current, 0);
  ------------------
  |  |  263|  9.46k|#define current tok->stack[tok->depth].current
  ------------------
 1183|       |
 1184|  9.46k|				saved_state = json_tokener_state_finish;
  ------------------
  |  |  262|  9.46k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
 1185|  9.46k|				state = json_tokener_state_eatws;
  ------------------
  |  |  261|  9.46k|#define state tok->stack[tok->depth].state
  ------------------
 1186|  9.46k|			}
 1187|  21.0k|			else if (c == ',')
  ------------------
  |  Branch (1187:13): [True: 21.0k, False: 22]
  ------------------
 1188|  21.0k|			{
 1189|  21.0k|				saved_state = json_tokener_state_array_after_sep;
  ------------------
  |  |  262|  21.0k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
 1190|  21.0k|				state = json_tokener_state_eatws;
  ------------------
  |  |  261|  21.0k|#define state tok->stack[tok->depth].state
  ------------------
 1191|  21.0k|			}
 1192|     22|			else
 1193|     22|			{
 1194|     22|				tok->err = json_tokener_error_parse_array;
 1195|     22|				goto out;
 1196|     22|			}
 1197|  30.5k|			break;
 1198|       |
 1199|  49.2k|		case json_tokener_state_object_field_start:
  ------------------
  |  Branch (1199:3): [True: 49.2k, False: 2.01M]
  ------------------
 1200|   127k|		case json_tokener_state_object_field_start_after_sep:
  ------------------
  |  Branch (1200:3): [True: 78.5k, False: 1.98M]
  ------------------
 1201|   127k|			if (c == '}')
  ------------------
  |  Branch (1201:8): [True: 19.0k, False: 108k]
  ------------------
 1202|  19.0k|			{
 1203|  19.0k|				if (state == json_tokener_state_object_field_start_after_sep &&
  ------------------
  |  |  261|  19.0k|#define state tok->stack[tok->depth].state
  ------------------
  |  Branch (1203:9): [True: 4, False: 19.0k]
  ------------------
 1204|      4|				    (tok->flags & JSON_TOKENER_STRICT))
  ------------------
  |  |  159|      4|#define JSON_TOKENER_STRICT 0x01
  ------------------
  |  Branch (1204:9): [True: 0, False: 4]
  ------------------
 1205|      0|				{
 1206|      0|					tok->err = json_tokener_error_parse_unexpected;
 1207|      0|					goto out;
 1208|      0|				}
 1209|  19.0k|				saved_state = json_tokener_state_finish;
  ------------------
  |  |  262|  19.0k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
 1210|  19.0k|				state = json_tokener_state_eatws;
  ------------------
  |  |  261|  19.0k|#define state tok->stack[tok->depth].state
  ------------------
 1211|  19.0k|			}
 1212|   108k|			else if (c == '"' || c == '\'')
  ------------------
  |  Branch (1212:13): [True: 108k, False: 20]
  |  Branch (1212:25): [True: 1, False: 19]
  ------------------
 1213|   108k|			{
 1214|   108k|				tok->quote_char = c;
 1215|   108k|				printbuf_reset(tok->pb);
 1216|   108k|				state = json_tokener_state_object_field;
  ------------------
  |  |  261|   108k|#define state tok->stack[tok->depth].state
  ------------------
 1217|   108k|			}
 1218|     19|			else
 1219|     19|			{
 1220|     19|				tok->err = json_tokener_error_parse_object_key_name;
 1221|     19|				goto out;
 1222|     19|			}
 1223|   127k|			break;
 1224|       |
 1225|   127k|		case json_tokener_state_object_field:
  ------------------
  |  Branch (1225:3): [True: 116k, False: 1.95M]
  ------------------
 1226|   116k|		{
 1227|       |			/* Advance until we change state */
 1228|   116k|			const char *case_start = str;
 1229|   942k|			while (1)
  ------------------
  |  Branch (1229:11): [True: 942k, Folded]
  ------------------
 1230|   942k|			{
 1231|   942k|				if (c == tok->quote_char)
  ------------------
  |  Branch (1231:9): [True: 108k, False: 833k]
  ------------------
 1232|   108k|				{
 1233|   108k|					printbuf_memappend_checked(tok->pb, case_start,
  ------------------
  |  |  307|   108k|	do {                                                  \
  |  |  308|   108k|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 108k]
  |  |  ------------------
  |  |  309|   108k|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|   108k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 108k]
  |  |  ------------------
  ------------------
 1234|   108k|					                           str - case_start);
 1235|   108k|					obj_field_name = strdup(tok->pb->buf);
  ------------------
  |  |  264|   108k|#define obj_field_name tok->stack[tok->depth].obj_field_name
  ------------------
 1236|   108k|					if (obj_field_name == NULL)
  ------------------
  |  |  264|   108k|#define obj_field_name tok->stack[tok->depth].obj_field_name
  ------------------
  |  Branch (1236:10): [True: 0, False: 108k]
  ------------------
 1237|      0|					{
 1238|      0|						tok->err = json_tokener_error_memory;
 1239|      0|						goto out;
 1240|      0|					}
 1241|   108k|					saved_state = json_tokener_state_object_field_end;
  ------------------
  |  |  262|   108k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
 1242|   108k|					state = json_tokener_state_eatws;
  ------------------
  |  |  261|   108k|#define state tok->stack[tok->depth].state
  ------------------
 1243|   108k|					break;
 1244|   108k|				}
 1245|   833k|				else if (c == '\\')
  ------------------
  |  Branch (1245:14): [True: 7.42k, False: 826k]
  ------------------
 1246|  7.42k|				{
 1247|  7.42k|					printbuf_memappend_checked(tok->pb, case_start,
  ------------------
  |  |  307|  7.42k|	do {                                                  \
  |  |  308|  7.42k|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 7.42k]
  |  |  ------------------
  |  |  309|  7.42k|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|  7.42k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 7.42k]
  |  |  ------------------
  ------------------
 1248|  7.42k|					                           str - case_start);
 1249|  7.42k|					saved_state = json_tokener_state_object_field;
  ------------------
  |  |  262|  7.42k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
 1250|  7.42k|					state = json_tokener_state_string_escape;
  ------------------
  |  |  261|  7.42k|#define state tok->stack[tok->depth].state
  ------------------
 1251|  7.42k|					break;
 1252|  7.42k|				}
 1253|   826k|				else if ((tok->flags & JSON_TOKENER_STRICT) && (unsigned char)c <= 0x1f)
  ------------------
  |  |  159|   826k|#define JSON_TOKENER_STRICT 0x01
  ------------------
  |  Branch (1253:14): [True: 0, False: 826k]
  |  Branch (1253:52): [True: 0, False: 0]
  ------------------
 1254|      0|				{
 1255|       |					// Disallow control characters in strict mode
 1256|      0|					tok->err = json_tokener_error_parse_string;
 1257|      0|					goto out;
 1258|      0|				}
 1259|   826k|				if (!ADVANCE_CHAR(str, tok) || !PEEK_CHAR(c, tok))
  ------------------
  |  |  300|  1.65M|#define ADVANCE_CHAR(str, tok) (++(str), ((tok)->char_offset)++, c)
  ------------------
              				if (!ADVANCE_CHAR(str, tok) || !PEEK_CHAR(c, tok))
  ------------------
  |  |  285|   826k|	(((tok)->char_offset == len)                                         \
  |  |  ------------------
  |  |  |  Branch (285:3): [True: 0, False: 826k]
  |  |  ------------------
  |  |  286|   826k|	     ? (((tok)->depth == 0 && state == json_tokener_state_eatws &&   \
  |  |  ------------------
  |  |  |  |  261|      0|#define state tok->stack[tok->depth].state
  |  |  ------------------
  |  |  |  Branch (286:11): [True: 0, False: 0]
  |  |  |  Branch (286:32): [True: 0, False: 0]
  |  |  ------------------
  |  |  287|      0|	         saved_state == json_tokener_state_finish)                   \
  |  |  ------------------
  |  |  |  |  262|      0|#define saved_state tok->stack[tok->depth].saved_state
  |  |  ------------------
  |  |  |  Branch (287:11): [True: 0, False: 0]
  |  |  ------------------
  |  |  288|      0|	            ? (((tok)->err = json_tokener_success), 0)               \
  |  |  289|      0|	            : (((tok)->err = json_tokener_continue), 0))             \
  |  |  290|   826k|	     : (((tok->flags & JSON_TOKENER_VALIDATE_UTF8) &&                \
  |  |  ------------------
  |  |  |  |  179|   826k|#define JSON_TOKENER_VALIDATE_UTF8 0x10
  |  |  ------------------
  |  |  |  Branch (290:11): [True: 0, False: 826k]
  |  |  ------------------
  |  |  291|   826k|	         (!json_tokener_validate_utf8(*str, nBytesp)))               \
  |  |  ------------------
  |  |  |  Branch (291:11): [True: 0, False: 0]
  |  |  ------------------
  |  |  292|   826k|	            ? ((tok->err = json_tokener_error_parse_utf8_string), 0) \
  |  |  293|   826k|	            : (((dest) = *str), 1)))
  ------------------
  |  Branch (1259:9): [True: 18, False: 826k]
  |  Branch (1259:36): [True: 0, False: 826k]
  ------------------
 1260|     18|				{
 1261|     18|					printbuf_memappend_checked(tok->pb, case_start,
  ------------------
  |  |  307|     18|	do {                                                  \
  |  |  308|     18|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 18]
  |  |  ------------------
  |  |  309|     18|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|     18|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 18]
  |  |  ------------------
  ------------------
 1262|     18|					                           str - case_start);
 1263|     18|					goto out;
 1264|     18|				}
 1265|   826k|			}
 1266|   116k|		}
 1267|   116k|		break;
 1268|       |
 1269|   116k|		case json_tokener_state_object_field_end:
  ------------------
  |  Branch (1269:3): [True: 108k, False: 1.95M]
  ------------------
 1270|   108k|			if (c == ':')
  ------------------
  |  Branch (1270:8): [True: 108k, False: 20]
  ------------------
 1271|   108k|			{
 1272|   108k|				saved_state = json_tokener_state_object_value;
  ------------------
  |  |  262|   108k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
 1273|   108k|				state = json_tokener_state_eatws;
  ------------------
  |  |  261|   108k|#define state tok->stack[tok->depth].state
  ------------------
 1274|   108k|			}
 1275|     20|			else
 1276|     20|			{
 1277|     20|				tok->err = json_tokener_error_parse_object_key_sep;
 1278|     20|				goto out;
 1279|     20|			}
 1280|   108k|			break;
 1281|       |
 1282|   108k|		case json_tokener_state_object_value:
  ------------------
  |  Branch (1282:3): [True: 108k, False: 1.95M]
  ------------------
 1283|   108k|			if (tok->depth >= tok->max_depth - 1)
  ------------------
  |  Branch (1283:8): [True: 0, False: 108k]
  ------------------
 1284|      0|			{
 1285|      0|				tok->err = json_tokener_error_depth;
 1286|      0|				goto out;
 1287|      0|			}
 1288|   108k|			state = json_tokener_state_object_value_add;
  ------------------
  |  |  261|   108k|#define state tok->stack[tok->depth].state
  ------------------
 1289|   108k|			tok->depth++;
 1290|   108k|			json_tokener_reset_level(tok, tok->depth);
 1291|   108k|			goto redo_char;
 1292|       |
 1293|   108k|		case json_tokener_state_object_value_add:
  ------------------
  |  Branch (1293:3): [True: 108k, False: 1.95M]
  ------------------
 1294|   108k|			if (json_object_object_add(current, obj_field_name, obj) != 0)
  ------------------
  |  |  263|   108k|#define current tok->stack[tok->depth].current
  ------------------
              			if (json_object_object_add(current, obj_field_name, obj) != 0)
  ------------------
  |  |  264|   108k|#define obj_field_name tok->stack[tok->depth].obj_field_name
  ------------------
  |  Branch (1294:8): [True: 0, False: 108k]
  ------------------
 1295|      0|			{
 1296|      0|				tok->err = json_tokener_error_memory;
 1297|      0|				goto out;
 1298|      0|			}
 1299|   108k|			free(obj_field_name);
  ------------------
  |  |  264|   108k|#define obj_field_name tok->stack[tok->depth].obj_field_name
  ------------------
 1300|   108k|			obj_field_name = NULL;
  ------------------
  |  |  264|   108k|#define obj_field_name tok->stack[tok->depth].obj_field_name
  ------------------
 1301|   108k|			saved_state = json_tokener_state_object_sep;
  ------------------
  |  |  262|   108k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
 1302|   108k|			state = json_tokener_state_eatws;
  ------------------
  |  |  261|   108k|#define state tok->stack[tok->depth].state
  ------------------
 1303|   108k|			goto redo_char;
 1304|       |
 1305|   108k|		case json_tokener_state_object_sep:
  ------------------
  |  Branch (1305:3): [True: 108k, False: 1.95M]
  ------------------
 1306|       |			/* { */
 1307|   108k|			if (c == '}')
  ------------------
  |  Branch (1307:8): [True: 29.6k, False: 78.5k]
  ------------------
 1308|  29.6k|			{
 1309|  29.6k|				saved_state = json_tokener_state_finish;
  ------------------
  |  |  262|  29.6k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
 1310|  29.6k|				state = json_tokener_state_eatws;
  ------------------
  |  |  261|  29.6k|#define state tok->stack[tok->depth].state
  ------------------
 1311|  29.6k|			}
 1312|  78.5k|			else if (c == ',')
  ------------------
  |  Branch (1312:13): [True: 78.5k, False: 16]
  ------------------
 1313|  78.5k|			{
 1314|  78.5k|				saved_state = json_tokener_state_object_field_start_after_sep;
  ------------------
  |  |  262|  78.5k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
 1315|  78.5k|				state = json_tokener_state_eatws;
  ------------------
  |  |  261|  78.5k|#define state tok->stack[tok->depth].state
  ------------------
 1316|  78.5k|			}
 1317|     16|			else
 1318|     16|			{
 1319|     16|				tok->err = json_tokener_error_parse_object_value_sep;
 1320|     16|				goto out;
 1321|     16|			}
 1322|   108k|			break;
 1323|  2.06M|		}
 1324|   811k|		(void)ADVANCE_CHAR(str, tok);
  ------------------
  |  |  300|   811k|#define ADVANCE_CHAR(str, tok) (++(str), ((tok)->char_offset)++, c)
  ------------------
 1325|   811k|		if (!c) // This is the char *before* advancing
  ------------------
  |  Branch (1325:7): [True: 5, False: 811k]
  ------------------
 1326|      5|			break;
 1327|   811k|	} /* while(PEEK_CHAR) */
 1328|       |
 1329|  6.76k|out:
 1330|  6.76k|	if ((tok->flags & JSON_TOKENER_VALIDATE_UTF8) && (nBytes != 0))
  ------------------
  |  |  179|  6.76k|#define JSON_TOKENER_VALIDATE_UTF8 0x10
  ------------------
  |  Branch (1330:6): [True: 0, False: 6.76k]
  |  Branch (1330:51): [True: 0, False: 0]
  ------------------
 1331|      0|	{
 1332|      0|		tok->err = json_tokener_error_parse_utf8_string;
 1333|      0|	}
 1334|  6.76k|	if (c && (state == json_tokener_state_finish) && (tok->depth == 0) &&
  ------------------
  |  |  261|    266|#define state tok->stack[tok->depth].state
  ------------------
  |  Branch (1334:6): [True: 266, False: 6.50k]
  |  Branch (1334:11): [True: 53, False: 213]
  |  Branch (1334:51): [True: 53, False: 0]
  ------------------
 1335|     53|	    (tok->flags & (JSON_TOKENER_STRICT | JSON_TOKENER_ALLOW_TRAILING_CHARS)) ==
  ------------------
  |  |  159|     53|#define JSON_TOKENER_STRICT 0x01
  ------------------
              	    (tok->flags & (JSON_TOKENER_STRICT | JSON_TOKENER_ALLOW_TRAILING_CHARS)) ==
  ------------------
  |  |  167|     53|#define JSON_TOKENER_ALLOW_TRAILING_CHARS 0x02
  ------------------
  |  Branch (1335:6): [True: 0, False: 53]
  ------------------
 1336|     53|	        JSON_TOKENER_STRICT)
  ------------------
  |  |  159|     53|#define JSON_TOKENER_STRICT 0x01
  ------------------
 1337|      0|	{
 1338|       |		/* unexpected char after JSON data */
 1339|      0|		tok->err = json_tokener_error_parse_unexpected;
 1340|      0|	}
 1341|  6.76k|	if (!c)
  ------------------
  |  Branch (1341:6): [True: 6.50k, False: 266]
  ------------------
 1342|  6.50k|	{
 1343|       |		/* We hit an eof char (0) */
 1344|  6.50k|		if (state != json_tokener_state_finish && saved_state != json_tokener_state_finish)
  ------------------
  |  |  261|  6.50k|#define state tok->stack[tok->depth].state
  ------------------
              		if (state != json_tokener_state_finish && saved_state != json_tokener_state_finish)
  ------------------
  |  |  262|    217|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
  |  Branch (1344:7): [True: 217, False: 6.28k]
  |  Branch (1344:45): [True: 183, False: 34]
  ------------------
 1345|    183|			tok->err = json_tokener_error_parse_eof;
 1346|  6.50k|	}
 1347|       |
 1348|  6.76k|#ifdef HAVE_USELOCALE
 1349|  6.76k|	uselocale(oldlocale);
 1350|  6.76k|	freelocale(newloc);
 1351|       |#elif defined(HAVE_SETLOCALE)
 1352|       |	setlocale(LC_NUMERIC, oldlocale);
 1353|       |	free(oldlocale);
 1354|       |#endif
 1355|       |
 1356|  6.76k|	if (tok->err == json_tokener_success)
  ------------------
  |  Branch (1356:6): [True: 6.37k, False: 396]
  ------------------
 1357|  6.37k|	{
 1358|  6.37k|		json_object *ret = json_object_get(current);
  ------------------
  |  |  263|  6.37k|#define current tok->stack[tok->depth].current
  ------------------
 1359|  6.37k|		int ii;
 1360|       |
 1361|       |		/* Partially reset, so we parse additional objects on subsequent calls. */
 1362|  12.7k|		for (ii = tok->depth; ii >= 0; ii--)
  ------------------
  |  Branch (1362:25): [True: 6.42k, False: 6.37k]
  ------------------
 1363|  6.42k|			json_tokener_reset_level(tok, ii);
 1364|  6.37k|		return ret;
 1365|  6.37k|	}
 1366|       |
 1367|    396|	MC_DEBUG("json_tokener_parse_ex: error %s at offset %d\n", json_tokener_errors[tok->err],
  ------------------
  |  |   87|    396|	if (0)           \
  |  |  ------------------
  |  |  |  Branch (87:6): [Folded, False: 396]
  |  |  ------------------
  |  |   88|    396|	mc_debug(x, ##__VA_ARGS__)
  ------------------
 1368|    396|	         tok->char_offset);
 1369|       |	return NULL;
 1370|  6.76k|}
json_tokener.c:json_tokener_reset_level:
  198|   299k|{
  199|   299k|	tok->stack[depth].state = json_tokener_state_eatws;
  200|   299k|	tok->stack[depth].saved_state = json_tokener_state_start;
  201|   299k|	json_object_put(tok->stack[depth].current);
  202|   299k|	tok->stack[depth].current = NULL;
  203|   299k|	free(tok->stack[depth].obj_field_name);
  204|       |	tok->stack[depth].obj_field_name = NULL;
  205|   299k|}
json_tokener.c:is_ws_char:
   70|  1.03M|{
   71|  1.03M|	return c == ' '
  ------------------
  |  Branch (71:9): [True: 202k, False: 835k]
  ------------------
   72|   835k|	    || c == '\t'
  ------------------
  |  Branch (72:9): [True: 24.7k, False: 810k]
  ------------------
   73|   810k|	    || c == '\n'
  ------------------
  |  Branch (73:9): [True: 3.00k, False: 807k]
  ------------------
   74|   807k|	    || c == '\r';
  ------------------
  |  Branch (74:9): [True: 83, False: 807k]
  ------------------
   75|  1.03M|}
json_tokener.c:is_hex_char:
   78|  11.6k|{
   79|  11.6k|	return (c >= '0' && c <= '9')
  ------------------
  |  Branch (79:10): [True: 11.6k, False: 3]
  |  Branch (79:22): [True: 7.86k, False: 3.79k]
  ------------------
   80|  3.80k|	    || (c >= 'A' && c <= 'F')
  ------------------
  |  Branch (80:10): [True: 3.79k, False: 3]
  |  Branch (80:22): [True: 3.51k, False: 280]
  ------------------
   81|    283|	    || (c >= 'a' && c <= 'f');
  ------------------
  |  Branch (81:10): [True: 279, False: 4]
  |  Branch (81:22): [True: 272, False: 7]
  ------------------
   82|  11.6k|}
json_tokener.c:json_tokener_parse_double:
 1410|    607|{
 1411|    607|	char *end;
 1412|    607|	*retval = strtod(buf, &end);
 1413|    607|	if (buf + len == end)
  ------------------
  |  Branch (1413:6): [True: 606, False: 1]
  ------------------
 1414|    606|		return 0; // It worked
 1415|      1|	return 1;
 1416|    607|}

json_parse_int64:
  244|  1.52k|{
  245|  1.52k|	char *end = NULL;
  246|  1.52k|	int64_t val;
  247|       |
  248|  1.52k|	errno = 0;
  249|  1.52k|	val = strtoll(buf, &end, 10);
  250|  1.52k|	if (end != buf)
  ------------------
  |  Branch (250:6): [True: 1.52k, False: 3]
  ------------------
  251|  1.52k|		*retval = val;
  252|  1.52k|	if ((val == 0 && errno != 0) || (end == buf))
  ------------------
  |  Branch (252:7): [True: 43, False: 1.48k]
  |  Branch (252:19): [True: 0, False: 43]
  |  Branch (252:34): [True: 3, False: 1.52k]
  ------------------
  253|      3|	{
  254|      3|		errno = EINVAL;
  255|      3|		return 1;
  256|      3|	}
  257|  1.52k|	return 0;
  258|  1.52k|}
json_parse_uint64:
  261|  9.28k|{
  262|  9.28k|	char *end = NULL;
  263|  9.28k|	uint64_t val;
  264|       |
  265|  9.28k|	errno = 0;
  266|  9.28k|	while (*buf == ' ')
  ------------------
  |  Branch (266:9): [True: 0, False: 9.28k]
  ------------------
  267|      0|		buf++;
  268|  9.28k|	if (*buf == '-')
  ------------------
  |  Branch (268:6): [True: 0, False: 9.28k]
  ------------------
  269|      0|		return 1; /* error: uint cannot be negative */
  270|       |
  271|  9.28k|	val = strtoull(buf, &end, 10);
  272|  9.28k|	if (end != buf)
  ------------------
  |  Branch (272:6): [True: 9.28k, False: 0]
  ------------------
  273|  9.28k|		*retval = val;
  274|  9.28k|	if ((val == 0 && errno != 0) || (end == buf))
  ------------------
  |  Branch (274:7): [True: 778, False: 8.50k]
  |  Branch (274:19): [True: 0, False: 778]
  |  Branch (274:34): [True: 0, False: 9.28k]
  ------------------
  275|      0|	{
  276|      0|		errno = EINVAL;
  277|      0|		return 1;
  278|      0|	}
  279|  9.28k|	return 0;
  280|  9.28k|}
json_type_to_name:
  308|    236|{
  309|    236|	int o_type_int = (int)o_type;
  310|    236|	if (o_type_int < 0 || o_type_int >= (int)NELEM(json_type_name))
  ------------------
  |  |  293|    236|#define NELEM(a) (sizeof(a) / sizeof(a[0]))
  ------------------
  |  Branch (310:6): [True: 0, False: 236]
  |  Branch (310:24): [True: 0, False: 236]
  ------------------
  311|      0|	{
  312|      0|		_json_c_set_last_err("json_type_to_name: type %d is out of range [0,%u]\n", o_type,
  313|      0|		                     (unsigned)NELEM(json_type_name));
  ------------------
  |  |  293|      0|#define NELEM(a) (sizeof(a) / sizeof(a[0]))
  ------------------
  314|      0|		return NULL;
  315|      0|	}
  316|    236|	return json_type_name[o_type];
  317|    236|}

lh_char_equal:
  495|   309k|{
  496|   309k|	return (strcmp((const char *)k1, (const char *)k2) == 0);
  497|   309k|}
lh_table_new:
  501|  64.4k|{
  502|  64.4k|	int i;
  503|  64.4k|	struct lh_table *t;
  504|       |
  505|       |	/* Allocate space for elements to avoid divisions by zero. */
  506|  64.4k|	assert(size > 0);
  ------------------
  |  Branch (506:2): [True: 0, False: 64.4k]
  |  Branch (506:2): [True: 64.4k, False: 0]
  ------------------
  507|  64.4k|	t = (struct lh_table *)calloc(1, sizeof(struct lh_table));
  508|  64.4k|	if (!t)
  ------------------
  |  Branch (508:6): [True: 0, False: 64.4k]
  ------------------
  509|      0|		return NULL;
  510|       |
  511|  64.4k|	t->count = 0;
  512|  64.4k|	t->size = size;
  513|  64.4k|	t->table = (struct lh_entry *)calloc(size, sizeof(struct lh_entry));
  514|  64.4k|	if (!t->table)
  ------------------
  |  Branch (514:6): [True: 0, False: 64.4k]
  ------------------
  515|      0|	{
  516|      0|		free(t);
  517|      0|		return NULL;
  518|      0|	}
  519|  64.4k|	t->free_fn = free_fn;
  520|  64.4k|	t->hash_fn = hash_fn;
  521|  64.4k|	t->equal_fn = equal_fn;
  522|  1.10M|	for (i = 0; i < size; i++)
  ------------------
  |  Branch (522:14): [True: 1.03M, False: 64.4k]
  ------------------
  523|  1.03M|		t->table[i].k = LH_EMPTY;
  ------------------
  |  |   43|  1.10M|#define LH_EMPTY (void *)-1
  ------------------
  524|  64.4k|	return t;
  525|  64.4k|}
lh_kchar_table_new:
  528|  64.1k|{
  529|  64.1k|	return lh_table_new(size, free_fn, char_hash_fn, lh_char_equal);
  530|  64.1k|}
lh_table_resize:
  538|    257|{
  539|    257|	struct lh_table *new_t;
  540|    257|	struct lh_entry *ent;
  541|       |
  542|    257|	new_t = lh_table_new(new_size, NULL, t->hash_fn, t->equal_fn);
  543|    257|	if (new_t == NULL)
  ------------------
  |  Branch (543:6): [True: 0, False: 257]
  ------------------
  544|      0|		return -1;
  545|       |
  546|  4.08k|	for (ent = t->head; ent != NULL; ent = ent->next)
  ------------------
  |  Branch (546:22): [True: 3.82k, False: 257]
  ------------------
  547|  3.82k|	{
  548|  3.82k|		unsigned long h = lh_get_hash(new_t, ent->k);
  549|  3.82k|		unsigned int opts = 0;
  550|  3.82k|		if (ent->k_is_constant)
  ------------------
  |  Branch (550:7): [True: 0, False: 3.82k]
  ------------------
  551|      0|			opts = JSON_C_OBJECT_ADD_CONSTANT_KEY;
  ------------------
  |  |  114|      0|#define JSON_C_OBJECT_ADD_CONSTANT_KEY (1 << 2)
  ------------------
  552|  3.82k|		if (lh_table_insert_w_hash(new_t, ent->k, ent->v, h, opts) != 0)
  ------------------
  |  Branch (552:7): [True: 0, False: 3.82k]
  ------------------
  553|      0|		{
  554|      0|			lh_table_free(new_t);
  555|      0|			return -1;
  556|      0|		}
  557|  3.82k|	}
  558|    257|	free(t->table);
  559|    257|	t->table = new_t->table;
  560|    257|	t->size = new_size;
  561|    257|	t->head = new_t->head;
  562|    257|	t->tail = new_t->tail;
  563|    257|	free(new_t);
  564|       |
  565|    257|	return 0;
  566|    257|}
lh_table_free:
  569|  64.1k|{
  570|  64.1k|	struct lh_entry *c;
  571|  64.1k|	if (t->free_fn)
  ------------------
  |  Branch (571:6): [True: 64.1k, False: 0]
  ------------------
  572|  64.1k|	{
  573|   133k|		for (c = t->head; c != NULL; c = c->next)
  ------------------
  |  Branch (573:21): [True: 69.5k, False: 64.1k]
  ------------------
  574|  69.5k|			t->free_fn(c);
  575|  64.1k|	}
  576|  64.1k|	free(t->table);
  577|  64.1k|	free(t);
  578|  64.1k|}
lh_table_insert_w_hash:
  582|   136k|{
  583|   136k|	unsigned long n;
  584|       |
  585|   136k|	if (t->count >= t->size * LH_LOAD_FACTOR)
  ------------------
  |  |   38|   136k|#define LH_LOAD_FACTOR 0.66
  ------------------
  |  Branch (585:6): [True: 257, False: 136k]
  ------------------
  586|    257|	{
  587|       |		/* Avoid signed integer overflow with large tables. */
  588|    257|		int new_size = (t->size > INT_MAX / 2) ? INT_MAX : (t->size * 2);
  ------------------
  |  Branch (588:18): [True: 0, False: 257]
  ------------------
  589|    257|		if (t->size == INT_MAX || lh_table_resize(t, new_size) != 0)
  ------------------
  |  Branch (589:7): [True: 0, False: 257]
  |  Branch (589:29): [True: 0, False: 257]
  ------------------
  590|      0|			return -1;
  591|    257|	}
  592|       |
  593|   136k|	n = h % t->size;
  594|       |
  595|   151k|	while (1)
  ------------------
  |  Branch (595:9): [True: 151k, Folded]
  ------------------
  596|   151k|	{
  597|   151k|		if (t->table[n].k == LH_EMPTY || t->table[n].k == LH_FREED)
  ------------------
  |  |   43|   302k|#define LH_EMPTY (void *)-1
  ------------------
              		if (t->table[n].k == LH_EMPTY || t->table[n].k == LH_FREED)
  ------------------
  |  |   48|  15.0k|#define LH_FREED (void *)-2
  ------------------
  |  Branch (597:7): [True: 136k, False: 15.0k]
  |  Branch (597:36): [True: 0, False: 15.0k]
  ------------------
  598|   136k|			break;
  599|  15.0k|		if ((int)++n == t->size)
  ------------------
  |  Branch (599:7): [True: 255, False: 14.7k]
  ------------------
  600|    255|			n = 0;
  601|  15.0k|	}
  602|       |
  603|   136k|	t->table[n].k = k;
  604|   136k|	t->table[n].k_is_constant = (opts & JSON_C_OBJECT_ADD_CONSTANT_KEY);
  ------------------
  |  |  114|   136k|#define JSON_C_OBJECT_ADD_CONSTANT_KEY (1 << 2)
  ------------------
  605|   136k|	t->table[n].v = v;
  606|   136k|	t->count++;
  607|       |
  608|   136k|	if (t->head == NULL)
  ------------------
  |  Branch (608:6): [True: 38.8k, False: 97.4k]
  ------------------
  609|  38.8k|	{
  610|  38.8k|		t->head = t->tail = &t->table[n];
  611|  38.8k|		t->table[n].next = t->table[n].prev = NULL;
  612|  38.8k|	}
  613|  97.4k|	else
  614|  97.4k|	{
  615|  97.4k|		t->tail->next = &t->table[n];
  616|  97.4k|		t->table[n].prev = t->tail;
  617|  97.4k|		t->table[n].next = NULL;
  618|  97.4k|		t->tail = &t->table[n];
  619|  97.4k|	}
  620|       |
  621|   136k|	return 0;
  622|   136k|}
lh_table_lookup_entry_w_hash:
  630|   404k|{
  631|   404k|	unsigned long n = h % t->size;
  632|   404k|	int count = 0;
  633|       |
  634|   470k|	while (count < t->size)
  ------------------
  |  Branch (634:9): [True: 470k, False: 0]
  ------------------
  635|   470k|	{
  636|   470k|		if (t->table[n].k == LH_EMPTY)
  ------------------
  |  |   43|   470k|#define LH_EMPTY (void *)-1
  ------------------
  |  Branch (636:7): [True: 161k, False: 309k]
  ------------------
  637|   161k|			return NULL;
  638|   309k|		if (t->table[n].k != LH_FREED && t->equal_fn(t->table[n].k, k))
  ------------------
  |  |   48|   618k|#define LH_FREED (void *)-2
  ------------------
  |  Branch (638:7): [True: 309k, False: 148]
  |  Branch (638:36): [True: 243k, False: 65.9k]
  ------------------
  639|   243k|			return &t->table[n];
  640|  66.0k|		if ((int)++n == t->size)
  ------------------
  |  Branch (640:7): [True: 353, False: 65.7k]
  ------------------
  641|    353|			n = 0;
  642|  66.0k|		count++;
  643|  66.0k|	}
  644|      0|	return NULL;
  645|   404k|}
lh_table_lookup_entry:
  648|   267k|{
  649|   267k|	return lh_table_lookup_entry_w_hash(t, k, lh_get_hash(t, k));
  650|   267k|}
lh_table_lookup_ex:
  653|   266k|{
  654|   266k|	struct lh_entry *e = lh_table_lookup_entry(t, k);
  655|   266k|	if (e != NULL)
  ------------------
  |  Branch (655:6): [True: 238k, False: 28.5k]
  ------------------
  656|   238k|	{
  657|   238k|		if (v != NULL)
  ------------------
  |  Branch (657:7): [True: 232k, False: 6.00k]
  ------------------
  658|   232k|			*v = lh_entry_v(e);
  659|   238k|		return 1; /* key found */
  660|   238k|	}
  661|  28.5k|	if (v != NULL)
  ------------------
  |  Branch (661:6): [True: 27.8k, False: 704]
  ------------------
  662|  27.8k|		*v = NULL;
  663|  28.5k|	return 0; /* key not found */
  664|   266k|}
lh_table_delete_entry:
  667|  62.9k|{
  668|       |	/* CAW: fixed to be 64bit nice, still need the crazy negative case... */
  669|  62.9k|	ptrdiff_t n = (ptrdiff_t)(e - t->table);
  670|       |
  671|  62.9k|	assert(n >= 0 && n < t->size);
  ------------------
  |  Branch (671:2): [True: 0, False: 62.9k]
  |  Branch (671:2): [True: 0, False: 0]
  |  Branch (671:2): [True: 62.9k, False: 0]
  |  Branch (671:2): [True: 62.9k, False: 0]
  ------------------
  672|       |
  673|       |	/* CAW: this is bad, really bad, maybe stack goes other direction on this machine... */
  674|  62.9k|	if (n < 0)
  ------------------
  |  Branch (674:6): [True: 0, False: 62.9k]
  ------------------
  675|      0|	{
  676|      0|		return -2;
  677|      0|	}
  678|       |
  679|  62.9k|	if (t->table[n].k == LH_EMPTY || t->table[n].k == LH_FREED)
  ------------------
  |  |   43|   125k|#define LH_EMPTY (void *)-1
  ------------------
              	if (t->table[n].k == LH_EMPTY || t->table[n].k == LH_FREED)
  ------------------
  |  |   48|  62.9k|#define LH_FREED (void *)-2
  ------------------
  |  Branch (679:6): [True: 0, False: 62.9k]
  |  Branch (679:35): [True: 0, False: 62.9k]
  ------------------
  680|      0|		return -1;
  681|  62.9k|	t->count--;
  682|  62.9k|	if (t->free_fn)
  ------------------
  |  Branch (682:6): [True: 62.9k, False: 0]
  ------------------
  683|  62.9k|		t->free_fn(e);
  684|  62.9k|	t->table[n].v = NULL;
  685|  62.9k|	t->table[n].k = LH_FREED;
  ------------------
  |  |   48|  62.9k|#define LH_FREED (void *)-2
  ------------------
  686|  62.9k|	if (t->tail == &t->table[n] && t->head == &t->table[n])
  ------------------
  |  Branch (686:6): [True: 62.6k, False: 337]
  |  Branch (686:33): [True: 10.3k, False: 52.2k]
  ------------------
  687|  10.3k|	{
  688|  10.3k|		t->head = t->tail = NULL;
  689|  10.3k|	}
  690|  52.5k|	else if (t->head == &t->table[n])
  ------------------
  |  Branch (690:11): [True: 5, False: 52.5k]
  ------------------
  691|      5|	{
  692|      5|		t->head->next->prev = NULL;
  693|      5|		t->head = t->head->next;
  694|      5|	}
  695|  52.5k|	else if (t->tail == &t->table[n])
  ------------------
  |  Branch (695:11): [True: 52.2k, False: 332]
  ------------------
  696|  52.2k|	{
  697|  52.2k|		t->tail->prev->next = NULL;
  698|  52.2k|		t->tail = t->tail->prev;
  699|  52.2k|	}
  700|    332|	else
  701|    332|	{
  702|    332|		t->table[n].prev->next = t->table[n].next;
  703|    332|		t->table[n].next->prev = t->table[n].prev;
  704|    332|	}
  705|       |	t->table[n].next = t->table[n].prev = NULL;
  706|  62.9k|	return 0;
  707|  62.9k|}
lh_table_delete_entry_to_tail:
  710|  40.9k|{
  711|  40.9k|	struct lh_entry *del_entry = t->tail;
  712|  40.9k|	do
  713|  62.5k|	{
  714|  62.5k|		struct lh_entry *prev = del_entry->prev;
  715|       |		// Could probably micro-optimize this, but better to avoid code duplication for now
  716|  62.5k|		if (lh_table_delete_entry(t, del_entry) != 0)
  ------------------
  |  Branch (716:7): [True: 0, False: 62.5k]
  ------------------
  717|      0|			return -1;
  718|  62.5k|		if (del_entry == first_entry)
  ------------------
  |  Branch (718:7): [True: 40.9k, False: 21.6k]
  ------------------
  719|  40.9k|			break;
  720|  21.6k|		del_entry = prev;
  721|  21.6k|	} while (del_entry != NULL);
  ------------------
  |  Branch (721:11): [True: 21.6k, False: 0]
  ------------------
  722|  40.9k|	return 0;
  723|  40.9k|}
lh_table_delete:
  726|    396|{
  727|    396|	struct lh_entry *e = lh_table_lookup_entry(t, k);
  728|    396|	if (!e)
  ------------------
  |  Branch (728:6): [True: 0, False: 396]
  ------------------
  729|      0|		return -1;
  730|    396|	return lh_table_delete_entry(t, e);
  731|    396|}
lh_table_length:
  734|   156k|{
  735|   156k|	return t->count;
  736|   156k|}
linkhash.c:lh_char_hash:
  459|   408k|{
  460|       |#if defined _MSC_VER || defined __MINGW32__
  461|       |#define RANDOM_SEED_TYPE LONG
  462|       |#else
  463|   408k|#define RANDOM_SEED_TYPE int
  464|   408k|#endif
  465|   408k|	static volatile RANDOM_SEED_TYPE random_seed = -1;
  466|       |
  467|   408k|	if (random_seed == -1)
  ------------------
  |  Branch (467:6): [True: 1, False: 408k]
  ------------------
  468|      1|	{
  469|      1|		RANDOM_SEED_TYPE seed;
  ------------------
  |  |  463|      1|#define RANDOM_SEED_TYPE int
  ------------------
  470|       |		/* we can't use -1 as it is the uninitialized sentinel */
  471|      1|		while ((seed = json_c_get_random_seed()) == -1) {}
  ------------------
  |  Branch (471:10): [True: 0, False: 1]
  ------------------
  472|       |#if SIZEOF_INT == 8 && defined __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8
  473|       |#define USE_SYNC_COMPARE_AND_SWAP 1
  474|       |#endif
  475|      1|#if SIZEOF_INT == 4 && defined __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
  476|      1|#define USE_SYNC_COMPARE_AND_SWAP 1
  477|      1|#endif
  478|       |#if SIZEOF_INT == 2 && defined __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2
  479|       |#define USE_SYNC_COMPARE_AND_SWAP 1
  480|       |#endif
  481|      1|#if defined USE_SYNC_COMPARE_AND_SWAP
  482|      1|		(void)__sync_val_compare_and_swap(&random_seed, -1, seed);
  483|       |#elif defined _MSC_VER || defined __MINGW32__
  484|       |		InterlockedCompareExchange(&random_seed, seed, -1);
  485|       |#else
  486|       |		//#warning "racy random seed initialization if used by multiple threads"
  487|       |		random_seed = seed; /* potentially racy */
  488|       |#endif
  489|      1|	}
  490|       |
  491|   408k|	return hashlittle((const char *)k, strlen((const char *)k), (uint32_t)random_seed);
  492|   408k|}
linkhash.c:hashlittle:
  256|   408k|{
  257|   408k|	uint32_t a,b,c; /* internal state */
  258|   408k|	union
  259|   408k|	{
  260|   408k|		const void *ptr;
  261|   408k|		size_t i;
  262|   408k|	} u; /* needed for Mac Powerbook G4 */
  263|       |
  264|       |	/* Set up the internal state */
  265|   408k|	a = b = c = 0xdeadbeef + ((uint32_t)length) + initval;
  266|       |
  267|   408k|	u.ptr = key;
  268|   408k|	if (HASH_LITTLE_ENDIAN && ((u.i & 0x3) == 0)) {
  ------------------
  |  |  118|   816k|#define HASH_LITTLE_ENDIAN 1
  |  |  ------------------
  |  |  |  Branch (118:28): [True: 408k, Folded]
  |  |  ------------------
  ------------------
  |  Branch (268:28): [True: 262k, False: 145k]
  ------------------
  269|   262k|		const uint32_t *k = (const uint32_t *)key; /* read 32-bit chunks */
  270|       |
  271|       |		/*------ all but last block: aligned reads and affect 32 bits of (a,b,c) */
  272|   288k|		while (length > 12)
  ------------------
  |  Branch (272:10): [True: 25.6k, False: 262k]
  ------------------
  273|  25.6k|		{
  274|  25.6k|			a += k[0];
  275|  25.6k|			b += k[1];
  276|  25.6k|			c += k[2];
  277|  25.6k|			mix(a,b,c);
  ------------------
  |  |  178|  25.6k|#define mix(a,b,c) \
  |  |  179|  25.6k|{ \
  |  |  180|  25.6k|	a -= c;  a ^= rot(c, 4);  c += b; \
  |  |  ------------------
  |  |  |  |  131|  25.6k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  181|  25.6k|	b -= a;  b ^= rot(a, 6);  a += c; \
  |  |  ------------------
  |  |  |  |  131|  25.6k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  182|  25.6k|	c -= b;  c ^= rot(b, 8);  b += a; \
  |  |  ------------------
  |  |  |  |  131|  25.6k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  183|  25.6k|	a -= c;  a ^= rot(c,16);  c += b; \
  |  |  ------------------
  |  |  |  |  131|  25.6k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  184|  25.6k|	b -= a;  b ^= rot(a,19);  a += c; \
  |  |  ------------------
  |  |  |  |  131|  25.6k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  185|  25.6k|	c -= b;  c ^= rot(b, 4);  b += a; \
  |  |  ------------------
  |  |  |  |  131|  25.6k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  186|  25.6k|}
  ------------------
  278|  25.6k|			length -= 12;
  279|  25.6k|			k += 3;
  280|  25.6k|		}
  281|       |
  282|       |		/*----------------------------- handle the last (probably partial) block */
  283|       |		/*
  284|       |		 * "k[2]&0xffffff" actually reads beyond the end of the string, but
  285|       |		 * then masks off the part it's not allowed to read.  Because the
  286|       |		 * string is aligned, the masked-off tail is in the same word as the
  287|       |		 * rest of the string.  Every machine with memory protection I've seen
  288|       |		 * does it on word boundaries, so is OK with this.  But VALGRIND will
  289|       |		 * still catch it and complain.  The masking trick does make the hash
  290|       |		 * noticeably faster for short strings (like English words).
  291|       |		 * AddressSanitizer is similarly picky about overrunning
  292|       |		 * the buffer. (https://clang.llvm.org/docs/AddressSanitizer.html)
  293|       |		 */
  294|       |#ifdef VALGRIND
  295|       |#define PRECISE_MEMORY_ACCESS 1
  296|       |#elif defined(__SANITIZE_ADDRESS__) /* GCC's ASAN */
  297|       |#define PRECISE_MEMORY_ACCESS 1
  298|       |#elif defined(__has_feature)
  299|       |#if __has_feature(address_sanitizer) /* Clang's ASAN */
  300|       |#define PRECISE_MEMORY_ACCESS 1
  301|       |#endif
  302|   262k|#endif
  303|   262k|#ifndef PRECISE_MEMORY_ACCESS
  304|       |
  305|   262k|		switch(length)
  ------------------
  |  Branch (305:10): [True: 262k, False: 0]
  ------------------
  306|   262k|		{
  307|    893|		case 12: c+=k[2]; b+=k[1]; a+=k[0]; break;
  ------------------
  |  Branch (307:3): [True: 893, False: 261k]
  ------------------
  308|  3.72k|		case 11: c+=k[2]&0xffffff; b+=k[1]; a+=k[0]; break;
  ------------------
  |  Branch (308:3): [True: 3.72k, False: 258k]
  ------------------
  309|  4.54k|		case 10: c+=k[2]&0xffff; b+=k[1]; a+=k[0]; break;
  ------------------
  |  Branch (309:3): [True: 4.54k, False: 257k]
  ------------------
  310|  34.7k|		case 9 : c+=k[2]&0xff; b+=k[1]; a+=k[0]; break;
  ------------------
  |  Branch (310:3): [True: 34.7k, False: 227k]
  ------------------
  311|  53.8k|		case 8 : b+=k[1]; a+=k[0]; break;
  ------------------
  |  Branch (311:3): [True: 53.8k, False: 208k]
  ------------------
  312|  21.9k|		case 7 : b+=k[1]&0xffffff; a+=k[0]; break;
  ------------------
  |  Branch (312:3): [True: 21.9k, False: 240k]
  ------------------
  313|  77.5k|		case 6 : b+=k[1]&0xffff; a+=k[0]; break;
  ------------------
  |  Branch (313:3): [True: 77.5k, False: 184k]
  ------------------
  314|  9.45k|		case 5 : b+=k[1]&0xff; a+=k[0]; break;
  ------------------
  |  Branch (314:3): [True: 9.45k, False: 253k]
  ------------------
  315|  25.6k|		case 4 : a+=k[0]; break;
  ------------------
  |  Branch (315:3): [True: 25.6k, False: 236k]
  ------------------
  316|  1.25k|		case 3 : a+=k[0]&0xffffff; break;
  ------------------
  |  Branch (316:3): [True: 1.25k, False: 261k]
  ------------------
  317|  1.57k|		case 2 : a+=k[0]&0xffff; break;
  ------------------
  |  Branch (317:3): [True: 1.57k, False: 260k]
  ------------------
  318|  26.7k|		case 1 : a+=k[0]&0xff; break;
  ------------------
  |  Branch (318:3): [True: 26.7k, False: 235k]
  ------------------
  319|    726|		case 0 : return c; /* zero length strings require no mixing */
  ------------------
  |  Branch (319:3): [True: 726, False: 261k]
  ------------------
  320|   262k|		}
  321|       |
  322|       |#else /* make valgrind happy */
  323|       |
  324|       |		const uint8_t  *k8 = (const uint8_t *)k;
  325|       |		switch(length)
  326|       |		{
  327|       |		case 12: c+=k[2]; b+=k[1]; a+=k[0]; break;
  328|       |		case 11: c+=((uint32_t)k8[10])<<16;  /* fall through */
  329|       |		case 10: c+=((uint32_t)k8[9])<<8;    /* fall through */
  330|       |		case 9 : c+=k8[8];                   /* fall through */
  331|       |		case 8 : b+=k[1]; a+=k[0]; break;
  332|       |		case 7 : b+=((uint32_t)k8[6])<<16;   /* fall through */
  333|       |		case 6 : b+=((uint32_t)k8[5])<<8;    /* fall through */
  334|       |		case 5 : b+=k8[4];                   /* fall through */
  335|       |		case 4 : a+=k[0]; break;
  336|       |		case 3 : a+=((uint32_t)k8[2])<<16;   /* fall through */
  337|       |		case 2 : a+=((uint32_t)k8[1])<<8;    /* fall through */
  338|       |		case 1 : a+=k8[0]; break;
  339|       |		case 0 : return c;
  340|       |		}
  341|       |
  342|       |#endif /* !valgrind */
  343|       |
  344|   262k|	}
  345|   145k|	else if (HASH_LITTLE_ENDIAN && ((u.i & 0x1) == 0))
  ------------------
  |  |  118|   291k|#define HASH_LITTLE_ENDIAN 1
  |  |  ------------------
  |  |  |  Branch (118:28): [True: 145k, Folded]
  |  |  ------------------
  ------------------
  |  Branch (345:33): [True: 49.2k, False: 96.3k]
  ------------------
  346|  49.2k|	{
  347|  49.2k|		const uint16_t *k = (const uint16_t *)key; /* read 16-bit chunks */
  348|  49.2k|		const uint8_t  *k8;
  349|       |
  350|       |		/*--------------- all but last block: aligned reads and different mixing */
  351|  61.3k|		while (length > 12)
  ------------------
  |  Branch (351:10): [True: 12.1k, False: 49.2k]
  ------------------
  352|  12.1k|		{
  353|  12.1k|			a += k[0] + (((uint32_t)k[1])<<16);
  354|  12.1k|			b += k[2] + (((uint32_t)k[3])<<16);
  355|  12.1k|			c += k[4] + (((uint32_t)k[5])<<16);
  356|  12.1k|			mix(a,b,c);
  ------------------
  |  |  178|  12.1k|#define mix(a,b,c) \
  |  |  179|  12.1k|{ \
  |  |  180|  12.1k|	a -= c;  a ^= rot(c, 4);  c += b; \
  |  |  ------------------
  |  |  |  |  131|  12.1k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  181|  12.1k|	b -= a;  b ^= rot(a, 6);  a += c; \
  |  |  ------------------
  |  |  |  |  131|  12.1k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  182|  12.1k|	c -= b;  c ^= rot(b, 8);  b += a; \
  |  |  ------------------
  |  |  |  |  131|  12.1k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  183|  12.1k|	a -= c;  a ^= rot(c,16);  c += b; \
  |  |  ------------------
  |  |  |  |  131|  12.1k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  184|  12.1k|	b -= a;  b ^= rot(a,19);  a += c; \
  |  |  ------------------
  |  |  |  |  131|  12.1k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  185|  12.1k|	c -= b;  c ^= rot(b, 4);  b += a; \
  |  |  ------------------
  |  |  |  |  131|  12.1k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  186|  12.1k|}
  ------------------
  357|  12.1k|			length -= 12;
  358|  12.1k|			k += 6;
  359|  12.1k|		}
  360|       |
  361|       |		/*----------------------------- handle the last (probably partial) block */
  362|  49.2k|		k8 = (const uint8_t *)k;
  363|  49.2k|		switch(length)
  ------------------
  |  Branch (363:10): [True: 49.2k, False: 0]
  ------------------
  364|  49.2k|		{
  365|      0|		case 12: c+=k[4]+(((uint32_t)k[5])<<16);
  ------------------
  |  Branch (365:3): [True: 0, False: 49.2k]
  ------------------
  366|      0|			 b+=k[2]+(((uint32_t)k[3])<<16);
  367|      0|			 a+=k[0]+(((uint32_t)k[1])<<16);
  368|      0|			 break;
  369|      0|		case 11: c+=((uint32_t)k8[10])<<16;     /* fall through */
  ------------------
  |  Branch (369:3): [True: 0, False: 49.2k]
  ------------------
  370|     26|		case 10: c+=k[4];
  ------------------
  |  Branch (370:3): [True: 26, False: 49.2k]
  ------------------
  371|     26|			 b+=k[2]+(((uint32_t)k[3])<<16);
  372|     26|			 a+=k[0]+(((uint32_t)k[1])<<16);
  373|     26|			 break;
  374|    553|		case 9 : c+=k8[8];                      /* fall through */
  ------------------
  |  Branch (374:3): [True: 553, False: 48.7k]
  ------------------
  375|    705|		case 8 : b+=k[2]+(((uint32_t)k[3])<<16);
  ------------------
  |  Branch (375:3): [True: 152, False: 49.1k]
  ------------------
  376|    705|			 a+=k[0]+(((uint32_t)k[1])<<16);
  377|    705|			 break;
  378|      0|		case 7 : b+=((uint32_t)k8[6])<<16;      /* fall through */
  ------------------
  |  Branch (378:3): [True: 0, False: 49.2k]
  ------------------
  379|      0|		case 6 : b+=k[2];
  ------------------
  |  Branch (379:3): [True: 0, False: 49.2k]
  ------------------
  380|      0|			 a+=k[0]+(((uint32_t)k[1])<<16);
  381|      0|			 break;
  382|  36.4k|		case 5 : b+=k8[4];                      /* fall through */
  ------------------
  |  Branch (382:3): [True: 36.4k, False: 12.8k]
  ------------------
  383|  36.4k|		case 4 : a+=k[0]+(((uint32_t)k[1])<<16);
  ------------------
  |  Branch (383:3): [True: 0, False: 49.2k]
  ------------------
  384|  36.4k|			 break;
  385|      0|		case 3 : a+=((uint32_t)k8[2])<<16;      /* fall through */
  ------------------
  |  Branch (385:3): [True: 0, False: 49.2k]
  ------------------
  386|      0|		case 2 : a+=k[0];
  ------------------
  |  Branch (386:3): [True: 0, False: 49.2k]
  ------------------
  387|      0|			 break;
  388|  12.1k|		case 1 : a+=k8[0];
  ------------------
  |  Branch (388:3): [True: 12.1k, False: 37.1k]
  ------------------
  389|  12.1k|			 break;
  390|      0|		case 0 : return c;                     /* zero length requires no mixing */
  ------------------
  |  Branch (390:3): [True: 0, False: 49.2k]
  ------------------
  391|  49.2k|		}
  392|       |
  393|  49.2k|	}
  394|  96.3k|	else
  395|  96.3k|	{
  396|       |		/* need to read the key one byte at a time */
  397|  96.3k|		const uint8_t *k = (const uint8_t *)key;
  398|       |
  399|       |		/*--------------- all but the last block: affect some 32 bits of (a,b,c) */
  400|  96.3k|		while (length > 12)
  ------------------
  |  Branch (400:10): [True: 8, False: 96.3k]
  ------------------
  401|      8|		{
  402|      8|			a += k[0];
  403|      8|			a += ((uint32_t)k[1])<<8;
  404|      8|			a += ((uint32_t)k[2])<<16;
  405|      8|			a += ((uint32_t)k[3])<<24;
  406|      8|			b += k[4];
  407|      8|			b += ((uint32_t)k[5])<<8;
  408|      8|			b += ((uint32_t)k[6])<<16;
  409|      8|			b += ((uint32_t)k[7])<<24;
  410|      8|			c += k[8];
  411|      8|			c += ((uint32_t)k[9])<<8;
  412|      8|			c += ((uint32_t)k[10])<<16;
  413|      8|			c += ((uint32_t)k[11])<<24;
  414|      8|			mix(a,b,c);
  ------------------
  |  |  178|      8|#define mix(a,b,c) \
  |  |  179|      8|{ \
  |  |  180|      8|	a -= c;  a ^= rot(c, 4);  c += b; \
  |  |  ------------------
  |  |  |  |  131|      8|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  181|      8|	b -= a;  b ^= rot(a, 6);  a += c; \
  |  |  ------------------
  |  |  |  |  131|      8|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  182|      8|	c -= b;  c ^= rot(b, 8);  b += a; \
  |  |  ------------------
  |  |  |  |  131|      8|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  183|      8|	a -= c;  a ^= rot(c,16);  c += b; \
  |  |  ------------------
  |  |  |  |  131|      8|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  184|      8|	b -= a;  b ^= rot(a,19);  a += c; \
  |  |  ------------------
  |  |  |  |  131|      8|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  185|      8|	c -= b;  c ^= rot(b, 4);  b += a; \
  |  |  ------------------
  |  |  |  |  131|      8|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  186|      8|}
  ------------------
  415|      8|			length -= 12;
  416|      8|			k += 12;
  417|      8|		}
  418|       |
  419|       |		/*-------------------------------- last block: affect all 32 bits of (c) */
  420|  96.3k|		switch(length) /* all the case statements fall through */
  ------------------
  |  Branch (420:10): [True: 96.3k, False: 0]
  ------------------
  421|  96.3k|		{
  422|  18.7k|		case 12: c+=((uint32_t)k[11])<<24; /* FALLTHRU */
  ------------------
  |  Branch (422:3): [True: 18.7k, False: 77.5k]
  ------------------
  423|  18.7k|		case 11: c+=((uint32_t)k[10])<<16; /* FALLTHRU */
  ------------------
  |  Branch (423:3): [True: 0, False: 96.3k]
  ------------------
  424|  18.7k|		case 10: c+=((uint32_t)k[9])<<8; /* FALLTHRU */
  ------------------
  |  Branch (424:3): [True: 0, False: 96.3k]
  ------------------
  425|  18.8k|		case 9 : c+=k[8]; /* FALLTHRU */
  ------------------
  |  Branch (425:3): [True: 28, False: 96.3k]
  ------------------
  426|  49.8k|		case 8 : b+=((uint32_t)k[7])<<24; /* FALLTHRU */
  ------------------
  |  Branch (426:3): [True: 31.0k, False: 65.2k]
  ------------------
  427|  49.8k|		case 7 : b+=((uint32_t)k[6])<<16; /* FALLTHRU */
  ------------------
  |  Branch (427:3): [True: 2, False: 96.3k]
  ------------------
  428|  75.4k|		case 6 : b+=((uint32_t)k[5])<<8; /* FALLTHRU */
  ------------------
  |  Branch (428:3): [True: 25.5k, False: 70.7k]
  ------------------
  429|  75.4k|		case 5 : b+=k[4]; /* FALLTHRU */
  ------------------
  |  Branch (429:3): [True: 0, False: 96.3k]
  ------------------
  430|  96.1k|		case 4 : a+=((uint32_t)k[3])<<24; /* FALLTHRU */
  ------------------
  |  Branch (430:3): [True: 20.7k, False: 75.6k]
  ------------------
  431|  96.3k|		case 3 : a+=((uint32_t)k[2])<<16; /* FALLTHRU */
  ------------------
  |  Branch (431:3): [True: 221, False: 96.1k]
  ------------------
  432|  96.3k|		case 2 : a+=((uint32_t)k[1])<<8; /* FALLTHRU */
  ------------------
  |  Branch (432:3): [True: 0, False: 96.3k]
  ------------------
  433|  96.3k|		case 1 : a+=k[0];
  ------------------
  |  Branch (433:3): [True: 0, False: 96.3k]
  ------------------
  434|  96.3k|			 break;
  435|      0|		case 0 : return c;
  ------------------
  |  Branch (435:3): [True: 0, False: 96.3k]
  ------------------
  436|  96.3k|		}
  437|  96.3k|	}
  438|       |
  439|   407k|	final(a,b,c);
  ------------------
  |  |  215|   407k|#define final(a,b,c) \
  |  |  216|   407k|{ \
  |  |  217|   407k|	c ^= b; c -= rot(b,14); \
  |  |  ------------------
  |  |  |  |  131|   407k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  218|   407k|	a ^= c; a -= rot(c,11); \
  |  |  ------------------
  |  |  |  |  131|   407k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  219|   407k|	b ^= a; b -= rot(a,25); \
  |  |  ------------------
  |  |  |  |  131|   407k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  220|   407k|	c ^= b; c -= rot(b,16); \
  |  |  ------------------
  |  |  |  |  131|   407k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  221|   407k|	a ^= c; a -= rot(c,4);  \
  |  |  ------------------
  |  |  |  |  131|   407k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  222|   407k|	b ^= a; b -= rot(a,14); \
  |  |  ------------------
  |  |  |  |  131|   407k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  223|   407k|	c ^= b; c -= rot(b,24); \
  |  |  ------------------
  |  |  |  |  131|   407k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  224|   407k|}
  ------------------
  440|   407k|	return c;
  441|   408k|}

json_object.c:lh_entry_v:
  420|   380k|{
  421|   380k|	return _LH_UNCONST(e->v);
  ------------------
  |  |  388|   380k|#define _LH_UNCONST(a) ((void *)(uintptr_t)(const void *)(a))
  ------------------
  422|   380k|}
json_object.c:lh_entry_set_val:
  429|   136k|{
  430|   136k|	e->v = newval;
  431|   136k|}
json_object.c:lh_table_head:
  361|  57.6k|{
  362|  57.6k|	return t->head;
  363|  57.6k|}
json_object.c:lh_entry_k:
  399|   243k|{
  400|   243k|	return _LH_UNCONST(e->k);
  ------------------
  |  |  388|   243k|#define _LH_UNCONST(a) ((void *)(uintptr_t)(const void *)(a))
  ------------------
  401|   243k|}
json_object.c:lh_entry_next:
  439|   111k|{
  440|   111k|	return e->next;
  441|   111k|}
json_object.c:lh_entry_k_is_constant:
  409|   132k|{
  410|   132k|	return e->k_is_constant;
  411|   132k|}
json_object.c:lh_get_hash:
  377|   137k|{
  378|   137k|	return t->hash_fn(k);
  379|   137k|}
linkhash.c:lh_get_hash:
  377|   271k|{
  378|   271k|	return t->hash_fn(k);
  379|   271k|}
linkhash.c:lh_entry_v:
  420|   232k|{
  421|   232k|	return _LH_UNCONST(e->v);
  ------------------
  |  |  388|   232k|#define _LH_UNCONST(a) ((void *)(uintptr_t)(const void *)(a))
  ------------------
  422|   232k|}

printbuf_new:
   38|  12.7k|{
   39|  12.7k|	struct printbuf *p;
   40|       |
   41|  12.7k|	p = (struct printbuf *)calloc(1, sizeof(struct printbuf));
   42|  12.7k|	if (!p)
  ------------------
  |  Branch (42:6): [True: 0, False: 12.7k]
  ------------------
   43|      0|		return NULL;
   44|  12.7k|	p->size = 32;
   45|  12.7k|	p->bpos = 0;
   46|  12.7k|	if (!(p->buf = (char *)malloc(p->size)))
  ------------------
  |  Branch (46:6): [True: 0, False: 12.7k]
  ------------------
   47|      0|	{
   48|      0|		free(p);
   49|      0|		return NULL;
   50|      0|	}
   51|  12.7k|	p->buf[0] = '\0';
   52|  12.7k|	return p;
   53|  12.7k|}
printbuf_memappend:
   98|  1.03M|{
   99|       |	/* Prevent signed integer overflows with large buffers. */
  100|  1.03M|	if (size < 0 || size > INT_MAX - p->bpos - 1)
  ------------------
  |  Branch (100:6): [True: 0, False: 1.03M]
  |  Branch (100:18): [True: 0, False: 1.03M]
  ------------------
  101|      0|	{
  102|      0|		errno = EFBIG;
  103|      0|		return -1;
  104|      0|	}
  105|  1.03M|	if (p->size <= p->bpos + size + 1)
  ------------------
  |  Branch (105:6): [True: 24.0k, False: 1.01M]
  ------------------
  106|  24.0k|	{
  107|  24.0k|		if (printbuf_extend(p, p->bpos + size + 1) < 0)
  ------------------
  |  Branch (107:7): [True: 0, False: 24.0k]
  ------------------
  108|      0|			return -1;
  109|  24.0k|	}
  110|  1.03M|	memcpy(p->buf + p->bpos, buf, size);
  111|  1.03M|	p->bpos += size;
  112|  1.03M|	p->buf[p->bpos] = '\0';
  113|  1.03M|	return size;
  114|  1.03M|}
printbuf_reset:
  180|   202k|{
  181|   202k|	p->buf[0] = '\0';
  182|   202k|	p->bpos = 0;
  183|   202k|}
printbuf_free:
  186|   190k|{
  187|   190k|	if (p)
  ------------------
  |  Branch (187:6): [True: 12.7k, False: 177k]
  ------------------
  188|  12.7k|	{
  189|  12.7k|		free(p->buf);
  190|  12.7k|		free(p);
  191|  12.7k|	}
  192|   190k|}
printbuf.c:printbuf_extend:
   66|  24.0k|{
   67|  24.0k|	char *t;
   68|  24.0k|	int new_size;
   69|       |
   70|  24.0k|	if (p->size >= min_size)
  ------------------
  |  Branch (70:6): [True: 3.47k, False: 20.5k]
  ------------------
   71|  3.47k|		return 0;
   72|       |	/* Prevent signed integer overflows with large buffers. */
   73|  20.5k|	if (min_size > INT_MAX - 8)
  ------------------
  |  Branch (73:6): [True: 0, False: 20.5k]
  ------------------
   74|      0|	{
   75|      0|		errno = EFBIG;
   76|      0|		return -1;
   77|      0|	}
   78|  20.5k|	if (p->size > INT_MAX / 2)
  ------------------
  |  Branch (78:6): [True: 0, False: 20.5k]
  ------------------
   79|      0|		new_size = min_size + 8;
   80|  20.5k|	else {
   81|  20.5k|		new_size = p->size * 2;
   82|  20.5k|		if (new_size < min_size + 8)
  ------------------
  |  Branch (82:7): [True: 458, False: 20.1k]
  ------------------
   83|    458|			new_size = min_size + 8;
   84|  20.5k|	}
   85|       |#ifdef PRINTBUF_DEBUG
   86|       |	MC_DEBUG("printbuf_extend: realloc "
   87|       |	         "bpos=%d min_size=%d old_size=%d new_size=%d\n",
   88|       |	         p->bpos, min_size, p->size, new_size);
   89|       |#endif /* PRINTBUF_DEBUG */
   90|  20.5k|	if (!(t = (char *)realloc(p->buf, new_size)))
  ------------------
  |  Branch (90:6): [True: 0, False: 20.5k]
  ------------------
   91|      0|		return -1;
   92|  20.5k|	p->size = new_size;
   93|  20.5k|	p->buf = t;
   94|  20.5k|	return 0;
   95|  20.5k|}

json_c_get_random_seed:
  322|      1|{
  323|       |#ifdef OVERRIDE_GET_RANDOM_SEED
  324|       |	OVERRIDE_GET_RANDOM_SEED;
  325|       |#endif
  326|       |#if defined HAVE_RDRAND && HAVE_RDRAND
  327|       |	if (has_rdrand())
  328|       |		return get_rdrand_seed();
  329|       |#endif
  330|       |#ifdef HAVE_ARC4RANDOM
  331|       |	/* arc4random never fails, so use it if it's available */
  332|       |	return arc4random();
  333|       |#else
  334|      1|#ifdef HAVE_GETRANDOM
  335|      1|	{
  336|      1|		int seed = 0;
  337|      1|		if (get_getrandom_seed(&seed) == 0)
  ------------------
  |  Branch (337:7): [True: 1, False: 0]
  ------------------
  338|      1|			return seed;
  339|      1|	}
  340|      0|#endif
  341|      0|#if defined HAVE_DEV_RANDOM && HAVE_DEV_RANDOM
  342|      0|	{
  343|      0|		int seed = 0;
  344|      0|		if (get_dev_random_seed(&seed) == 0)
  ------------------
  |  Branch (344:7): [True: 0, False: 0]
  ------------------
  345|      0|			return seed;
  346|      0|	}
  347|      0|#endif
  348|       |#if defined HAVE_CRYPTGENRANDOM && HAVE_CRYPTGENRANDOM
  349|       |	{
  350|       |		int seed = 0;
  351|       |		if (get_cryptgenrandom_seed(&seed) == 0)
  352|       |			return seed;
  353|       |	}
  354|       |#endif
  355|      0|	return get_time_seed();
  356|      0|#endif /* !HAVE_ARC4RANDOM */
  357|      0|}
random_seed.c:get_getrandom_seed:
  180|      1|{
  181|      1|	DEBUG_SEED("get_getrandom_seed");
  182|       |
  183|      1|	ssize_t ret;
  184|       |
  185|      1|	do
  186|      1|	{
  187|      1|		ret = getrandom(seed, sizeof(*seed), GRND_NONBLOCK);
  188|      1|	} while ((ret == -1) && (errno == EINTR));
  ------------------
  |  Branch (188:11): [True: 0, False: 1]
  |  Branch (188:26): [True: 0, False: 0]
  ------------------
  189|       |
  190|      1|	if (ret == -1)
  ------------------
  |  Branch (190:6): [True: 0, False: 1]
  ------------------
  191|      0|	{
  192|      0|		if (errno == ENOSYS) /* syscall not available in kernel */
  ------------------
  |  Branch (192:7): [True: 0, False: 0]
  ------------------
  193|      0|			return -1;
  194|      0|		if (errno == EAGAIN) /* entropy not yet initialized */
  ------------------
  |  Branch (194:7): [True: 0, False: 0]
  ------------------
  195|      0|			return -1;
  196|       |
  197|      0|		fprintf(stderr, "error from getrandom(): %s", strerror(errno));
  ------------------
  |  |   23|      0|#define strerror _json_c_strerror
  ------------------
  198|      0|		return -1;
  199|      0|	}
  200|       |
  201|      1|	if (ret != sizeof(*seed))
  ------------------
  |  Branch (201:6): [True: 0, False: 1]
  ------------------
  202|      0|		return -1;
  203|       |
  204|      1|	return 0;
  205|      1|}

dm_lib_release:
 2782|  5.94k|{
 2783|  5.94k|	if (!_hold_control_fd_open)
  ------------------
  |  Branch (2783:6): [True: 5.94k, False: 0]
  ------------------
 2784|  5.94k|		_close_control_fd();
 2785|  5.94k|	dm_timestamp_destroy(_dm_ioctl_timestamp);
 2786|       |	_dm_ioctl_timestamp = NULL;
 2787|  5.94k|	update_devs();
 2788|  5.94k|}
libdm-iface.c:_close_control_fd:
  423|  5.94k|{
  424|  5.94k|	if (_control_fd != -1) {
  ------------------
  |  Branch (424:6): [True: 0, False: 5.94k]
  ------------------
  425|      0|		if (close(_control_fd) < 0)
  ------------------
  |  Branch (425:7): [True: 0, False: 0]
  ------------------
  426|       |			log_sys_debug("close", "_control_fd");
  ------------------
  |  |  128|      0|		log_debug("%s%s%s failed: %s", y, *y ? ": " : "", x, strerror(errno))
  |  |  ------------------
  |  |  |  |   88|      0|#define log_debug(...) LOG_LINE(_LOG_DEBUG, ##__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#define LOG_LINE(l, x...) LOG_MESG(l, __FILE__, __LINE__, 0, ## x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   24|      0|	dm_log_with_errno(l, f, ln, e, ## x)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  128|      0|		log_debug("%s%s%s failed: %s", y, *y ? ": " : "", x, strerror(errno))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  427|      0|		_control_fd = -1;
  428|      0|	}
  429|  5.94k|}

dm_lib_init:
   88|      2|{
   89|      2|	const char *env;
   90|       |
   91|      2|	if (getenv("DM_DISABLE_UDEV"))
  ------------------
  |  Branch (91:6): [True: 0, False: 2]
  ------------------
   92|      0|		_udev_disabled = 1;
   93|       |
   94|      2|	_name_mangling_mode = DEFAULT_DM_NAME_MANGLING;
  ------------------
  |  |   54|      2|#define DEFAULT_DM_NAME_MANGLING DM_STRING_MANGLING_AUTO
  ------------------
   95|      2|	if ((env = getenv(DM_DEFAULT_NAME_MANGLING_MODE_ENV_VAR_NAME))) {
  ------------------
  |  |   46|      2|#define DM_DEFAULT_NAME_MANGLING_MODE_ENV_VAR_NAME "DM_DEFAULT_NAME_MANGLING_MODE"
  ------------------
  |  Branch (95:6): [True: 0, False: 2]
  ------------------
   96|      0|		if (!strcasecmp(env, "none"))
  ------------------
  |  Branch (96:7): [True: 0, False: 0]
  ------------------
   97|      0|			_name_mangling_mode = DM_STRING_MANGLING_NONE;
   98|      0|		else if (!strcasecmp(env, "auto"))
  ------------------
  |  Branch (98:12): [True: 0, False: 0]
  ------------------
   99|      0|			_name_mangling_mode = DM_STRING_MANGLING_AUTO;
  100|      0|		else if (!strcasecmp(env, "hex"))
  ------------------
  |  Branch (100:12): [True: 0, False: 0]
  ------------------
  101|      0|			_name_mangling_mode = DM_STRING_MANGLING_HEX;
  102|      0|	}
  103|      2|}
dm_log_init:
  222|  11.8k|{
  223|  11.8k|	if (fn)  {
  ------------------
  |  Branch (223:6): [True: 5.94k, False: 5.94k]
  ------------------
  224|  5.94k|		dm_log = fn;
  225|  5.94k|		dm_log_with_errno = _log_to_default_log;
  226|  5.94k|	} else {
  227|  5.94k|		dm_log = _default_log;
  228|  5.94k|		dm_log_with_errno = _default_log_with_errno;
  229|  5.94k|	}
  230|  11.8k|}
dm_log_init_verbose:
  249|  11.8k|{
  250|  11.8k|	_verbose = level;
  251|  11.8k|}
update_devs:
 1721|  5.94k|{
 1722|  5.94k|	_pop_node_ops();
 1723|  5.94k|}
libdm-common.c:_pop_node_ops:
 1672|  5.94k|{
 1673|  5.94k|	struct dm_list *noph, *nopht;
 1674|  5.94k|	struct node_op_parms *nop;
 1675|       |
 1676|  5.94k|	dm_list_iterate_safe(noph, nopht, &_node_ops) {
  ------------------
  |  | 2843|  5.94k|	for (v = (head)->n, t = v->n; v != head; v = t, t = v->n)
  |  |  ------------------
  |  |  |  Branch (2843:32): [True: 0, False: 5.94k]
  |  |  ------------------
  ------------------
 1677|      0|		nop = dm_list_item(noph, struct node_op_parms);
  ------------------
  |  | 2806|      0|#define dm_list_item(v, t) dm_list_struct_base((v), t, list)
  |  |  ------------------
  |  |  |  | 2800|      0|    ((t *)((char *)(v) - offsetof(t, head)))
  |  |  ------------------
  ------------------
 1678|      0|		if (!nop->rely_on_udev) {
  ------------------
  |  Branch (1678:7): [True: 0, False: 0]
  ------------------
 1679|      0|			_log_node_op("Processing", nop);
 1680|      0|			_do_node_op(nop->type, nop->dev_name, nop->major, nop->minor,
 1681|      0|				    nop->uid, nop->gid, nop->mode, nop->old_name,
 1682|      0|				    nop->read_ahead, nop->read_ahead_flags,
 1683|      0|				    nop->warn_if_udev_failed);
 1684|      0|		} else
 1685|      0|			_log_node_op("Skipping", nop);
 1686|      0|		_del_node_op(nop);
 1687|      0|	}
 1688|  5.94k|}

dm_timestamp_destroy:
  176|  5.94k|{
  177|  5.94k|	dm_free(ts);
  ------------------
  |  | 2411|  5.94k|#define dm_free(p) dm_free_wrapper(p)
  ------------------
  178|  5.94k|}

dm_free_wrapper:
  394|  5.94k|{
  395|  5.94k|	free(ptr);
  396|  5.94k|}

CRYPTO_calloc:
   29|    825|{
   30|    825|    size_t bytes;
   31|       |
   32|    825|    if (ossl_unlikely(!ossl_size_mul(num, size, &bytes, file, line)))
  ------------------
  |  |   23|    825|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 825]
  |  |  ------------------
  ------------------
   33|      0|        return NULL;
   34|       |
   35|    825|    return CRYPTO_zalloc(bytes, file, line);
   36|    825|}
CRYPTO_aligned_alloc_array:
   40|      3|{
   41|      3|    size_t bytes;
   42|       |
   43|      3|    if (ossl_unlikely(!ossl_size_mul(num, size, &bytes, file, line))) {
  ------------------
  |  |   23|      3|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 3]
  |  |  ------------------
  ------------------
   44|      0|        *freeptr = NULL;
   45|       |
   46|      0|        return NULL;
   47|      0|    }
   48|       |
   49|      3|    return CRYPTO_aligned_alloc(bytes, align, freeptr, file, line);
   50|      3|}
CRYPTO_realloc_array:
   54|     24|{
   55|     24|    size_t bytes;
   56|       |
   57|     24|    if (ossl_unlikely(!ossl_size_mul(num, size, &bytes, file, line)))
  ------------------
  |  |   23|     24|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 24]
  |  |  ------------------
  ------------------
   58|      0|        return NULL;
   59|       |
   60|     24|    return CRYPTO_realloc(addr, bytes, file, line);
   61|     24|}

ASN1_OBJECT_free:
  360|    150|{
  361|    150|    if (a == NULL)
  ------------------
  |  Branch (361:9): [True: 0, False: 150]
  ------------------
  362|      0|        return;
  363|    150|    if (a->flags & ASN1_OBJECT_FLAG_DYNAMIC_STRINGS) {
  ------------------
  |  |  151|    150|#define ASN1_OBJECT_FLAG_DYNAMIC_STRINGS 0x04 /* internal use */
  ------------------
  |  Branch (363:9): [True: 0, False: 150]
  ------------------
  364|      0|#ifndef CONST_STRICT
  365|       |        /*
  366|       |         * Disable purely for compile-time strict const checking.  Doing this
  367|       |         * on a "real" compile will cause memory leaks
  368|       |         */
  369|      0|        OPENSSL_free((void *)a->sn);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  370|      0|        OPENSSL_free((void *)a->ln);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  371|      0|#endif
  372|      0|        a->sn = a->ln = NULL;
  373|      0|    }
  374|    150|    if (a->flags & ASN1_OBJECT_FLAG_DYNAMIC_DATA) {
  ------------------
  |  |  152|    150|#define ASN1_OBJECT_FLAG_DYNAMIC_DATA 0x08 /* internal use */
  ------------------
  |  Branch (374:9): [True: 0, False: 150]
  ------------------
  375|      0|        OPENSSL_free((void *)a->data);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  376|      0|        a->data = NULL;
  377|      0|        a->length = 0;
  378|      0|    }
  379|    150|    if (a->flags & ASN1_OBJECT_FLAG_DYNAMIC)
  ------------------
  |  |  149|    150|#define ASN1_OBJECT_FLAG_DYNAMIC 0x01 /* internal use */
  ------------------
  |  Branch (379:9): [True: 0, False: 150]
  ------------------
  380|      0|        OPENSSL_free(a);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  381|    150|}

evp_pkey_asn1_get_count:
   34|      1|{
   35|      1|    int num = OSSL_NELEM(standard_methods);
  ------------------
  |  |   14|      1|#define OSSL_NELEM(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
   36|      1|    return num;
   37|      1|}
evp_pkey_asn1_get0:
   40|     15|{
   41|     15|    int num = OSSL_NELEM(standard_methods);
  ------------------
  |  |   14|     15|#define OSSL_NELEM(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
   42|       |
   43|     15|    if (idx < 0 || idx >= num)
  ------------------
  |  Branch (43:9): [True: 0, False: 15]
  |  Branch (43:20): [True: 0, False: 15]
  ------------------
   44|      0|        return NULL;
   45|       |
   46|     15|    return standard_methods[idx];
   47|     15|}
evp_pkey_asn1_get0_info:
  101|     15|{
  102|     15|    if (!ameth)
  ------------------
  |  Branch (102:9): [True: 0, False: 15]
  ------------------
  103|      0|        return 0;
  104|     15|    if (ppkey_id)
  ------------------
  |  Branch (104:9): [True: 15, False: 0]
  ------------------
  105|     15|        *ppkey_id = ameth->pkey_id;
  106|     15|    if (ppkey_base_id)
  ------------------
  |  Branch (106:9): [True: 15, False: 0]
  ------------------
  107|     15|        *ppkey_base_id = ameth->pkey_base_id;
  108|     15|    if (ppkey_flags)
  ------------------
  |  Branch (108:9): [True: 15, False: 0]
  ------------------
  109|     15|        *ppkey_flags = ameth->pkey_flags;
  110|     15|    if (pinfo)
  ------------------
  |  Branch (110:9): [True: 0, False: 15]
  ------------------
  111|      0|        *pinfo = ameth->info;
  112|     15|    if (ppem_str)
  ------------------
  |  Branch (112:9): [True: 15, False: 0]
  ------------------
  113|     15|        *ppem_str = ameth->pem_str;
  114|     15|    return 1;
  115|     15|}

ossl_err_load_ASN1_strings:
  210|      1|{
  211|      1|#ifndef OPENSSL_NO_ERR
  212|      1|    if (ERR_reason_error_string(ASN1_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (212:9): [True: 1, False: 0]
  ------------------
  213|      1|        ERR_load_strings_const(ASN1_str_reasons);
  214|      1|#endif
  215|      1|    return 1;
  216|      1|}

ossl_err_load_ASYNC_strings:
   31|      1|{
   32|      1|#ifndef OPENSSL_NO_ERR
   33|      1|    if (ERR_reason_error_string(ASYNC_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (33:9): [True: 1, False: 0]
  ------------------
   34|      1|        ERR_load_strings_const(ASYNC_str_reasons);
   35|      1|#endif
   36|      1|    return 1;
   37|      1|}

ossl_err_load_BIO_strings:
   93|      1|{
   94|      1|#ifndef OPENSSL_NO_ERR
   95|      1|    if (ERR_reason_error_string(BIO_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (95:9): [True: 1, False: 0]
  ------------------
   96|      1|        ERR_load_strings_const(BIO_str_reasons);
   97|      1|#endif
   98|      1|    return 1;
   99|      1|}

BIO_meth_new:
   38|      1|{
   39|      1|    BIO_METHOD *biom = OPENSSL_zalloc(sizeof(BIO_METHOD));
  ------------------
  |  |  113|      1|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   40|       |
   41|      1|    if (biom == NULL
  ------------------
  |  Branch (41:9): [True: 0, False: 1]
  ------------------
   42|      1|        || (biom->name = OPENSSL_strdup(name)) == NULL) {
  ------------------
  |  |  140|      1|    CRYPTO_strdup(str, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_strdup(str, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  |  Branch (42:12): [True: 0, False: 1]
  ------------------
   43|      0|        OPENSSL_free(biom);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   44|      0|        return NULL;
   45|      0|    }
   46|      1|    biom->type = type;
   47|      1|    return biom;
   48|      1|}
BIO_meth_set_write_ex:
  101|      1|{
  102|       |    biom->bwrite_old = NULL;
  103|      1|    biom->bwrite = bwrite;
  104|      1|    return 1;
  105|      1|}
BIO_meth_set_read_ex:
  162|      1|{
  163|       |    biom->bread_old = NULL;
  164|      1|    biom->bread = bread;
  165|      1|    return 1;
  166|      1|}
BIO_meth_set_puts:
  177|      1|{
  178|      1|    biom->bputs = bputs;
  179|      1|    return 1;
  180|      1|}
BIO_meth_set_gets:
  191|      1|{
  192|      1|    biom->bgets = bgets;
  193|      1|    return 1;
  194|      1|}
BIO_meth_set_ctrl:
  205|      1|{
  206|      1|    biom->ctrl = ctrl;
  207|      1|    return 1;
  208|      1|}
BIO_meth_set_create:
  218|      1|{
  219|      1|    biom->create = create;
  220|      1|    return 1;
  221|      1|}
BIO_meth_set_destroy:
  231|      1|{
  232|      1|    biom->destroy = destroy;
  233|      1|    return 1;
  234|      1|}

BIO_snprintf:
  142|  1.35k|{
  143|  1.35k|    va_list args;
  144|  1.35k|    int ret;
  145|       |
  146|  1.35k|    va_start(args, format);
  147|       |
  148|       |#if defined(_MSC_VER) && _MSC_VER < 1900
  149|       |    ret = _vsnprintf_s(buf, n, _TRUNCATE, format, args);
  150|       |#else
  151|  1.35k|    ret = vsnprintf(buf, n, format, args);
  152|  1.35k|    if ((size_t)ret >= n)
  ------------------
  |  Branch (152:9): [True: 0, False: 1.35k]
  ------------------
  153|      0|        ret = -1;
  154|  1.35k|#endif
  155|  1.35k|    va_end(args);
  156|       |
  157|  1.35k|    return ret;
  158|  1.35k|}
BIO_vsnprintf:
  161|    672|{
  162|    672|    int ret;
  163|       |
  164|       |#if defined(_MSC_VER) && _MSC_VER < 1900
  165|       |    ret = _vsnprintf_s(buf, n, _TRUNCATE, format, args);
  166|       |#else
  167|    672|    ret = vsnprintf(buf, n, format, args);
  168|    672|    if ((size_t)ret >= n)
  ------------------
  |  Branch (168:9): [True: 0, False: 672]
  ------------------
  169|      0|        ret = -1;
  170|    672|#endif
  171|    672|    return ret;
  172|    672|}

ossl_bio_core_globals_new:
   31|      3|{
   32|      3|    return OPENSSL_zalloc(sizeof(BIO_CORE_GLOBALS));
  ------------------
  |  |  113|      3|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   33|      3|}
ossl_bio_init_core:
  148|      1|{
  149|      1|    BIO_CORE_GLOBALS *bcgbl = get_globals(libctx);
  150|       |
  151|      1|    if (bcgbl == NULL)
  ------------------
  |  Branch (151:9): [True: 0, False: 1]
  ------------------
  152|      0|        return 0;
  153|       |
  154|     54|    for (; fns->function_id != 0; fns++) {
  ------------------
  |  Branch (154:12): [True: 53, False: 1]
  ------------------
  155|     53|        switch (fns->function_id) {
  ------------------
  |  Branch (155:17): [True: 7, False: 46]
  ------------------
  156|      1|        case OSSL_FUNC_BIO_READ_EX:
  ------------------
  |  |  153|      1|#define OSSL_FUNC_BIO_READ_EX 42
  ------------------
  |  Branch (156:9): [True: 1, False: 52]
  ------------------
  157|      1|            if (bcgbl->c_bio_read_ex == NULL)
  ------------------
  |  Branch (157:17): [True: 1, False: 0]
  ------------------
  158|      1|                bcgbl->c_bio_read_ex = OSSL_FUNC_BIO_read_ex(fns);
  159|      1|            break;
  160|      1|        case OSSL_FUNC_BIO_WRITE_EX:
  ------------------
  |  |  154|      1|#define OSSL_FUNC_BIO_WRITE_EX 43
  ------------------
  |  Branch (160:9): [True: 1, False: 52]
  ------------------
  161|      1|            if (bcgbl->c_bio_write_ex == NULL)
  ------------------
  |  Branch (161:17): [True: 1, False: 0]
  ------------------
  162|      1|                bcgbl->c_bio_write_ex = OSSL_FUNC_BIO_write_ex(fns);
  163|      1|            break;
  164|      1|        case OSSL_FUNC_BIO_GETS:
  ------------------
  |  |  160|      1|#define OSSL_FUNC_BIO_GETS 49
  ------------------
  |  Branch (164:9): [True: 1, False: 52]
  ------------------
  165|      1|            if (bcgbl->c_bio_gets == NULL)
  ------------------
  |  Branch (165:17): [True: 1, False: 0]
  ------------------
  166|      1|                bcgbl->c_bio_gets = OSSL_FUNC_BIO_gets(fns);
  167|      1|            break;
  168|      1|        case OSSL_FUNC_BIO_PUTS:
  ------------------
  |  |  159|      1|#define OSSL_FUNC_BIO_PUTS 48
  ------------------
  |  Branch (168:9): [True: 1, False: 52]
  ------------------
  169|      1|            if (bcgbl->c_bio_puts == NULL)
  ------------------
  |  Branch (169:17): [True: 1, False: 0]
  ------------------
  170|      1|                bcgbl->c_bio_puts = OSSL_FUNC_BIO_puts(fns);
  171|      1|            break;
  172|      1|        case OSSL_FUNC_BIO_CTRL:
  ------------------
  |  |  161|      1|#define OSSL_FUNC_BIO_CTRL 50
  ------------------
  |  Branch (172:9): [True: 1, False: 52]
  ------------------
  173|      1|            if (bcgbl->c_bio_ctrl == NULL)
  ------------------
  |  Branch (173:17): [True: 1, False: 0]
  ------------------
  174|      1|                bcgbl->c_bio_ctrl = OSSL_FUNC_BIO_ctrl(fns);
  175|      1|            break;
  176|      1|        case OSSL_FUNC_BIO_UP_REF:
  ------------------
  |  |  155|      1|#define OSSL_FUNC_BIO_UP_REF 44
  ------------------
  |  Branch (176:9): [True: 1, False: 52]
  ------------------
  177|      1|            if (bcgbl->c_bio_up_ref == NULL)
  ------------------
  |  Branch (177:17): [True: 1, False: 0]
  ------------------
  178|      1|                bcgbl->c_bio_up_ref = OSSL_FUNC_BIO_up_ref(fns);
  179|      1|            break;
  180|      1|        case OSSL_FUNC_BIO_FREE:
  ------------------
  |  |  156|      1|#define OSSL_FUNC_BIO_FREE 45
  ------------------
  |  Branch (180:9): [True: 1, False: 52]
  ------------------
  181|      1|            if (bcgbl->c_bio_free == NULL)
  ------------------
  |  Branch (181:17): [True: 1, False: 0]
  ------------------
  182|      1|                bcgbl->c_bio_free = OSSL_FUNC_BIO_free(fns);
  183|      1|            break;
  184|     53|        }
  185|     53|    }
  186|       |
  187|      1|    return 1;
  188|      1|}
bss_core.c:get_globals:
   36|      1|{
   37|      1|    return ossl_lib_ctx_get_data(libctx, OSSL_LIB_CTX_BIO_CORE_INDEX);
  ------------------
  |  |  114|      1|#define OSSL_LIB_CTX_BIO_CORE_INDEX 17
  ------------------
   38|      1|}

ossl_err_load_BN_strings:
   50|      1|{
   51|      1|#ifndef OPENSSL_NO_ERR
   52|      1|    if (ERR_reason_error_string(BN_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (52:9): [True: 1, False: 0]
  ------------------
   53|      1|        ERR_load_strings_const(BN_str_reasons);
   54|      1|#endif
   55|      1|    return 1;
   56|      1|}

BN_free:
  213|    204|{
  214|    204|    if (a == NULL)
  ------------------
  |  Branch (214:9): [True: 204, False: 0]
  ------------------
  215|    204|        return;
  216|      0|    if (!BN_get_flags(a, BN_FLG_STATIC_DATA))
  ------------------
  |  |   59|      0|#define BN_FLG_STATIC_DATA 0x02
  ------------------
  |  Branch (216:9): [True: 0, False: 0]
  ------------------
  217|      0|        bn_free_d(a, 0);
  218|      0|    if (a->flags & BN_FLG_MALLOCED)
  ------------------
  |  |   58|      0|#define BN_FLG_MALLOCED 0x01
  ------------------
  |  Branch (218:9): [True: 0, False: 0]
  ------------------
  219|      0|        OPENSSL_free(a);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  220|      0|}

ossl_bsearch:
   18|      4|{
   19|      4|    const char *base_ = base;
   20|      4|    int l, h, i = 0, c = 0;
   21|      4|    const char *p = NULL;
   22|       |
   23|      4|    if (num == 0)
  ------------------
  |  Branch (23:9): [True: 0, False: 4]
  ------------------
   24|      0|        return NULL;
   25|      4|    l = 0;
   26|      4|    h = num;
   27|      8|    while (l < h) {
  ------------------
  |  Branch (27:12): [True: 4, False: 4]
  ------------------
   28|      4|        i = l + (h - l) / 2;
   29|      4|        p = &(base_[i * size]);
   30|      4|        if (cmp_thunk != NULL)
  ------------------
  |  Branch (30:13): [True: 4, False: 0]
  ------------------
   31|      4|            c = cmp_thunk((cmpthunk_fn)cmp, key, (const void *)p);
   32|      0|        else
   33|      0|            c = cmp(key, p);
   34|      4|        if (c < 0)
  ------------------
  |  Branch (34:13): [True: 0, False: 4]
  ------------------
   35|      0|            h = i;
   36|      4|        else if (c > 0)
  ------------------
  |  Branch (36:18): [True: 4, False: 0]
  ------------------
   37|      4|            l = i + 1;
   38|      0|        else
   39|      0|            break;
   40|      4|    }
   41|      4|    if (c != 0 && !(flags & OSSL_BSEARCH_VALUE_ON_NOMATCH))
  ------------------
  |  |  149|      4|#define OSSL_BSEARCH_VALUE_ON_NOMATCH 0x01
  ------------------
  |  Branch (41:9): [True: 4, False: 0]
  |  Branch (41:19): [True: 4, False: 0]
  ------------------
   42|      4|        p = NULL;
   43|      0|    else if (c == 0 && (flags & OSSL_BSEARCH_FIRST_VALUE_ON_MATCH)) {
  ------------------
  |  |  150|      0|#define OSSL_BSEARCH_FIRST_VALUE_ON_MATCH 0x02
  ------------------
  |  Branch (43:14): [True: 0, False: 0]
  |  Branch (43:24): [True: 0, False: 0]
  ------------------
   44|      0|        while (i > 0) {
  ------------------
  |  Branch (44:16): [True: 0, False: 0]
  ------------------
   45|      0|            if (cmp_thunk != NULL) {
  ------------------
  |  Branch (45:17): [True: 0, False: 0]
  ------------------
   46|      0|                if (cmp_thunk((cmpthunk_fn)cmp, key, (const void *)&(base_[(i - 1) * size])))
  ------------------
  |  Branch (46:21): [True: 0, False: 0]
  ------------------
   47|      0|                    break;
   48|      0|            } else {
   49|      0|                if (cmp(key, &(base_[(i - 1) * size])))
  ------------------
  |  Branch (49:21): [True: 0, False: 0]
  ------------------
   50|      0|                    break;
   51|      0|            }
   52|      0|            i--;
   53|      0|        }
   54|      0|        p = &(base_[i * size]);
   55|      0|    }
   56|      4|    return p;
   57|      4|}

ossl_err_load_BUF_strings:
   24|      1|{
   25|      1|#ifndef OPENSSL_NO_ERR
   26|      1|    if (ERR_reason_error_string(BUF_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (26:9): [True: 1, False: 0]
  ------------------
   27|      1|        ERR_load_strings_const(BUF_str_reasons);
   28|      1|#endif
   29|      1|    return 1;
   30|      1|}

ossl_err_load_CMP_strings:
  199|      1|{
  200|      1|#ifndef OPENSSL_NO_ERR
  201|      1|    if (ERR_reason_error_string(CMP_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (201:9): [True: 1, False: 0]
  ------------------
  202|      1|        ERR_load_strings_const(CMP_str_reasons);
  203|      1|#endif
  204|      1|    return 1;
  205|      1|}

ossl_err_load_CMS_strings:
  182|      1|{
  183|      1|#ifndef OPENSSL_NO_ERR
  184|      1|    if (ERR_reason_error_string(CMS_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (184:9): [True: 1, False: 0]
  ------------------
  185|      1|        ERR_load_strings_const(CMS_str_reasons);
  186|      1|#endif
  187|      1|    return 1;
  188|      1|}

COMP_zlib:
  307|      3|{
  308|      3|    COMP_METHOD *meth = NULL;
  309|       |
  310|       |#ifndef OPENSSL_NO_ZLIB
  311|       |    if (RUN_ONCE(&zlib_once, ossl_comp_zlib_init))
  312|       |        meth = &zlib_stateful_method;
  313|       |#endif
  314|       |
  315|      3|    return meth;
  316|      3|}

ossl_err_load_COMP_strings:
   45|      1|{
   46|      1|#ifndef OPENSSL_NO_ERR
   47|      1|    if (ERR_reason_error_string(COMP_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (47:9): [True: 1, False: 0]
  ------------------
   48|      1|        ERR_load_strings_const(COMP_str_reasons);
   49|      1|#endif
   50|      1|    return 1;
   51|      1|}

COMP_get_type:
   41|      3|{
   42|      3|    if (meth == NULL)
  ------------------
  |  Branch (42:9): [True: 3, False: 0]
  ------------------
   43|      3|        return NID_undef;
  ------------------
  |  |   19|      3|#define NID_undef                       0
  ------------------
   44|      0|    return meth->type;
   45|      3|}

ossl_load_builtin_compressions:
   29|      3|{
   30|      3|    STACK_OF(SSL_COMP) *comp_methods = NULL;
  ------------------
  |  |   33|      3|#define STACK_OF(type) struct stack_st_##type
  ------------------
   31|      3|#ifndef OPENSSL_NO_COMP
   32|      3|    SSL_COMP *comp = NULL;
   33|      3|    COMP_METHOD *method = COMP_zlib();
   34|       |
   35|      3|    comp_methods = sk_SSL_COMP_new(sk_comp_cmp);
  ------------------
  |  |   73|      3|    ((STACK_OF(SSL_COMP) *)OPENSSL_sk_set_thunks( \
  |  |   74|      3|        OPENSSL_sk_set_copy_thunks( \
  |  |   75|      3|            OPENSSL_sk_set_cmp_thunks( \
  |  |   76|      3|                OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp)), \
  |  |   77|      3|                sk_SSL_COMP_cmpfunc_thunk), \
  |  |   78|      3|            sk_SSL_COMP_copyfunc_thunk), \
  |  |   79|      3|        sk_SSL_COMP_freefunc_thunk))
  ------------------
   36|       |
   37|      3|    if (COMP_get_type(method) != NID_undef && comp_methods != NULL) {
  ------------------
  |  |   19|      6|#define NID_undef                       0
  ------------------
  |  Branch (37:9): [True: 0, False: 3]
  |  Branch (37:47): [True: 0, False: 0]
  ------------------
   38|      0|        comp = OPENSSL_malloc(sizeof(*comp));
  ------------------
  |  |  111|      0|    CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   39|      0|        if (comp != NULL) {
  ------------------
  |  Branch (39:13): [True: 0, False: 0]
  ------------------
   40|      0|            comp->method = method;
   41|      0|            comp->id = SSL_COMP_ZLIB_IDX;
  ------------------
  |  |   18|      0|#define SSL_COMP_ZLIB_IDX 1
  ------------------
   42|      0|            comp->name = COMP_get_name(method);
   43|      0|            if (!sk_SSL_COMP_push(comp_methods, comp))
  ------------------
  |  |  101|      0|#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))
  ------------------
  |  Branch (43:17): [True: 0, False: 0]
  ------------------
   44|      0|                OPENSSL_free(comp);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   45|      0|        }
   46|      0|    }
   47|      3|#endif
   48|      3|    return comp_methods;
   49|      3|}

ossl_err_load_CONF_strings:
   68|      1|{
   69|      1|#ifndef OPENSSL_NO_ERR
   70|      1|    if (ERR_reason_error_string(CONF_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (70:9): [True: 1, False: 0]
  ------------------
   71|      1|        ERR_load_strings_const(CONF_str_reasons);
   72|      1|#endif
   73|      1|    return 1;
   74|      1|}

ossl_lib_ctx_write_lock:
   59|      2|{
   60|      2|    if ((ctx = ossl_lib_ctx_get_concrete(ctx)) == NULL)
  ------------------
  |  Branch (60:9): [True: 0, False: 2]
  ------------------
   61|      0|        return 0;
   62|      2|    return CRYPTO_THREAD_write_lock(ctx->lock);
   63|      2|}
ossl_lib_ctx_read_lock:
   66|     34|{
   67|     34|    if ((ctx = ossl_lib_ctx_get_concrete(ctx)) == NULL)
  ------------------
  |  Branch (67:9): [True: 0, False: 34]
  ------------------
   68|      0|        return 0;
   69|     34|    return CRYPTO_THREAD_read_lock(ctx->lock);
   70|     34|}
ossl_lib_ctx_unlock:
   73|     36|{
   74|     36|    if ((ctx = ossl_lib_ctx_get_concrete(ctx)) == NULL)
  ------------------
  |  Branch (74:9): [True: 0, False: 36]
  ------------------
   75|      0|        return 0;
   76|     36|    return CRYPTO_THREAD_unlock(ctx->lock);
   77|     36|}
OSSL_LIB_CTX_new:
  485|      2|{
  486|      2|    OSSL_LIB_CTX *ctx = OPENSSL_zalloc(sizeof(*ctx));
  ------------------
  |  |  113|      2|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  487|       |
  488|      2|    if (ctx != NULL && !context_init(ctx)) {
  ------------------
  |  Branch (488:9): [True: 2, False: 0]
  |  Branch (488:24): [True: 0, False: 2]
  ------------------
  489|      0|        OPENSSL_free(ctx);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  490|       |        ctx = NULL;
  491|      0|    }
  492|      2|    return ctx;
  493|      2|}
OSSL_LIB_CTX_new_from_dispatch:
  498|      1|{
  499|      1|    OSSL_LIB_CTX *ctx = OSSL_LIB_CTX_new();
  500|       |
  501|      1|    if (ctx == NULL)
  ------------------
  |  Branch (501:9): [True: 0, False: 1]
  ------------------
  502|      0|        return NULL;
  503|       |
  504|      1|    if (!ossl_bio_init_core(ctx, in)) {
  ------------------
  |  Branch (504:9): [True: 0, False: 1]
  ------------------
  505|      0|        OSSL_LIB_CTX_free(ctx);
  506|      0|        return NULL;
  507|      0|    }
  508|       |
  509|      1|    return ctx;
  510|      1|}
OSSL_LIB_CTX_new_child:
  514|      1|{
  515|      1|    OSSL_LIB_CTX *ctx = OSSL_LIB_CTX_new_from_dispatch(handle, in);
  516|       |
  517|      1|    if (ctx == NULL)
  ------------------
  |  Branch (517:9): [True: 0, False: 1]
  ------------------
  518|      0|        return NULL;
  519|       |
  520|      1|    if (!ossl_provider_init_as_child(ctx, handle, in)) {
  ------------------
  |  Branch (520:9): [True: 0, False: 1]
  ------------------
  521|      0|        OSSL_LIB_CTX_free(ctx);
  522|      0|        return NULL;
  523|      0|    }
  524|      1|    ctx->ischild = 1;
  525|       |
  526|      1|    return ctx;
  527|      1|}
ossl_lib_ctx_get_concrete:
  584|  1.59M|{
  585|  1.59M|#ifndef FIPS_MODULE
  586|  1.59M|    if (ctx == NULL)
  ------------------
  |  Branch (586:9): [True: 0, False: 1.59M]
  ------------------
  587|      0|        return get_default_context();
  588|  1.59M|#endif
  589|  1.59M|    return ctx;
  590|  1.59M|}
ossl_lib_ctx_is_default:
  593|  1.22k|{
  594|  1.22k|#ifndef FIPS_MODULE
  595|  1.22k|    if (ctx == NULL || ctx == get_default_context())
  ------------------
  |  Branch (595:9): [True: 0, False: 1.22k]
  |  Branch (595:24): [True: 0, False: 1.22k]
  ------------------
  596|      0|        return 1;
  597|  1.22k|#endif
  598|  1.22k|    return 0;
  599|  1.22k|}
ossl_lib_ctx_is_global_default:
  611|    486|{
  612|    486|#ifndef FIPS_MODULE
  613|    486|    if (ossl_lib_ctx_get_concrete(ctx) == &default_context_int)
  ------------------
  |  Branch (613:9): [True: 0, False: 486]
  ------------------
  614|      0|        return 1;
  615|    486|#endif
  616|    486|    return 0;
  617|    486|}
ossl_lib_ctx_get_data:
  620|  1.58M|{
  621|  1.58M|    ctx = ossl_lib_ctx_get_concrete(ctx);
  622|  1.58M|    if (ctx == NULL)
  ------------------
  |  Branch (622:9): [True: 0, False: 1.58M]
  ------------------
  623|      0|        return NULL;
  624|       |
  625|  1.58M|    switch (index) {
  626|     28|    case OSSL_LIB_CTX_PROPERTY_STRING_INDEX:
  ------------------
  |  |   98|     28|#define OSSL_LIB_CTX_PROPERTY_STRING_INDEX 3
  ------------------
  |  Branch (626:5): [True: 28, False: 1.58M]
  ------------------
  627|     28|        return ctx->property_string_data;
  628|   795k|    case OSSL_LIB_CTX_EVP_METHOD_STORE_INDEX:
  ------------------
  |  |   95|   795k|#define OSSL_LIB_CTX_EVP_METHOD_STORE_INDEX 0
  ------------------
  |  Branch (628:5): [True: 795k, False: 794k]
  ------------------
  629|   795k|        return ctx->evp_method_store;
  630|    529|    case OSSL_LIB_CTX_PROVIDER_STORE_INDEX:
  ------------------
  |  |   96|    529|#define OSSL_LIB_CTX_PROVIDER_STORE_INDEX 1
  ------------------
  |  Branch (630:5): [True: 529, False: 1.58M]
  ------------------
  631|    529|        return ctx->provider_store;
  632|   793k|    case OSSL_LIB_CTX_NAMEMAP_INDEX:
  ------------------
  |  |   99|   793k|#define OSSL_LIB_CTX_NAMEMAP_INDEX 4
  ------------------
  |  Branch (632:5): [True: 793k, False: 796k]
  ------------------
  633|   793k|        return ctx->namemap;
  634|     36|    case OSSL_LIB_CTX_PROPERTY_DEFN_INDEX:
  ------------------
  |  |   97|     36|#define OSSL_LIB_CTX_PROPERTY_DEFN_INDEX 2
  ------------------
  |  Branch (634:5): [True: 36, False: 1.58M]
  ------------------
  635|     36|        return ctx->property_defns;
  636|    214|    case OSSL_LIB_CTX_GLOBAL_PROPERTIES:
  ------------------
  |  |  111|    214|#define OSSL_LIB_CTX_GLOBAL_PROPERTIES 14
  ------------------
  |  Branch (636:5): [True: 214, False: 1.58M]
  ------------------
  637|    214|        return ctx->global_properties;
  638|      0|    case OSSL_LIB_CTX_DRBG_INDEX:
  ------------------
  |  |  100|      0|#define OSSL_LIB_CTX_DRBG_INDEX 5
  ------------------
  |  Branch (638:5): [True: 0, False: 1.58M]
  ------------------
  639|      0|        return ctx->drbg;
  640|      0|    case OSSL_LIB_CTX_DRBG_NONCE_INDEX:
  ------------------
  |  |  101|      0|#define OSSL_LIB_CTX_DRBG_NONCE_INDEX 6
  ------------------
  |  Branch (640:5): [True: 0, False: 1.58M]
  ------------------
  641|      0|        return ctx->drbg_nonce;
  642|      0|#ifndef FIPS_MODULE
  643|      0|    case OSSL_LIB_CTX_PROVIDER_CONF_INDEX:
  ------------------
  |  |  113|      0|#define OSSL_LIB_CTX_PROVIDER_CONF_INDEX 16
  ------------------
  |  Branch (643:5): [True: 0, False: 1.58M]
  ------------------
  644|      0|        return ctx->provider_conf;
  645|      1|    case OSSL_LIB_CTX_BIO_CORE_INDEX:
  ------------------
  |  |  114|      1|#define OSSL_LIB_CTX_BIO_CORE_INDEX 17
  ------------------
  |  Branch (645:5): [True: 1, False: 1.58M]
  ------------------
  646|      1|        return ctx->bio_core;
  647|      5|    case OSSL_LIB_CTX_CHILD_PROVIDER_INDEX:
  ------------------
  |  |  115|      5|#define OSSL_LIB_CTX_CHILD_PROVIDER_INDEX 18
  ------------------
  |  Branch (647:5): [True: 5, False: 1.58M]
  ------------------
  648|      5|        return ctx->child_provider;
  649|      4|    case OSSL_LIB_CTX_DECODER_STORE_INDEX:
  ------------------
  |  |  108|      4|#define OSSL_LIB_CTX_DECODER_STORE_INDEX 11
  ------------------
  |  Branch (649:5): [True: 4, False: 1.58M]
  ------------------
  650|      4|        return ctx->decoder_store;
  651|      5|    case OSSL_LIB_CTX_DECODER_CACHE_INDEX:
  ------------------
  |  |  117|      5|#define OSSL_LIB_CTX_DECODER_CACHE_INDEX 20
  ------------------
  |  Branch (651:5): [True: 5, False: 1.58M]
  ------------------
  652|      5|        return ctx->decoder_cache;
  653|      4|    case OSSL_LIB_CTX_ENCODER_STORE_INDEX:
  ------------------
  |  |  107|      4|#define OSSL_LIB_CTX_ENCODER_STORE_INDEX 10
  ------------------
  |  Branch (653:5): [True: 4, False: 1.58M]
  ------------------
  654|      4|        return ctx->encoder_store;
  655|      4|    case OSSL_LIB_CTX_STORE_LOADER_STORE_INDEX:
  ------------------
  |  |  112|      4|#define OSSL_LIB_CTX_STORE_LOADER_STORE_INDEX 15
  ------------------
  |  Branch (655:5): [True: 4, False: 1.58M]
  ------------------
  656|      4|        return ctx->store_loader_store;
  657|      0|    case OSSL_LIB_CTX_SELF_TEST_CB_INDEX:
  ------------------
  |  |  109|      0|#define OSSL_LIB_CTX_SELF_TEST_CB_INDEX 12
  ------------------
  |  Branch (657:5): [True: 0, False: 1.58M]
  ------------------
  658|      0|        return ctx->self_test_cb;
  659|      0|    case OSSL_LIB_CTX_INDICATOR_CB_INDEX:
  ------------------
  |  |  119|      0|#define OSSL_LIB_CTX_INDICATOR_CB_INDEX 22
  ------------------
  |  Branch (659:5): [True: 0, False: 1.58M]
  ------------------
  660|      0|        return ctx->indicator_cb;
  661|      0|#endif
  662|      0|#ifndef OPENSSL_NO_THREAD_POOL
  663|      2|    case OSSL_LIB_CTX_THREAD_INDEX:
  ------------------
  |  |  116|      2|#define OSSL_LIB_CTX_THREAD_INDEX 19
  ------------------
  |  Branch (663:5): [True: 2, False: 1.58M]
  ------------------
  664|      2|        return ctx->threads;
  665|      0|#endif
  666|       |
  667|       |#ifdef FIPS_MODULE
  668|       |    case OSSL_LIB_CTX_FIPS_PROV_INDEX:
  669|       |        return ctx->fips_prov;
  670|       |#endif
  671|       |
  672|      0|    case OSSL_LIB_CTX_COMP_METHODS:
  ------------------
  |  |  118|      0|#define OSSL_LIB_CTX_COMP_METHODS 21
  ------------------
  |  Branch (672:5): [True: 0, False: 1.58M]
  ------------------
  673|      0|        return (void *)&ctx->comp_methods;
  674|       |
  675|      0|    case OSSL_LIB_CTX_SSL_CONF_IMODULE:
  ------------------
  |  |  120|      0|#define OSSL_LIB_CTX_SSL_CONF_IMODULE 23
  ------------------
  |  Branch (675:5): [True: 0, False: 1.58M]
  ------------------
  676|      0|        return (void *)ctx->ssl_imod;
  677|       |
  678|      0|    default:
  ------------------
  |  Branch (678:5): [True: 0, False: 1.58M]
  ------------------
  679|       |        return NULL;
  680|  1.58M|    }
  681|  1.58M|}
ossl_lib_ctx_get_ex_data_global:
  689|      3|{
  690|      3|    ctx = ossl_lib_ctx_get_concrete(ctx);
  691|      3|    if (ctx == NULL)
  ------------------
  |  Branch (691:9): [True: 0, False: 3]
  ------------------
  692|      0|        return NULL;
  693|      3|    return &ctx->global;
  694|      3|}
ossl_lib_ctx_get_descriptor:
  697|    486|{
  698|       |#ifdef FIPS_MODULE
  699|       |    return "FIPS internal library context";
  700|       |#else
  701|    486|    if (ossl_lib_ctx_is_global_default(libctx))
  ------------------
  |  Branch (701:9): [True: 0, False: 486]
  ------------------
  702|      0|        return "Global default library context";
  703|    486|    if (ossl_lib_ctx_is_default(libctx))
  ------------------
  |  Branch (703:9): [True: 0, False: 486]
  ------------------
  704|      0|        return "Thread-local default library context";
  705|    486|    return "Non-default library context";
  706|    486|#endif
  707|    486|}
context.c:context_init:
  119|      3|{
  120|      3|    int exdata_done = 0;
  121|       |
  122|      3|    ctx->lock = CRYPTO_THREAD_lock_new();
  123|      3|    if (ctx->lock == NULL)
  ------------------
  |  Branch (123:9): [True: 0, False: 3]
  ------------------
  124|      0|        goto err;
  125|       |
  126|       |    /* Initialize ex_data. */
  127|      3|    if (!ossl_do_ex_data_init(ctx))
  ------------------
  |  Branch (127:9): [True: 0, False: 3]
  ------------------
  128|      0|        goto err;
  129|      3|    exdata_done = 1;
  130|       |
  131|       |    /* P2. We want evp_method_store to be cleaned up before the provider store */
  132|      3|    ctx->evp_method_store = ossl_method_store_new(ctx);
  133|      3|    if (ctx->evp_method_store == NULL)
  ------------------
  |  Branch (133:9): [True: 0, False: 3]
  ------------------
  134|      0|        goto err;
  135|      3|    OSSL_TRACE1(QUERY, "context_init: allocating store %p\n", ctx->evp_method_store);
  ------------------
  |  |  291|      3|    OSSL_TRACEV(category, (trc_out, format, arg1))
  |  |  ------------------
  |  |  |  |  283|      3|#define OSSL_TRACEV(category, args) ((void)0)
  |  |  ------------------
  ------------------
  136|       |
  137|      3|#ifndef FIPS_MODULE
  138|       |    /* P2. Must be freed before the provider store is freed */
  139|      3|    ctx->provider_conf = ossl_prov_conf_ctx_new(ctx);
  140|      3|    if (ctx->provider_conf == NULL)
  ------------------
  |  Branch (140:9): [True: 0, False: 3]
  ------------------
  141|      0|        goto err;
  142|      3|#endif
  143|       |
  144|       |    /* P2. */
  145|      3|    ctx->drbg = ossl_rand_ctx_new(ctx);
  146|      3|    if (ctx->drbg == NULL)
  ------------------
  |  Branch (146:9): [True: 0, False: 3]
  ------------------
  147|      0|        goto err;
  148|       |
  149|      3|#ifndef FIPS_MODULE
  150|       |    /*
  151|       |     * P2. We want decoder_store/decoder_cache to be cleaned up before the
  152|       |     * provider store
  153|       |     */
  154|      3|    ctx->decoder_store = ossl_method_store_new(ctx);
  155|      3|    if (ctx->decoder_store == NULL)
  ------------------
  |  Branch (155:9): [True: 0, False: 3]
  ------------------
  156|      0|        goto err;
  157|      3|    ctx->decoder_cache = ossl_decoder_cache_new(ctx);
  158|      3|    if (ctx->decoder_cache == NULL)
  ------------------
  |  Branch (158:9): [True: 0, False: 3]
  ------------------
  159|      0|        goto err;
  160|       |
  161|       |    /* P2. We want encoder_store to be cleaned up before the provider store */
  162|      3|    ctx->encoder_store = ossl_method_store_new(ctx);
  163|      3|    if (ctx->encoder_store == NULL)
  ------------------
  |  Branch (163:9): [True: 0, False: 3]
  ------------------
  164|      0|        goto err;
  165|       |
  166|       |    /* P2. We want loader_store to be cleaned up before the provider store */
  167|      3|    ctx->store_loader_store = ossl_method_store_new(ctx);
  168|      3|    if (ctx->store_loader_store == NULL)
  ------------------
  |  Branch (168:9): [True: 0, False: 3]
  ------------------
  169|      0|        goto err;
  170|      3|#endif
  171|       |
  172|       |    /* P1. Needs to be freed before the child provider data is freed */
  173|      3|    ctx->provider_store = ossl_provider_store_new(ctx);
  174|      3|    if (ctx->provider_store == NULL)
  ------------------
  |  Branch (174:9): [True: 0, False: 3]
  ------------------
  175|      0|        goto err;
  176|       |
  177|       |    /* Default priority. */
  178|      3|    ctx->property_string_data = ossl_property_string_data_new(ctx);
  179|      3|    if (ctx->property_string_data == NULL)
  ------------------
  |  Branch (179:9): [True: 0, False: 3]
  ------------------
  180|      0|        goto err;
  181|       |
  182|      3|    ctx->namemap = ossl_stored_namemap_new(ctx);
  183|      3|    if (ctx->namemap == NULL)
  ------------------
  |  Branch (183:9): [True: 0, False: 3]
  ------------------
  184|      0|        goto err;
  185|       |
  186|      3|    ctx->property_defns = ossl_property_defns_new(ctx);
  187|      3|    if (ctx->property_defns == NULL)
  ------------------
  |  Branch (187:9): [True: 0, False: 3]
  ------------------
  188|      0|        goto err;
  189|       |
  190|      3|    ctx->global_properties = ossl_ctx_global_properties_new(ctx);
  191|      3|    if (ctx->global_properties == NULL)
  ------------------
  |  Branch (191:9): [True: 0, False: 3]
  ------------------
  192|      0|        goto err;
  193|       |
  194|      3|#ifndef FIPS_MODULE
  195|      3|    ctx->bio_core = ossl_bio_core_globals_new(ctx);
  196|      3|    if (ctx->bio_core == NULL)
  ------------------
  |  Branch (196:9): [True: 0, False: 3]
  ------------------
  197|      0|        goto err;
  198|      3|#endif
  199|       |
  200|      3|    ctx->drbg_nonce = ossl_prov_drbg_nonce_ctx_new(ctx);
  201|      3|    if (ctx->drbg_nonce == NULL)
  ------------------
  |  Branch (201:9): [True: 0, False: 3]
  ------------------
  202|      0|        goto err;
  203|       |
  204|      3|#ifndef FIPS_MODULE
  205|      3|    ctx->self_test_cb = ossl_self_test_set_callback_new(ctx);
  206|      3|    if (ctx->self_test_cb == NULL)
  ------------------
  |  Branch (206:9): [True: 0, False: 3]
  ------------------
  207|      0|        goto err;
  208|      3|    ctx->indicator_cb = ossl_indicator_set_callback_new(ctx);
  209|      3|    if (ctx->indicator_cb == NULL)
  ------------------
  |  Branch (209:9): [True: 0, False: 3]
  ------------------
  210|      0|        goto err;
  211|      3|#endif
  212|       |
  213|       |#ifdef FIPS_MODULE
  214|       |    if (!ossl_thread_event_ctx_new(ctx))
  215|       |        goto err;
  216|       |
  217|       |    ctx->fips_prov = ossl_fips_prov_ossl_ctx_new(ctx);
  218|       |    if (ctx->fips_prov == NULL)
  219|       |        goto err;
  220|       |#endif
  221|       |
  222|      3|#ifndef OPENSSL_NO_THREAD_POOL
  223|      3|    ctx->threads = ossl_threads_ctx_new(ctx);
  224|      3|    if (ctx->threads == NULL)
  ------------------
  |  Branch (224:9): [True: 0, False: 3]
  ------------------
  225|      0|        goto err;
  226|      3|#endif
  227|       |
  228|       |    /* Low priority. */
  229|      3|#ifndef FIPS_MODULE
  230|      3|    ctx->child_provider = ossl_child_prov_ctx_new(ctx);
  231|      3|    if (ctx->child_provider == NULL)
  ------------------
  |  Branch (231:9): [True: 0, False: 3]
  ------------------
  232|      0|        goto err;
  233|      3|#endif
  234|       |
  235|       |    /* Everything depends on properties, so we also pre-initialise that */
  236|      3|    if (!ossl_property_parse_init(ctx))
  ------------------
  |  Branch (236:9): [True: 0, False: 3]
  ------------------
  237|      0|        goto err;
  238|       |
  239|      3|#ifndef FIPS_MODULE
  240|      3|    ctx->comp_methods = ossl_load_builtin_compressions();
  241|      3|#endif
  242|       |
  243|      3|    return 1;
  244|       |
  245|      0|err:
  246|      0|    context_deinit_objs(ctx);
  247|       |
  248|      0|    if (exdata_done)
  ------------------
  |  Branch (248:9): [True: 0, False: 0]
  ------------------
  249|      0|        ossl_crypto_cleanup_all_ex_data_int(ctx);
  250|       |
  251|      0|    CRYPTO_THREAD_lock_free(ctx->lock);
  252|      0|    memset(ctx, '\0', sizeof(*ctx));
  253|      0|    return 0;
  254|      3|}
context.c:default_context_do_thread_key_init:
  414|      1|{
  415|      1|    if (!CRYPTO_THREAD_init_local(&default_context_thread_local, NULL))
  ------------------
  |  Branch (415:9): [True: 0, False: 1]
  ------------------
  416|      0|        return 0;
  417|      1|    return 1;
  418|      1|}
context.c:default_context_do_init:
  421|      1|{
  422|      1|    if (!context_init(&default_context_int))
  ------------------
  |  Branch (422:9): [True: 0, False: 1]
  ------------------
  423|      0|        return 0;
  424|       |
  425|      1|    default_context_inited = 1;
  426|      1|    return 1;
  427|      1|}
context.c:get_default_context:
  458|  1.22k|{
  459|  1.22k|    OSSL_LIB_CTX *current_defctx = get_thread_default_context();
  460|       |
  461|  1.22k|    if (current_defctx == NULL && default_context_inited)
  ------------------
  |  Branch (461:9): [True: 1.22k, False: 0]
  |  Branch (461:35): [True: 1.22k, False: 0]
  ------------------
  462|  1.22k|        current_defctx = &default_context_int;
  463|  1.22k|    return current_defctx;
  464|  1.22k|}
context.c:get_thread_default_context:
  439|  1.22k|{
  440|  1.22k|    if (!RUN_ONCE(&default_context_thread_key_init, default_context_do_thread_key_init))
  ------------------
  |  |  130|  1.22k|    (CRYPTO_THREAD_run_once(once, init##_ossl_) ? init##_ossl_ret_ : 0)
  |  |  ------------------
  |  |  |  Branch (130:6): [True: 1.22k, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (440:9): [True: 0, False: 1.22k]
  ------------------
  441|      0|        return NULL;
  442|       |
  443|  1.22k|    if (!RUN_ONCE(&default_context_init, default_context_do_init))
  ------------------
  |  |  130|  1.22k|    (CRYPTO_THREAD_run_once(once, init##_ossl_) ? init##_ossl_ret_ : 0)
  |  |  ------------------
  |  |  |  Branch (130:6): [True: 1.22k, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (443:9): [True: 0, False: 1.22k]
  ------------------
  444|      0|        return NULL;
  445|       |
  446|  1.22k|    return CRYPTO_THREAD_get_local(&default_context_thread_local);
  447|  1.22k|}

ossl_algorithm_do_all:
  149|    511|{
  150|    511|    struct algorithm_data_st cbdata = {
  151|    511|        0,
  152|    511|    };
  153|       |
  154|    511|    cbdata.libctx = libctx;
  155|    511|    cbdata.operation_id = operation_id;
  156|    511|    cbdata.pre = pre;
  157|    511|    cbdata.reserve_store = reserve_store;
  158|    511|    cbdata.fn = fn;
  159|    511|    cbdata.unreserve_store = unreserve_store;
  160|    511|    cbdata.post = post;
  161|    511|    cbdata.data = data;
  162|       |
  163|    511|    if (provider == NULL) {
  ------------------
  |  Branch (163:9): [True: 511, False: 0]
  ------------------
  164|    511|        ossl_provider_doall_activated(libctx, algorithm_do_this, &cbdata);
  165|    511|    } else {
  166|      0|        OSSL_LIB_CTX *libctx2 = ossl_provider_libctx(provider);
  167|       |
  168|       |        /*
  169|       |         * If a provider is given, its library context MUST match the library
  170|       |         * context we're passed.  If this turns out not to be true, there is
  171|       |         * a programming error in the functions up the call stack.
  172|       |         */
  173|      0|        if (!ossl_assert(ossl_lib_ctx_get_concrete(libctx)
  ------------------
  |  |   44|      0|#define ossl_assert(x) ossl_likely((x) != 0)
  |  |  ------------------
  |  |  |  |   22|      0|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  ------------------
  |  Branch (173:13): [True: 0, False: 0]
  ------------------
  174|      0|                == ossl_lib_ctx_get_concrete(libctx2)))
  175|      0|            return;
  176|       |
  177|      0|        cbdata.libctx = libctx2;
  178|      0|        algorithm_do_this(provider, &cbdata);
  179|      0|    }
  180|    511|}
ossl_algorithm_get1_first_name:
  183|     34|{
  184|     34|    const char *first_name_end = NULL;
  185|     34|    size_t first_name_len = 0;
  186|     34|    char *ret;
  187|       |
  188|     34|    if (algo->algorithm_names == NULL)
  ------------------
  |  Branch (188:9): [True: 0, False: 34]
  ------------------
  189|      0|        return NULL;
  190|       |
  191|     34|    first_name_end = strchr(algo->algorithm_names, ':');
  192|     34|    if (first_name_end == NULL)
  ------------------
  |  Branch (192:9): [True: 7, False: 27]
  ------------------
  193|      7|        first_name_len = strlen(algo->algorithm_names);
  194|     27|    else
  195|     27|        first_name_len = first_name_end - algo->algorithm_names;
  196|       |
  197|     34|    ret = OPENSSL_strndup(algo->algorithm_names, first_name_len);
  ------------------
  |  |  142|     34|    CRYPTO_strndup(str, n, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_strndup(str, n, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  198|     34|    return ret;
  199|     34|}
core_algorithm.c:algorithm_do_this:
  103|  1.02k|{
  104|  1.02k|    struct algorithm_data_st *data = cbdata;
  105|  1.02k|    int first_operation = 1;
  106|  1.02k|    int last_operation = OSSL_OP__HIGHEST;
  ------------------
  |  |  299|  1.02k|#define OSSL_OP__HIGHEST 22
  ------------------
  107|  1.02k|    int cur_operation;
  108|  1.02k|    int ok = 1;
  109|       |
  110|  1.02k|    if (data->operation_id != 0)
  ------------------
  |  Branch (110:9): [True: 1.02k, False: 0]
  ------------------
  111|  1.02k|        first_operation = last_operation = data->operation_id;
  112|       |
  113|  1.02k|    for (cur_operation = first_operation;
  114|  2.04k|        cur_operation <= last_operation;
  ------------------
  |  Branch (114:9): [True: 1.02k, False: 1.02k]
  ------------------
  115|  1.02k|        cur_operation++) {
  116|  1.02k|        int no_store = 0; /* Assume caching is ok */
  117|  1.02k|        const OSSL_ALGORITHM *map = NULL;
  118|  1.02k|        int ret = 0;
  119|       |
  120|  1.02k|        map = ossl_provider_query_operation(provider, cur_operation,
  121|  1.02k|            &no_store);
  122|  1.02k|        ret = algorithm_do_map(provider, map, cur_operation, no_store, data);
  123|  1.02k|        ossl_provider_unquery_operation(provider, cur_operation, map);
  124|       |
  125|  1.02k|        if (ret < 0)
  ------------------
  |  Branch (125:13): [True: 0, False: 1.02k]
  ------------------
  126|       |            /* Hard error, bail out immediately! */
  127|      0|            return 0;
  128|       |
  129|       |        /* If post-condition not fulfilled, set general failure */
  130|  1.02k|        if (!ret)
  ------------------
  |  Branch (130:13): [True: 0, False: 1.02k]
  ------------------
  131|      0|            ok = 0;
  132|  1.02k|    }
  133|       |
  134|  1.02k|    return ok;
  135|  1.02k|}
core_algorithm.c:algorithm_do_map:
   44|  1.02k|{
   45|  1.02k|    struct algorithm_data_st *data = cbdata;
   46|  1.02k|    int ret = 0;
   47|       |
   48|  1.02k|    if (!data->reserve_store(no_store, data->data))
  ------------------
  |  Branch (48:9): [True: 0, False: 1.02k]
  ------------------
   49|       |        /* Error, bail out! */
   50|      0|        return -1;
   51|       |
   52|       |    /* Do we fulfill pre-conditions? */
   53|  1.02k|    if (data->pre == NULL) {
  ------------------
  |  Branch (53:9): [True: 0, False: 1.02k]
  ------------------
   54|       |        /* If there is no pre-condition function, assume "yes" */
   55|      0|        ret = 1;
   56|  1.02k|    } else if (!data->pre(provider, cur_operation, no_store, data->data,
  ------------------
  |  Branch (56:16): [True: 0, False: 1.02k]
  ------------------
   57|  1.02k|                   &ret)) {
   58|       |        /* Error, bail out! */
   59|      0|        ret = -1;
   60|      0|        goto end;
   61|      0|    }
   62|       |
   63|       |    /*
   64|       |     * If pre-condition not fulfilled don't add this set of implementations,
   65|       |     * but do continue with the next.  This simply means that another thread
   66|       |     * got to it first.
   67|       |     */
   68|  1.02k|    if (ret == 0) {
  ------------------
  |  Branch (68:9): [True: 1.02k, False: 2]
  ------------------
   69|  1.02k|        ret = 1;
   70|  1.02k|        goto end;
   71|  1.02k|    }
   72|       |
   73|      2|    if (map != NULL) {
  ------------------
  |  Branch (73:9): [True: 2, False: 0]
  ------------------
   74|      2|        const OSSL_ALGORITHM *thismap;
   75|       |
   76|     36|        for (thismap = map; thismap->algorithm_names != NULL; thismap++)
  ------------------
  |  Branch (76:29): [True: 34, False: 2]
  ------------------
   77|     34|            data->fn(provider, thismap, no_store, data->data);
   78|      2|    }
   79|       |
   80|       |    /* Do we fulfill post-conditions? */
   81|      2|    if (data->post == NULL) {
  ------------------
  |  Branch (81:9): [True: 0, False: 2]
  ------------------
   82|       |        /* If there is no post-condition function, assume "yes" */
   83|      0|        ret = 1;
   84|      2|    } else if (!data->post(provider, cur_operation, no_store, data->data,
  ------------------
  |  Branch (84:16): [True: 0, False: 2]
  ------------------
   85|      2|                   &ret)) {
   86|       |        /* Error, bail out! */
   87|      0|        ret = -1;
   88|      0|    }
   89|       |
   90|  1.02k|end:
   91|  1.02k|    data->unreserve_store(data->data);
   92|       |
   93|  1.02k|    return ret;
   94|      2|}

ossl_method_construct:
  137|    511|{
  138|    511|    void *method = NULL;
  139|    511|    OSSL_PROVIDER *provider = provider_rw != NULL ? *provider_rw : NULL;
  ------------------
  |  Branch (139:31): [True: 511, False: 0]
  ------------------
  140|    511|    struct construct_data_st cbdata;
  141|       |
  142|       |    /*
  143|       |     * We might be tempted to try to look into the method store without
  144|       |     * constructing to see if we can find our method there already.
  145|       |     * Unfortunately that does not work well if the query contains
  146|       |     * optional properties as newly loaded providers can match them better.
  147|       |     * We trust that ossl_method_construct_precondition() and
  148|       |     * ossl_method_construct_postcondition() make sure that the
  149|       |     * ossl_algorithm_do_all() does very little when methods from
  150|       |     * a provider have already been constructed.
  151|       |     */
  152|       |
  153|    511|    cbdata.store = NULL;
  154|    511|    cbdata.force_store = force_store;
  155|    511|    cbdata.mcm = mcm;
  156|    511|    cbdata.mcm_data = mcm_data;
  157|    511|    ossl_algorithm_do_all(libctx, operation_id, provider,
  158|    511|        ossl_method_construct_precondition,
  159|    511|        ossl_method_construct_reserve_store,
  160|    511|        ossl_method_construct_this,
  161|    511|        ossl_method_construct_unreserve_store,
  162|    511|        ossl_method_construct_postcondition,
  163|    511|        &cbdata);
  164|       |
  165|       |    /* If there is a temporary store, try there first */
  166|    511|    if (cbdata.store != NULL)
  ------------------
  |  Branch (166:9): [True: 0, False: 511]
  ------------------
  167|      0|        method = mcm->get(cbdata.store, (const OSSL_PROVIDER **)provider_rw,
  168|      0|            mcm_data);
  169|       |
  170|       |    /* If no method was found yet, try the global store */
  171|    511|    if (method == NULL)
  ------------------
  |  Branch (171:9): [True: 511, False: 0]
  ------------------
  172|    511|        method = mcm->get(NULL, (const OSSL_PROVIDER **)provider_rw, mcm_data);
  173|       |
  174|    511|    return method;
  175|    511|}
core_fetch.c:ossl_method_construct_precondition:
   63|  1.02k|{
   64|  1.02k|    if (!ossl_assert(result != NULL)) {
  ------------------
  |  |   44|  1.02k|#define ossl_assert(x) ossl_likely((x) != 0)
  |  |  ------------------
  |  |  |  |   22|  1.02k|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  ------------------
  |  Branch (64:9): [True: 0, False: 1.02k]
  ------------------
   65|      0|        ERR_raise(ERR_LIB_CRYPTO, ERR_R_PASSED_NULL_PARAMETER);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
   66|      0|        return 0;
   67|      0|    }
   68|       |
   69|       |    /* Assume that no bits are set */
   70|  1.02k|    *result = 0;
   71|       |
   72|       |    /* No flag bits for temporary stores */
   73|  1.02k|    if (!is_temporary_method_store(no_store, cbdata)
  ------------------
  |  Branch (73:9): [True: 1.02k, False: 0]
  ------------------
   74|  1.02k|        && !ossl_provider_test_operation_bit(provider, operation_id, result))
  ------------------
  |  Branch (74:12): [True: 0, False: 1.02k]
  ------------------
   75|      0|        return 0;
   76|       |
   77|       |    /*
   78|       |     * The result we get tells if methods have already been constructed.
   79|       |     * However, we want to tell whether construction should happen (true)
   80|       |     * or not (false), which is the opposite of what we got.
   81|       |     */
   82|  1.02k|    *result = !*result;
   83|       |
   84|  1.02k|    return 1;
   85|  1.02k|}
core_fetch.c:is_temporary_method_store:
   29|  2.04k|{
   30|  2.04k|    struct construct_data_st *data = cbdata;
   31|       |
   32|  2.04k|    return no_store && !data->force_store;
  ------------------
  |  Branch (32:12): [True: 0, False: 2.04k]
  |  Branch (32:24): [True: 0, False: 0]
  ------------------
   33|  2.04k|}
core_fetch.c:ossl_method_construct_reserve_store:
   36|  1.02k|{
   37|  1.02k|    struct construct_data_st *data = cbdata;
   38|       |
   39|  1.02k|    if (is_temporary_method_store(no_store, data) && data->store == NULL) {
  ------------------
  |  Branch (39:9): [True: 0, False: 1.02k]
  |  Branch (39:54): [True: 0, False: 0]
  ------------------
   40|       |        /*
   41|       |         * If we have been told not to store the method "permanently", we
   42|       |         * ask for a temporary store, and store the method there.
   43|       |         * The owner of |data->mcm| is completely responsible for managing
   44|       |         * that temporary store.
   45|       |         */
   46|      0|        if ((data->store = data->mcm->get_tmp_store(data->mcm_data)) == NULL)
  ------------------
  |  Branch (46:13): [True: 0, False: 0]
  ------------------
   47|      0|            return 0;
   48|      0|    }
   49|       |
   50|  1.02k|    return data->mcm->lock_store(data->store, data->mcm_data);
   51|  1.02k|}
core_fetch.c:ossl_method_construct_this:
  106|     34|{
  107|     34|    struct construct_data_st *data = cbdata;
  108|     34|    void *method = NULL;
  109|       |
  110|     34|    if ((method = data->mcm->construct(algo, provider, data->mcm_data, no_store))
  ------------------
  |  Branch (110:9): [True: 0, False: 34]
  ------------------
  111|     34|        == NULL)
  112|      0|        return;
  113|       |
  114|     34|    OSSL_TRACE2(QUERY,
  ------------------
  |  |  293|     34|    OSSL_TRACEV(category, (trc_out, format, arg1, arg2))
  |  |  ------------------
  |  |  |  |  283|     34|#define OSSL_TRACEV(category, args) ((void)0)
  |  |  ------------------
  ------------------
  115|     34|        "ossl_method_construct_this: putting an algo to the store %p with no_store %d\n",
  116|     34|        (void *)data->store, no_store);
  117|       |    /*
  118|       |     * Note regarding putting the method in stores:
  119|       |     *
  120|       |     * we don't need to care if it actually got in or not here.
  121|       |     * If it didn't get in, it will simply not be available when
  122|       |     * ossl_method_construct() tries to get it from the store.
  123|       |     *
  124|       |     * It is *expected* that the put function increments the refcnt
  125|       |     * of the passed method.
  126|       |     */
  127|     34|    data->mcm->put(no_store ? data->store : NULL, method, provider, algo->algorithm_names,
  ------------------
  |  Branch (127:20): [True: 0, False: 34]
  ------------------
  128|     34|        algo->property_definition, data->mcm_data);
  129|       |
  130|       |    /* refcnt-- because we're dropping the reference */
  131|     34|    data->mcm->destruct(method, data->mcm_data);
  132|     34|}
core_fetch.c:ossl_method_construct_unreserve_store:
   54|  1.02k|{
   55|  1.02k|    struct construct_data_st *data = cbdata;
   56|       |
   57|  1.02k|    return data->mcm->unlock_store(data->store, data->mcm_data);
   58|  1.02k|}
core_fetch.c:ossl_method_construct_postcondition:
   90|      2|{
   91|      2|    if (!ossl_assert(result != NULL)) {
  ------------------
  |  |   44|      2|#define ossl_assert(x) ossl_likely((x) != 0)
  |  |  ------------------
  |  |  |  |   22|      2|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  ------------------
  |  Branch (91:9): [True: 0, False: 2]
  ------------------
   92|      0|        ERR_raise(ERR_LIB_CRYPTO, ERR_R_PASSED_NULL_PARAMETER);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
   93|      0|        return 0;
   94|      0|    }
   95|       |
   96|      2|    *result = 1;
   97|       |
   98|       |    /* No flag bits for temporary stores */
   99|      2|    return is_temporary_method_store(no_store, cbdata)
  ------------------
  |  Branch (99:12): [True: 0, False: 2]
  ------------------
  100|      2|        || ossl_provider_set_operation_bit(provider, operation_id);
  ------------------
  |  Branch (100:12): [True: 2, False: 0]
  ------------------
  101|      2|}

ossl_stored_namemap_new:
   58|      3|{
   59|      3|    OSSL_NAMEMAP *namemap = ossl_namemap_new(libctx);
   60|       |
   61|      3|    if (namemap != NULL)
  ------------------
  |  Branch (61:9): [True: 3, False: 0]
  ------------------
   62|      3|        namemap->stored = 1;
   63|       |
   64|      3|    return namemap;
   65|      3|}
ossl_namemap_empty:
   84|   793k|{
   85|       |#ifdef TSAN_REQUIRES_LOCKING
   86|       |    /* No TSAN support */
   87|       |    int rv;
   88|       |
   89|       |    if (namemap == NULL)
   90|       |        return 1;
   91|       |
   92|       |    if (!CRYPTO_THREAD_read_lock(namemap->lock))
   93|       |        return -1;
   94|       |    rv = namemap->max_number == 0;
   95|       |    CRYPTO_THREAD_unlock(namemap->lock);
   96|       |    return rv;
   97|       |#else
   98|       |    /* Have TSAN support */
   99|   793k|    return namemap == NULL || tsan_load(&namemap->max_number) == 0;
  ------------------
  |  |   61|   793k|#define tsan_load(ptr) atomic_load_explicit((ptr), memory_order_relaxed)
  ------------------
  |  Branch (99:12): [True: 0, False: 793k]
  |  Branch (99:31): [True: 1, False: 793k]
  ------------------
  100|   793k|#endif
  101|   793k|}
ossl_namemap_doall_names:
  111|     34|{
  112|     34|    int i;
  113|     34|    NAMES *names;
  114|       |
  115|     34|    if (namemap == NULL || number <= 0)
  ------------------
  |  Branch (115:9): [True: 0, False: 34]
  |  Branch (115:28): [True: 0, False: 34]
  ------------------
  116|      0|        return 0;
  117|       |
  118|       |    /*
  119|       |     * We duplicate the NAMES stack under a read lock. Subsequently we call
  120|       |     * the user function, so that we're not holding the read lock when in user
  121|       |     * code. This could lead to deadlocks.
  122|       |     */
  123|     34|    if (!CRYPTO_THREAD_read_lock(namemap->lock))
  ------------------
  |  Branch (123:9): [True: 0, False: 34]
  ------------------
  124|      0|        return 0;
  125|       |
  126|     34|    names = sk_NAMES_value(namemap->numnames, number - 1);
  127|     34|    if (names != NULL)
  ------------------
  |  Branch (127:9): [True: 34, False: 0]
  ------------------
  128|     34|        names = sk_OPENSSL_STRING_dup(names);
  ------------------
  |  |  325|     34|    ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_set_thunks( \
  |  |  326|     34|        OPENSSL_sk_set_copy_thunks( \
  |  |  327|     34|            OPENSSL_sk_set_cmp_thunks( \
  |  |  328|     34|                OPENSSL_sk_dup(ossl_check_const_OPENSSL_STRING_sk_type(sk)), \
  |  |  329|     34|                sk_OPENSSL_STRING_cmpfunc_thunk), \
  |  |  330|     34|            sk_OPENSSL_STRING_copyfunc_thunk), \
  |  |  331|     34|        sk_OPENSSL_STRING_freefunc_thunk))
  ------------------
  129|       |
  130|     34|    CRYPTO_THREAD_unlock(namemap->lock);
  131|       |
  132|     34|    if (names == NULL)
  ------------------
  |  Branch (132:9): [True: 0, False: 34]
  ------------------
  133|      0|        return 0;
  134|       |
  135|    123|    for (i = 0; i < sk_OPENSSL_STRING_num(names); i++)
  ------------------
  |  |  281|    123|#define sk_OPENSSL_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_STRING_sk_type(sk))
  ------------------
  |  Branch (135:17): [True: 89, False: 34]
  ------------------
  136|     89|        fn(sk_OPENSSL_STRING_value(names, i), data);
  ------------------
  |  |  282|     89|#define sk_OPENSSL_STRING_value(sk, idx) ((char *)OPENSSL_sk_value(ossl_check_const_OPENSSL_STRING_sk_type(sk), (idx)))
  ------------------
  137|       |
  138|     34|    sk_OPENSSL_STRING_free(names);
  ------------------
  |  |  308|     34|#define sk_OPENSSL_STRING_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_STRING_sk_type(sk))
  ------------------
  139|     34|    return i > 0;
  140|     34|}
ossl_namemap_name2num:
  143|   794k|{
  144|   794k|    if (name == NULL)
  ------------------
  |  Branch (144:9): [True: 0, False: 794k]
  ------------------
  145|      0|        return 0;
  146|   794k|    return ossl_namemap_name2num_n(namemap, name, strlen(name));
  147|   794k|}
ossl_namemap_name2num_n:
  151|   794k|{
  152|   794k|    int number = 0;
  153|   794k|    HT_VALUE *val;
  154|   794k|    NAMENUM_KEY key;
  155|       |
  156|   794k|#ifndef FIPS_MODULE
  157|   794k|    if (namemap == NULL)
  ------------------
  |  Branch (157:9): [True: 0, False: 794k]
  ------------------
  158|      0|        namemap = ossl_namemap_stored(NULL);
  159|   794k|#endif
  160|       |
  161|   794k|    if (namemap == NULL)
  ------------------
  |  Branch (161:9): [True: 0, False: 794k]
  ------------------
  162|      0|        return 0;
  163|       |
  164|   794k|    if (name_len > NAMEMAP_NAME_LEN)
  ------------------
  |  |   19|   794k|#define NAMEMAP_NAME_LEN 64
  ------------------
  |  Branch (164:9): [True: 20, False: 794k]
  ------------------
  165|     20|        name_len = NAMEMAP_NAME_LEN;
  ------------------
  |  |   19|     20|#define NAMEMAP_NAME_LEN 64
  ------------------
  166|       |
  167|   794k|    HT_INIT_RAW_KEY(&key);
  ------------------
  |  |  132|   794k|    do {                               \
  |  |  133|   794k|        HT_INIT_KEY((key));            \
  |  |  ------------------
  |  |  |  |  114|   794k|    do {                                                                                           \
  |  |  |  |  115|   794k|        memset((key), 0, sizeof(*(key)));                                                          \
  |  |  |  |  116|   794k|        (key)->key_header.keysize = (key)->key_header.bufsize = (sizeof(*(key)) - sizeof(HT_KEY)); \
  |  |  |  |  117|   794k|        (key)->key_header.keybuf = (((uint8_t *)key) + sizeof(HT_KEY));                            \
  |  |  |  |  118|   794k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:14): [Folded, False: 794k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  134|   794k|        (key)->key_header.keysize = 0; \
  |  |  135|   794k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (135:14): [Folded, False: 794k]
  |  |  ------------------
  ------------------
  168|   794k|    HT_COPY_RAW_KEY_CASE(TO_HT_KEY(&key), name, name_len);
  ------------------
  |  |  166|   794k|    do {                                                                               \
  |  |  167|   794k|        size_t tmplen = (size_t)(len);                                                 \
  |  |  168|   794k|        if (tmplen > (key)->bufsize - (key)->keysize)                                  \
  |  |  ------------------
  |  |  |  Branch (168:13): [True: 0, False: 794k]
  |  |  ------------------
  |  |  169|   794k|            tmplen = (key)->bufsize - (key)->keysize;                                  \
  |  |  170|   794k|        ossl_ht_strcase((key), (char *)&((key)->keybuf[(key)->keysize]), buf, tmplen); \
  |  |  171|   794k|        (key)->keysize += tmplen;                                                      \
  |  |  172|   794k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (172:14): [Folded, False: 794k]
  |  |  ------------------
  ------------------
  169|       |
  170|   794k|    val = ossl_ht_get(namemap->namenum_ht, TO_HT_KEY(&key));
  ------------------
  |  |  258|   794k|#define TO_HT_KEY(key) &(key)->key_header
  ------------------
  171|       |
  172|   794k|    if (val != NULL)
  ------------------
  |  Branch (172:9): [True: 793k, False: 1.29k]
  ------------------
  173|       |        /* We store a (small) int directly instead of a pointer to it. */
  174|   793k|        number = (int)(intptr_t)val->value;
  175|       |
  176|   794k|    return number;
  177|   794k|}
ossl_namemap_add_name:
  277|    643|{
  278|    643|    int tmp_number;
  279|       |
  280|    643|#ifndef FIPS_MODULE
  281|    643|    if (namemap == NULL)
  ------------------
  |  Branch (281:9): [True: 0, False: 643]
  ------------------
  282|      0|        namemap = ossl_namemap_stored(NULL);
  283|    643|#endif
  284|       |
  285|    643|    if (name == NULL || *name == 0 || namemap == NULL)
  ------------------
  |  Branch (285:9): [True: 0, False: 643]
  |  Branch (285:25): [True: 0, False: 643]
  |  Branch (285:39): [True: 0, False: 643]
  ------------------
  286|      0|        return 0;
  287|       |
  288|    643|    if (!CRYPTO_THREAD_write_lock(namemap->lock))
  ------------------
  |  Branch (288:9): [True: 0, False: 643]
  ------------------
  289|      0|        return 0;
  290|    643|    tmp_number = namemap_add_name(namemap, number, name);
  291|    643|    CRYPTO_THREAD_unlock(namemap->lock);
  292|    643|    return tmp_number;
  293|    643|}
ossl_namemap_add_names:
  297|     34|{
  298|     34|    char *tmp, *p, *q, *endp;
  299|       |
  300|       |    /* Check that we have a namemap */
  301|     34|    if (!ossl_assert(namemap != NULL)) {
  ------------------
  |  |   44|     34|#define ossl_assert(x) ossl_likely((x) != 0)
  |  |  ------------------
  |  |  |  |   22|     34|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  ------------------
  |  Branch (301:9): [True: 0, False: 34]
  ------------------
  302|      0|        ERR_raise(ERR_LIB_CRYPTO, ERR_R_PASSED_NULL_PARAMETER);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  303|      0|        return 0;
  304|      0|    }
  305|       |
  306|     34|    if ((tmp = OPENSSL_strdup(names)) == NULL)
  ------------------
  |  |  140|     34|    CRYPTO_strdup(str, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_strdup(str, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  |  Branch (306:9): [True: 0, False: 34]
  ------------------
  307|      0|        return 0;
  308|       |
  309|     34|    if (!CRYPTO_THREAD_write_lock(namemap->lock)) {
  ------------------
  |  Branch (309:9): [True: 0, False: 34]
  ------------------
  310|      0|        OPENSSL_free(tmp);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  311|      0|        return 0;
  312|      0|    }
  313|       |    /*
  314|       |     * Check that no name is an empty string, and that all names have at
  315|       |     * most one numeric identity together.
  316|       |     */
  317|    123|    for (p = tmp; *p != '\0'; p = q) {
  ------------------
  |  Branch (317:19): [True: 89, False: 34]
  ------------------
  318|     89|        int this_number;
  319|     89|        size_t l;
  320|       |
  321|     89|        if ((q = strchr(p, separator)) == NULL) {
  ------------------
  |  Branch (321:13): [True: 34, False: 55]
  ------------------
  322|     34|            l = strlen(p); /* offset to \0 */
  323|     34|            q = p + l;
  324|     55|        } else {
  325|     55|            l = q - p; /* offset to the next separator */
  326|     55|            *q++ = '\0';
  327|     55|        }
  328|       |
  329|     89|        if (*p == '\0') {
  ------------------
  |  Branch (329:13): [True: 0, False: 89]
  ------------------
  330|      0|            ERR_raise(ERR_LIB_CRYPTO, CRYPTO_R_BAD_ALGORITHM_NAME);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  331|      0|            number = 0;
  332|      0|            goto end;
  333|      0|        }
  334|       |
  335|     89|        this_number = ossl_namemap_name2num(namemap, p);
  336|       |
  337|     89|        if (number == 0) {
  ------------------
  |  Branch (337:13): [True: 59, False: 30]
  ------------------
  338|     59|            number = this_number;
  339|     59|        } else if (this_number != 0 && this_number != number) {
  ------------------
  |  Branch (339:20): [True: 25, False: 5]
  |  Branch (339:40): [True: 0, False: 25]
  ------------------
  340|      0|            ERR_raise_data(ERR_LIB_CRYPTO, CRYPTO_R_CONFLICTING_NAMES,
  ------------------
  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|      0|        ERR_set_error)
  ------------------
                          ERR_raise_data(ERR_LIB_CRYPTO, CRYPTO_R_CONFLICTING_NAMES,
  ------------------
  |  |   68|      0|#define ERR_LIB_CRYPTO 15
  ------------------
                          ERR_raise_data(ERR_LIB_CRYPTO, CRYPTO_R_CONFLICTING_NAMES,
  ------------------
  |  |   23|      0|#define CRYPTO_R_CONFLICTING_NAMES 118
  ------------------
  341|      0|                "\"%s\" has an existing different identity %d (from \"%s\")",
  342|      0|                p, this_number, names);
  343|      0|            number = 0;
  344|      0|            goto end;
  345|      0|        }
  346|     89|    }
  347|     34|    endp = p;
  348|       |
  349|       |    /* Now that we have checked, register all names */
  350|    123|    for (p = tmp; p < endp; p = q) {
  ------------------
  |  Branch (350:19): [True: 89, False: 34]
  ------------------
  351|     89|        int this_number;
  352|       |
  353|     89|        q = p + strlen(p) + 1;
  354|       |
  355|     89|        this_number = namemap_add_name(namemap, number, p);
  356|     89|        if (number == 0) {
  ------------------
  |  Branch (356:13): [True: 11, False: 78]
  ------------------
  357|     11|            number = this_number;
  358|     78|        } else if (this_number != number) {
  ------------------
  |  Branch (358:20): [True: 0, False: 78]
  ------------------
  359|      0|            ERR_raise_data(ERR_LIB_CRYPTO, ERR_R_INTERNAL_ERROR,
  ------------------
  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|      0|        ERR_set_error)
  ------------------
                          ERR_raise_data(ERR_LIB_CRYPTO, ERR_R_INTERNAL_ERROR,
  ------------------
  |  |   68|      0|#define ERR_LIB_CRYPTO 15
  ------------------
                          ERR_raise_data(ERR_LIB_CRYPTO, ERR_R_INTERNAL_ERROR,
  ------------------
  |  |  308|      0|#define ERR_R_INTERNAL_ERROR (259 | ERR_R_FATAL)
  |  |  ------------------
  |  |  |  |  304|      0|#define ERR_R_FATAL (ERR_RFLAG_FATAL | ERR_RFLAG_COMMON)
  |  |  |  |  ------------------
  |  |  |  |  |  |  219|      0|#define ERR_RFLAG_FATAL (0x1 << ERR_RFLAGS_OFFSET)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  211|      0|#define ERR_RFLAGS_OFFSET 18L
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ERR_R_FATAL (ERR_RFLAG_FATAL | ERR_RFLAG_COMMON)
  |  |  |  |  ------------------
  |  |  |  |  |  |  220|      0|#define ERR_RFLAG_COMMON (0x2 << ERR_RFLAGS_OFFSET)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  211|      0|#define ERR_RFLAGS_OFFSET 18L
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  360|      0|                "Got number %d when expecting %d",
  361|      0|                this_number, number);
  362|      0|            number = 0;
  363|      0|            goto end;
  364|      0|        }
  365|     89|    }
  366|       |
  367|     34|end:
  368|     34|    CRYPTO_THREAD_unlock(namemap->lock);
  369|     34|    OPENSSL_free(tmp);
  ------------------
  |  |  136|     34|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  370|     34|    return number;
  371|     34|}
ossl_namemap_stored:
  471|   793k|{
  472|   793k|#ifndef FIPS_MODULE
  473|   793k|    int nms;
  474|   793k|#endif
  475|   793k|    OSSL_NAMEMAP *namemap = ossl_lib_ctx_get_data(libctx, OSSL_LIB_CTX_NAMEMAP_INDEX);
  ------------------
  |  |   99|   793k|#define OSSL_LIB_CTX_NAMEMAP_INDEX 4
  ------------------
  476|       |
  477|   793k|    if (namemap == NULL)
  ------------------
  |  Branch (477:9): [True: 0, False: 793k]
  ------------------
  478|      0|        return NULL;
  479|       |
  480|   793k|#ifndef FIPS_MODULE
  481|   793k|    nms = ossl_namemap_empty(namemap);
  482|   793k|    if (nms < 0) {
  ------------------
  |  Branch (482:9): [True: 0, False: 793k]
  ------------------
  483|       |        /*
  484|       |         * Could not get lock to make the count, so maybe internal objects
  485|       |         * weren't added. This seems safest.
  486|       |         */
  487|      0|        return NULL;
  488|      0|    }
  489|   793k|    if (nms == 1) {
  ------------------
  |  Branch (489:9): [True: 1, False: 793k]
  ------------------
  490|      1|        int num;
  491|       |
  492|       |        /* Before pilfering, we make sure the legacy database is populated */
  493|      1|        OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS
  ------------------
  |  |  549|      1|#define OPENSSL_INIT_ADD_ALL_CIPHERS 0x00000004L
  ------------------
  494|      1|                | OPENSSL_INIT_ADD_ALL_DIGESTS,
  ------------------
  |  |  550|      1|#define OPENSSL_INIT_ADD_ALL_DIGESTS 0x00000008L
  ------------------
  495|      1|            NULL);
  496|       |
  497|      1|        OBJ_NAME_do_all(OBJ_NAME_TYPE_CIPHER_METH,
  ------------------
  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  ------------------
  498|      1|            get_legacy_cipher_names, namemap);
  499|      1|        OBJ_NAME_do_all(OBJ_NAME_TYPE_MD_METH,
  ------------------
  |  |   25|      1|#define OBJ_NAME_TYPE_MD_METH 0x01
  ------------------
  500|      1|            get_legacy_md_names, namemap);
  501|       |
  502|       |        /*
  503|       |         * Some old providers (<= 3.5) may not have the rsassaPSS alias which
  504|       |         * may cause problems in some cases. We add it manually here
  505|       |         */
  506|      1|        num = ossl_namemap_add_name(namemap, 0, "RSA-PSS");
  507|      1|        if (num != 0) {
  ------------------
  |  Branch (507:13): [True: 1, False: 0]
  ------------------
  508|      1|            ossl_namemap_add_name(namemap, num, "rsassaPss");
  509|       |            /* Add other RSA-PSS aliases as well */
  510|      1|            ossl_namemap_add_name(namemap, num, "RSASSA-PSS");
  511|      1|            ossl_namemap_add_name(namemap, num, "1.2.840.113549.1.1.10");
  512|      1|        }
  513|      1|#ifndef OPENSSL_NO_DEPRECATED_3_6
  514|      1|        {
  515|      1|            int i, end;
  516|       |
  517|       |            /* We also pilfer data from the legacy EVP_PKEY_ASN1_METHODs */
  518|     16|            for (i = 0, end = evp_pkey_asn1_get_count(); i < end; i++)
  ------------------
  |  Branch (518:58): [True: 15, False: 1]
  ------------------
  519|     15|                get_legacy_pkey_meth_names(evp_pkey_asn1_get0(i), namemap);
  520|      1|        }
  521|      1|#endif
  522|      1|    }
  523|   793k|#endif
  524|       |
  525|   793k|    return namemap;
  526|   793k|}
ossl_namemap_new:
  529|      3|{
  530|      3|    OSSL_NAMEMAP *namemap;
  531|      3|    HT_CONFIG htconf = { NULL, NULL, NULL, NAMEMAP_HT_BUCKETS, 1, 1, 0 };
  ------------------
  |  |   17|      3|#define NAMEMAP_HT_BUCKETS 512
  ------------------
  532|       |
  533|      3|    htconf.ctx = libctx;
  534|       |
  535|      3|    if ((namemap = OPENSSL_zalloc(sizeof(*namemap))) == NULL)
  ------------------
  |  |  113|      3|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  |  Branch (535:9): [True: 0, False: 3]
  ------------------
  536|      0|        goto err;
  537|       |
  538|      3|    if ((namemap->lock = CRYPTO_THREAD_lock_new()) == NULL)
  ------------------
  |  Branch (538:9): [True: 0, False: 3]
  ------------------
  539|      0|        goto err;
  540|       |
  541|      3|    if ((namemap->namenum_ht = ossl_ht_new(&htconf)) == NULL)
  ------------------
  |  Branch (541:9): [True: 0, False: 3]
  ------------------
  542|      0|        goto err;
  543|       |
  544|      3|    if ((namemap->numnames = sk_NAMES_new_null()) == NULL)
  ------------------
  |  Branch (544:9): [True: 0, False: 3]
  ------------------
  545|      0|        goto err;
  546|       |
  547|      3|    return namemap;
  548|       |
  549|      0|err:
  550|      0|    ossl_namemap_free(namemap);
  551|       |    return NULL;
  552|      3|}
core_namemap.c:namemap_add_name:
  244|    732|{
  245|    732|    int ret;
  246|    732|    HT_VALUE val = { 0 };
  247|    732|    NAMENUM_KEY key;
  248|       |
  249|       |    /* If it already exists, we don't add it */
  250|    732|    if ((ret = ossl_namemap_name2num(namemap, name)) != 0)
  ------------------
  |  Branch (250:9): [True: 433, False: 299]
  ------------------
  251|    433|        return ret;
  252|       |
  253|    299|    if ((number = numname_insert(namemap, number, name)) == 0)
  ------------------
  |  Branch (253:9): [True: 0, False: 299]
  ------------------
  254|      0|        return 0;
  255|       |
  256|       |    /* Using tsan_store alone here is safe since we're under lock */
  257|    299|    tsan_store(&namemap->max_number, number);
  ------------------
  |  |   62|    299|#define tsan_store(ptr, val) atomic_store_explicit((ptr), (val), memory_order_relaxed)
  ------------------
  258|       |
  259|    299|    HT_INIT_RAW_KEY(&key);
  ------------------
  |  |  132|    299|    do {                               \
  |  |  133|    299|        HT_INIT_KEY((key));            \
  |  |  ------------------
  |  |  |  |  114|    299|    do {                                                                                           \
  |  |  |  |  115|    299|        memset((key), 0, sizeof(*(key)));                                                          \
  |  |  |  |  116|    299|        (key)->key_header.keysize = (key)->key_header.bufsize = (sizeof(*(key)) - sizeof(HT_KEY)); \
  |  |  |  |  117|    299|        (key)->key_header.keybuf = (((uint8_t *)key) + sizeof(HT_KEY));                            \
  |  |  |  |  118|    299|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:14): [Folded, False: 299]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  134|    299|        (key)->key_header.keysize = 0; \
  |  |  135|    299|    } while (0)
  |  |  ------------------
  |  |  |  Branch (135:14): [Folded, False: 299]
  |  |  ------------------
  ------------------
  260|    299|    HT_COPY_RAW_KEY_CASE(TO_HT_KEY(&key), name, strlen(name));
  ------------------
  |  |  166|    299|    do {                                                                               \
  |  |  167|    299|        size_t tmplen = (size_t)(len);                                                 \
  |  |  168|    299|        if (tmplen > (key)->bufsize - (key)->keysize)                                  \
  |  |  ------------------
  |  |  |  Branch (168:13): [True: 0, False: 299]
  |  |  ------------------
  |  |  169|    299|            tmplen = (key)->bufsize - (key)->keysize;                                  \
  |  |  170|    299|        ossl_ht_strcase((key), (char *)&((key)->keybuf[(key)->keysize]), buf, tmplen); \
  |  |  171|    299|        (key)->keysize += tmplen;                                                      \
  |  |  172|    299|    } while (0)
  |  |  ------------------
  |  |  |  Branch (172:14): [Folded, False: 299]
  |  |  ------------------
  ------------------
  261|       |
  262|    299|    val.value = (void *)(intptr_t)number;
  263|    299|    ret = ossl_ht_insert(namemap->namenum_ht, TO_HT_KEY(&key), &val, NULL);
  ------------------
  |  |  258|    299|#define TO_HT_KEY(key) &(key)->key_header
  ------------------
  264|    299|    if (ret <= 0) {
  ------------------
  |  Branch (264:9): [True: 0, False: 299]
  ------------------
  265|       |        /*
  266|       |         * We either got an allocation failure (INTERNAL_ERROR), or
  267|       |         * hit too many conflicts in the table (TOO_MANY_NAMES)
  268|       |         */
  269|      0|        ERR_raise(ERR_LIB_CRYPTO, (ret < 0) ? CRYPTO_R_TOO_MANY_NAMES : ERR_R_INTERNAL_ERROR);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  |  |  |  Branch (357:55): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  270|      0|        return 0;
  271|      0|    }
  272|    299|    return number;
  273|    299|}
core_namemap.c:numname_insert:
  203|    299|{
  204|    299|    NAMES *names;
  205|    299|    char *tmpname;
  206|       |
  207|    299|    if (number > 0) {
  ------------------
  |  Branch (207:9): [True: 170, False: 129]
  ------------------
  208|    170|        names = sk_NAMES_value(namemap->numnames, number - 1);
  209|    170|        if (!ossl_assert(names != NULL)) {
  ------------------
  |  |   44|    170|#define ossl_assert(x) ossl_likely((x) != 0)
  |  |  ------------------
  |  |  |  |   22|    170|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  ------------------
  |  Branch (209:13): [True: 0, False: 170]
  ------------------
  210|       |            /* cannot happen */
  211|      0|            return 0;
  212|      0|        }
  213|    170|    } else {
  214|       |        /* a completely new entry */
  215|    129|        names = sk_OPENSSL_STRING_new_null();
  ------------------
  |  |  292|    129|    ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_set_thunks( \
  |  |  293|    129|        OPENSSL_sk_set_copy_thunks( \
  |  |  294|    129|            OPENSSL_sk_set_cmp_thunks( \
  |  |  295|    129|                OPENSSL_sk_new_null(), \
  |  |  296|    129|                sk_OPENSSL_STRING_cmpfunc_thunk), \
  |  |  297|    129|            sk_OPENSSL_STRING_copyfunc_thunk), \
  |  |  298|    129|        sk_OPENSSL_STRING_freefunc_thunk))
  ------------------
  216|    129|        if (names == NULL)
  ------------------
  |  Branch (216:13): [True: 0, False: 129]
  ------------------
  217|      0|            return 0;
  218|    129|    }
  219|       |
  220|    299|    if ((tmpname = OPENSSL_strdup(name)) == NULL)
  ------------------
  |  |  140|    299|    CRYPTO_strdup(str, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_strdup(str, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  |  Branch (220:9): [True: 0, False: 299]
  ------------------
  221|      0|        goto err;
  222|       |
  223|    299|    if (!sk_OPENSSL_STRING_push(names, tmpname))
  ------------------
  |  |  312|    299|#define sk_OPENSSL_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr))
  ------------------
  |  Branch (223:9): [True: 0, False: 299]
  ------------------
  224|      0|        goto err;
  225|    299|    tmpname = NULL;
  226|       |
  227|    299|    if (number <= 0) {
  ------------------
  |  Branch (227:9): [True: 129, False: 170]
  ------------------
  228|    129|        if (!sk_NAMES_push(namemap->numnames, names))
  ------------------
  |  Branch (228:13): [True: 0, False: 129]
  ------------------
  229|      0|            goto err;
  230|    129|        number = sk_NAMES_num(namemap->numnames);
  231|    129|    }
  232|    299|    return number;
  233|       |
  234|      0|err:
  235|      0|    if (number <= 0)
  ------------------
  |  Branch (235:9): [True: 0, False: 0]
  ------------------
  236|      0|        sk_OPENSSL_STRING_pop_free(names, name_string_free);
  ------------------
  |  |  316|      0|#define sk_OPENSSL_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_freefunc_type(freefunc))
  ------------------
  237|      0|    OPENSSL_free(tmpname);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  238|      0|    return 0;
  239|    299|}
core_namemap.c:get_legacy_cipher_names:
  408|    174|{
  409|    174|    const EVP_CIPHER *cipher = (void *)OBJ_NAME_get(on->name, on->type);
  410|       |
  411|    174|    if (cipher != NULL)
  ------------------
  |  Branch (411:9): [True: 174, False: 0]
  ------------------
  412|    174|        get_legacy_evp_names(NID_undef, EVP_CIPHER_get_type(cipher), NULL, arg);
  ------------------
  |  |   19|    174|#define NID_undef                       0
  ------------------
  413|    174|}
core_namemap.c:get_legacy_evp_names:
  384|    249|{
  385|    249|    int num = 0;
  386|    249|    ASN1_OBJECT *obj;
  387|       |
  388|    249|    if (base_nid != NID_undef) {
  ------------------
  |  |   19|    249|#define NID_undef                       0
  ------------------
  |  Branch (388:9): [True: 4, False: 245]
  ------------------
  389|      4|        num = ossl_namemap_add_name(arg, num, OBJ_nid2sn(base_nid));
  390|      4|        num = ossl_namemap_add_name(arg, num, OBJ_nid2ln(base_nid));
  391|      4|    }
  392|       |
  393|    249|    if (nid != NID_undef) {
  ------------------
  |  |   19|    249|#define NID_undef                       0
  ------------------
  |  Branch (393:9): [True: 208, False: 41]
  ------------------
  394|    208|        num = ossl_namemap_add_name(arg, num, OBJ_nid2sn(nid));
  395|    208|        num = ossl_namemap_add_name(arg, num, OBJ_nid2ln(nid));
  396|    208|        if ((obj = OBJ_nid2obj(nid)) != NULL) {
  ------------------
  |  Branch (396:13): [True: 208, False: 0]
  ------------------
  397|    208|            char txtoid[OSSL_MAX_NAME_SIZE];
  398|       |
  399|    208|            if (OBJ_obj2txt(txtoid, sizeof(txtoid), obj, 1) > 0)
  ------------------
  |  Branch (399:17): [True: 204, False: 4]
  ------------------
  400|    204|                num = ossl_namemap_add_name(arg, num, txtoid);
  401|    208|        }
  402|    208|    }
  403|    249|    if (pem_name != NULL)
  ------------------
  |  Branch (403:9): [True: 11, False: 238]
  ------------------
  404|     11|        num = ossl_namemap_add_name(arg, num, pem_name);
  405|    249|}
core_namemap.c:get_legacy_md_names:
  416|     59|{
  417|     59|    const EVP_MD *md = (void *)OBJ_NAME_get(on->name, on->type);
  418|       |
  419|     59|    if (md != NULL)
  ------------------
  |  Branch (419:9): [True: 59, False: 0]
  ------------------
  420|     59|        get_legacy_evp_names(NID_undef, EVP_MD_get_type(md), NULL, arg);
  ------------------
  |  |   19|     59|#define NID_undef                       0
  ------------------
  421|     59|}
core_namemap.c:get_legacy_pkey_meth_names:
  426|     15|{
  427|     15|    int nid = 0, base_nid = 0, flags = 0;
  428|     15|    const char *pem_name = NULL;
  429|       |
  430|     15|    evp_pkey_asn1_get0_info(&nid, &base_nid, &flags, NULL, &pem_name, ameth);
  431|     15|    if (nid != NID_undef) {
  ------------------
  |  |   19|     15|#define NID_undef                       0
  ------------------
  |  Branch (431:9): [True: 15, False: 0]
  ------------------
  432|     15|        if ((flags & ASN1_PKEY_ALIAS) == 0) {
  ------------------
  |  | 1510|     15|#define ASN1_PKEY_ALIAS 0x1
  ------------------
  |  Branch (432:13): [True: 10, False: 5]
  ------------------
  433|     10|            switch (nid) {
  434|      1|            case EVP_PKEY_DHX:
  ------------------
  |  |   73|      1|#define EVP_PKEY_DHX NID_dhpublicnumber
  |  |  ------------------
  |  |  |  | 5527|      1|#define NID_dhpublicnumber              920
  |  |  ------------------
  ------------------
  |  Branch (434:13): [True: 1, False: 9]
  ------------------
  435|       |                /* We know that the name "DHX" is used too */
  436|      1|                get_legacy_evp_names(0, nid, "DHX", arg);
  437|       |                /* FALLTHRU */
  438|     10|            default:
  ------------------
  |  Branch (438:13): [True: 9, False: 1]
  ------------------
  439|     10|                get_legacy_evp_names(0, nid, pem_name, arg);
  440|     10|            }
  441|     10|        } else {
  442|       |            /*
  443|       |             * Treat aliases carefully, some of them are undesirable, or
  444|       |             * should not be treated as such for providers.
  445|       |             */
  446|       |
  447|      5|            switch (nid) {
  448|      1|            case EVP_PKEY_SM2:
  ------------------
  |  |   75|      1|#define EVP_PKEY_SM2 NID_sm2
  |  |  ------------------
  |  |  |  | 1260|      1|#define NID_sm2         1172
  |  |  ------------------
  ------------------
  |  Branch (448:13): [True: 1, False: 4]
  ------------------
  449|       |                /*
  450|       |                 * SM2 is a separate keytype with providers, not an alias for
  451|       |                 * EC.
  452|       |                 */
  453|      1|                get_legacy_evp_names(0, nid, pem_name, arg);
  454|      1|                break;
  455|      4|            default:
  ------------------
  |  Branch (455:13): [True: 4, False: 1]
  ------------------
  456|       |                /* Use the short name of the base nid as the common reference */
  457|      4|                get_legacy_evp_names(base_nid, nid, pem_name, arg);
  458|      5|            }
  459|      5|        }
  460|     15|    }
  461|     15|}

ossl_err_load_CRYPTO_strings:
   83|      1|{
   84|      1|#ifndef OPENSSL_NO_ERR
   85|      1|    if (ERR_reason_error_string(CRYPTO_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (85:9): [True: 1, False: 0]
  ------------------
   86|      1|        ERR_load_strings_const(CRYPTO_str_reasons);
   87|      1|#endif
   88|      1|    return 1;
   89|      1|}

OPENSSL_cpuid_setup:
  180|      1|{
  181|      1|}

ossl_err_load_CRMF_strings:
   80|      1|{
   81|      1|#ifndef OPENSSL_NO_ERR
   82|      1|    if (ERR_reason_error_string(CRMF_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (82:9): [True: 1, False: 0]
  ------------------
   83|      1|        ERR_load_strings_const(CRMF_str_reasons);
   84|      1|#endif
   85|      1|    return 1;
   86|      1|}

ossl_err_load_CT_strings:
   52|      1|{
   53|      1|#ifndef OPENSSL_NO_ERR
   54|      1|    if (ERR_reason_error_string(CT_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (54:9): [True: 1, False: 0]
  ------------------
   55|      1|        ERR_load_strings_const(CT_str_reasons);
   56|      1|#endif
   57|      1|    return 1;
   58|      1|}

ossl_ctype_check:
  253|    270|{
  254|    270|    const int max = sizeof(ctype_char_map) / sizeof(*ctype_char_map);
  255|    270|    const int a = ossl_toascii(c);
  ------------------
  |  |   56|    270|#define ossl_toascii(c) (c)
  ------------------
  256|       |
  257|    270|    return a >= 0 && a < max && (ctype_char_map[a] & mask) != 0;
  ------------------
  |  Branch (257:12): [True: 270, False: 0]
  |  Branch (257:22): [True: 270, False: 0]
  |  Branch (257:33): [True: 31, False: 239]
  ------------------
  258|    270|}
ossl_isdigit:
  270|      2|{
  271|      2|    int a = ossl_toascii(c);
  ------------------
  |  |   56|      2|#define ossl_toascii(c) (c)
  ------------------
  272|       |
  273|      2|    return ASCII_IS_DIGIT(a);
  ------------------
  |  |  265|      2|#define ASCII_IS_DIGIT(c) (c >= 0x30 && c <= 0x39)
  |  |  ------------------
  |  |  |  Branch (265:28): [True: 2, False: 0]
  |  |  |  Branch (265:41): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  274|      2|}
ossl_tolower:
  297|  11.6k|{
  298|  11.6k|    int a = ossl_toascii(c);
  ------------------
  |  |   56|  11.6k|#define ossl_toascii(c) (c)
  ------------------
  299|       |
  300|  11.6k|    return ASCII_IS_UPPER(a) ? c ^ case_change : c;
  ------------------
  |  |  266|  11.6k|#define ASCII_IS_UPPER(c) (c >= 0x41 && c <= 0x5A)
  |  |  ------------------
  |  |  |  Branch (266:28): [True: 6.85k, False: 4.76k]
  |  |  |  Branch (266:41): [True: 1.87k, False: 4.98k]
  |  |  ------------------
  ------------------
  301|  11.6k|}

OpenSSL_version:
   75|      1|{
   76|       |#if defined(_WIN32) && defined(OSSL_WINCTX)
   77|       |    /* Cannot really fail but we would return empty strings anyway */
   78|       |    (void)RUN_ONCE(&version_strings_once, version_strings_setup);
   79|       |#endif
   80|       |
   81|      1|    switch (t) {
  ------------------
  |  Branch (81:13): [True: 1, False: 0]
  ------------------
   82|      1|    case OPENSSL_VERSION:
  ------------------
  |  |  188|      1|#define OPENSSL_VERSION 0
  ------------------
  |  Branch (82:5): [True: 1, False: 0]
  ------------------
   83|      1|        return OPENSSL_VERSION_TEXT;
  ------------------
  |  |  110|      1|# define OPENSSL_VERSION_TEXT "OpenSSL 4.1.0-dev "
  ------------------
   84|      0|    case OPENSSL_VERSION_STRING:
  ------------------
  |  |  194|      0|#define OPENSSL_VERSION_STRING 6
  ------------------
  |  Branch (84:5): [True: 0, False: 1]
  ------------------
   85|      0|        return OPENSSL_VERSION_STR;
  ------------------
  |  |   90|      0|# define OPENSSL_VERSION_STR "4.1.0"
  ------------------
   86|      0|    case OPENSSL_FULL_VERSION_STRING:
  ------------------
  |  |  195|      0|#define OPENSSL_FULL_VERSION_STRING 7
  ------------------
  |  Branch (86:5): [True: 0, False: 1]
  ------------------
   87|      0|        return OPENSSL_FULL_VERSION_STR;
  ------------------
  |  |   93|      0|# define OPENSSL_FULL_VERSION_STR "4.1.0-dev"
  ------------------
   88|      0|    case OPENSSL_BUILT_ON:
  ------------------
  |  |  190|      0|#define OPENSSL_BUILT_ON 2
  ------------------
  |  Branch (88:5): [True: 0, False: 1]
  ------------------
   89|      0|        return DATE;
  ------------------
  |  |   14|      0|#define DATE "built on: Thu Jul 16 06:54:20 2026 UTC"
  ------------------
   90|      0|    case OPENSSL_CFLAGS:
  ------------------
  |  |  189|      0|#define OPENSSL_CFLAGS 1
  ------------------
  |  Branch (90:5): [True: 0, False: 1]
  ------------------
   91|      0|        return compiler_flags;
   92|      0|    case OPENSSL_PLATFORM:
  ------------------
  |  |  191|      0|#define OPENSSL_PLATFORM 3
  ------------------
  |  Branch (92:5): [True: 0, False: 1]
  ------------------
   93|      0|        return PLATFORM;
  ------------------
  |  |   13|      0|#define PLATFORM "platform: linux-x86_64-clang"
  ------------------
   94|       |#if defined(_WIN32) && defined(OSSL_WINCTX)
   95|       |    case OPENSSL_DIR:
   96|       |        return openssldir;
   97|       |    case OPENSSL_MODULES_DIR:
   98|       |        return modulesdir;
   99|       |#else
  100|      0|    case OPENSSL_DIR:
  ------------------
  |  |  192|      0|#define OPENSSL_DIR 4
  ------------------
  |  Branch (100:5): [True: 0, False: 1]
  ------------------
  101|      0|#ifdef OPENSSLDIR
  102|      0|        return "OPENSSLDIR: \"" OPENSSLDIR "\"";
  103|       |#else
  104|       |        return "OPENSSLDIR: N/A";
  105|       |#endif
  106|      0|    case OPENSSL_MODULES_DIR:
  ------------------
  |  |  196|      0|#define OPENSSL_MODULES_DIR 8
  ------------------
  |  Branch (106:5): [True: 0, False: 1]
  ------------------
  107|      0|#ifdef MODULESDIR
  108|      0|        return "MODULESDIR: \"" MODULESDIR "\"";
  109|       |#else
  110|       |        return "MODULESDIR: N/A";
  111|       |#endif
  112|      0|#endif
  113|      0|    case OPENSSL_CPU_INFO:
  ------------------
  |  |  197|      0|#define OPENSSL_CPU_INFO 9
  ------------------
  |  Branch (113:5): [True: 0, False: 1]
  ------------------
  114|      0|        if (OPENSSL_info(OPENSSL_INFO_CPU_SETTINGS) != NULL)
  ------------------
  |  |  212|      0|#define OPENSSL_INFO_CPU_SETTINGS 1008
  ------------------
  |  Branch (114:13): [True: 0, False: 0]
  ------------------
  115|      0|            return ossl_cpu_info_str;
  116|      0|        else
  117|      0|            return "CPUINFO: N/A";
  118|      0|    case OPENSSL_WINCTX:
  ------------------
  |  |  198|      0|#define OPENSSL_WINCTX 10
  ------------------
  |  Branch (118:5): [True: 0, False: 1]
  ------------------
  119|       |#if defined(_WIN32) && defined(OSSL_WINCTX)
  120|       |        return OSSL_WINCTX_STRING;
  121|       |#else
  122|      0|        return "OSSL_WINCTX: Undefined";
  123|      0|#endif
  124|      0|    case OPENSSL_ENGINES_DIR:
  ------------------
  |  |  193|      0|#define OPENSSL_ENGINES_DIR 5
  ------------------
  |  Branch (124:5): [True: 0, False: 1]
  ------------------
  125|      0|        return "ENGINESDIR: N/A";
  126|      1|    }
  127|      0|    return "not available";
  128|      1|}

DES_encrypt1:
   21|  16.8M|{
   22|  16.8M|    register DES_LONG l, r, t, u;
   23|  16.8M|    register DES_LONG *s;
   24|       |
   25|  16.8M|    r = data[0];
   26|  16.8M|    l = data[1];
   27|       |
   28|  16.8M|    IP(r, l);
  ------------------
  |  |  150|  16.8M|    {                                       \
  |  |  151|  16.8M|        register DES_LONG tt;               \
  |  |  152|  16.8M|        PERM_OP(r, l, tt, 4, 0x0f0f0f0fL);  \
  |  |  ------------------
  |  |  |  |  145|  16.8M|#define PERM_OP(a, b, t, n, m) ((t) = ((((a) >> (n)) ^ (b)) & (m)), \
  |  |  |  |  146|  16.8M|    (b) ^= (t),                                                     \
  |  |  |  |  147|  16.8M|    (a) ^= ((t) << (n)))
  |  |  ------------------
  |  |  153|  16.8M|        PERM_OP(l, r, tt, 16, 0x0000ffffL); \
  |  |  ------------------
  |  |  |  |  145|  16.8M|#define PERM_OP(a, b, t, n, m) ((t) = ((((a) >> (n)) ^ (b)) & (m)), \
  |  |  |  |  146|  16.8M|    (b) ^= (t),                                                     \
  |  |  |  |  147|  16.8M|    (a) ^= ((t) << (n)))
  |  |  ------------------
  |  |  154|  16.8M|        PERM_OP(r, l, tt, 2, 0x33333333L);  \
  |  |  ------------------
  |  |  |  |  145|  16.8M|#define PERM_OP(a, b, t, n, m) ((t) = ((((a) >> (n)) ^ (b)) & (m)), \
  |  |  |  |  146|  16.8M|    (b) ^= (t),                                                     \
  |  |  |  |  147|  16.8M|    (a) ^= ((t) << (n)))
  |  |  ------------------
  |  |  155|  16.8M|        PERM_OP(l, r, tt, 8, 0x00ff00ffL);  \
  |  |  ------------------
  |  |  |  |  145|  16.8M|#define PERM_OP(a, b, t, n, m) ((t) = ((((a) >> (n)) ^ (b)) & (m)), \
  |  |  |  |  146|  16.8M|    (b) ^= (t),                                                     \
  |  |  |  |  147|  16.8M|    (a) ^= ((t) << (n)))
  |  |  ------------------
  |  |  156|  16.8M|        PERM_OP(r, l, tt, 1, 0x55555555L);  \
  |  |  ------------------
  |  |  |  |  145|  16.8M|#define PERM_OP(a, b, t, n, m) ((t) = ((((a) >> (n)) ^ (b)) & (m)), \
  |  |  |  |  146|  16.8M|    (b) ^= (t),                                                     \
  |  |  |  |  147|  16.8M|    (a) ^= ((t) << (n)))
  |  |  ------------------
  |  |  157|  16.8M|    }
  ------------------
   29|       |    /*
   30|       |     * Things have been modified so that the initial rotate is done outside
   31|       |     * the loop.  This required the DES_SPtrans values in sp.h to be rotated
   32|       |     * 1 bit to the right. One perl script later and things have a 5% speed
   33|       |     * up on a sparc2. Thanks to Richard Outerbridge for pointing this out.
   34|       |     */
   35|       |    /* clear the top bits on machines with 8byte longs */
   36|       |    /* shift left by 2 */
   37|  16.8M|    r = ROTATE(r, 29) & 0xffffffffL;
  ------------------
  |  |   61|  16.8M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  ------------------
   38|  16.8M|    l = ROTATE(l, 29) & 0xffffffffL;
  ------------------
  |  |   61|  16.8M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  ------------------
   39|       |
   40|  16.8M|    s = ks->ks->deslong;
   41|       |    /*
   42|       |     * I don't know if it is worth the effort of loop unrolling the inner
   43|       |     * loop
   44|       |     */
   45|  16.8M|    if (enc) {
  ------------------
  |  Branch (45:9): [True: 16.8M, False: 0]
  ------------------
   46|  16.8M|        D_ENCRYPT(l, r, 0); /* 1 */
  ------------------
  |  |  101|  16.8M|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|  16.8M|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|  16.8M|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|  16.8M|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|  16.8M|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|  16.8M|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|  16.8M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|  16.8M|        LL ^= DES_SPtrans[0][(u >> 2L) & 0x3f] ^ DES_SPtrans[2][(u >> 10L) & 0x3f] ^ DES_SPtrans[4][(u >> 18L) & 0x3f] ^ DES_SPtrans[6][(u >> 26L) & 0x3f] ^ DES_SPtrans[1][(t >> 2L) & 0x3f] ^ DES_SPtrans[3][(t >> 10L) & 0x3f] ^ DES_SPtrans[5][(t >> 18L) & 0x3f] ^ DES_SPtrans[7][(t >> 26L) & 0x3f]; \
  |  |  105|  16.8M|    }
  ------------------
   47|  16.8M|        D_ENCRYPT(r, l, 2); /* 2 */
  ------------------
  |  |  101|  16.8M|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|  16.8M|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|  16.8M|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|  16.8M|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|  16.8M|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|  16.8M|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|  16.8M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|  16.8M|        LL ^= DES_SPtrans[0][(u >> 2L) & 0x3f] ^ DES_SPtrans[2][(u >> 10L) & 0x3f] ^ DES_SPtrans[4][(u >> 18L) & 0x3f] ^ DES_SPtrans[6][(u >> 26L) & 0x3f] ^ DES_SPtrans[1][(t >> 2L) & 0x3f] ^ DES_SPtrans[3][(t >> 10L) & 0x3f] ^ DES_SPtrans[5][(t >> 18L) & 0x3f] ^ DES_SPtrans[7][(t >> 26L) & 0x3f]; \
  |  |  105|  16.8M|    }
  ------------------
   48|  16.8M|        D_ENCRYPT(l, r, 4); /* 3 */
  ------------------
  |  |  101|  16.8M|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|  16.8M|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|  16.8M|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|  16.8M|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|  16.8M|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|  16.8M|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|  16.8M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|  16.8M|        LL ^= DES_SPtrans[0][(u >> 2L) & 0x3f] ^ DES_SPtrans[2][(u >> 10L) & 0x3f] ^ DES_SPtrans[4][(u >> 18L) & 0x3f] ^ DES_SPtrans[6][(u >> 26L) & 0x3f] ^ DES_SPtrans[1][(t >> 2L) & 0x3f] ^ DES_SPtrans[3][(t >> 10L) & 0x3f] ^ DES_SPtrans[5][(t >> 18L) & 0x3f] ^ DES_SPtrans[7][(t >> 26L) & 0x3f]; \
  |  |  105|  16.8M|    }
  ------------------
   49|  16.8M|        D_ENCRYPT(r, l, 6); /* 4 */
  ------------------
  |  |  101|  16.8M|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|  16.8M|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|  16.8M|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|  16.8M|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|  16.8M|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|  16.8M|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|  16.8M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|  16.8M|        LL ^= DES_SPtrans[0][(u >> 2L) & 0x3f] ^ DES_SPtrans[2][(u >> 10L) & 0x3f] ^ DES_SPtrans[4][(u >> 18L) & 0x3f] ^ DES_SPtrans[6][(u >> 26L) & 0x3f] ^ DES_SPtrans[1][(t >> 2L) & 0x3f] ^ DES_SPtrans[3][(t >> 10L) & 0x3f] ^ DES_SPtrans[5][(t >> 18L) & 0x3f] ^ DES_SPtrans[7][(t >> 26L) & 0x3f]; \
  |  |  105|  16.8M|    }
  ------------------
   50|  16.8M|        D_ENCRYPT(l, r, 8); /* 5 */
  ------------------
  |  |  101|  16.8M|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|  16.8M|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|  16.8M|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|  16.8M|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|  16.8M|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|  16.8M|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|  16.8M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|  16.8M|        LL ^= DES_SPtrans[0][(u >> 2L) & 0x3f] ^ DES_SPtrans[2][(u >> 10L) & 0x3f] ^ DES_SPtrans[4][(u >> 18L) & 0x3f] ^ DES_SPtrans[6][(u >> 26L) & 0x3f] ^ DES_SPtrans[1][(t >> 2L) & 0x3f] ^ DES_SPtrans[3][(t >> 10L) & 0x3f] ^ DES_SPtrans[5][(t >> 18L) & 0x3f] ^ DES_SPtrans[7][(t >> 26L) & 0x3f]; \
  |  |  105|  16.8M|    }
  ------------------
   51|  16.8M|        D_ENCRYPT(r, l, 10); /* 6 */
  ------------------
  |  |  101|  16.8M|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|  16.8M|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|  16.8M|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|  16.8M|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|  16.8M|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|  16.8M|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|  16.8M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|  16.8M|        LL ^= DES_SPtrans[0][(u >> 2L) & 0x3f] ^ DES_SPtrans[2][(u >> 10L) & 0x3f] ^ DES_SPtrans[4][(u >> 18L) & 0x3f] ^ DES_SPtrans[6][(u >> 26L) & 0x3f] ^ DES_SPtrans[1][(t >> 2L) & 0x3f] ^ DES_SPtrans[3][(t >> 10L) & 0x3f] ^ DES_SPtrans[5][(t >> 18L) & 0x3f] ^ DES_SPtrans[7][(t >> 26L) & 0x3f]; \
  |  |  105|  16.8M|    }
  ------------------
   52|  16.8M|        D_ENCRYPT(l, r, 12); /* 7 */
  ------------------
  |  |  101|  16.8M|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|  16.8M|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|  16.8M|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|  16.8M|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|  16.8M|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|  16.8M|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|  16.8M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|  16.8M|        LL ^= DES_SPtrans[0][(u >> 2L) & 0x3f] ^ DES_SPtrans[2][(u >> 10L) & 0x3f] ^ DES_SPtrans[4][(u >> 18L) & 0x3f] ^ DES_SPtrans[6][(u >> 26L) & 0x3f] ^ DES_SPtrans[1][(t >> 2L) & 0x3f] ^ DES_SPtrans[3][(t >> 10L) & 0x3f] ^ DES_SPtrans[5][(t >> 18L) & 0x3f] ^ DES_SPtrans[7][(t >> 26L) & 0x3f]; \
  |  |  105|  16.8M|    }
  ------------------
   53|  16.8M|        D_ENCRYPT(r, l, 14); /* 8 */
  ------------------
  |  |  101|  16.8M|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|  16.8M|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|  16.8M|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|  16.8M|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|  16.8M|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|  16.8M|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|  16.8M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|  16.8M|        LL ^= DES_SPtrans[0][(u >> 2L) & 0x3f] ^ DES_SPtrans[2][(u >> 10L) & 0x3f] ^ DES_SPtrans[4][(u >> 18L) & 0x3f] ^ DES_SPtrans[6][(u >> 26L) & 0x3f] ^ DES_SPtrans[1][(t >> 2L) & 0x3f] ^ DES_SPtrans[3][(t >> 10L) & 0x3f] ^ DES_SPtrans[5][(t >> 18L) & 0x3f] ^ DES_SPtrans[7][(t >> 26L) & 0x3f]; \
  |  |  105|  16.8M|    }
  ------------------
   54|  16.8M|        D_ENCRYPT(l, r, 16); /* 9 */
  ------------------
  |  |  101|  16.8M|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|  16.8M|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|  16.8M|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|  16.8M|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|  16.8M|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|  16.8M|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|  16.8M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|  16.8M|        LL ^= DES_SPtrans[0][(u >> 2L) & 0x3f] ^ DES_SPtrans[2][(u >> 10L) & 0x3f] ^ DES_SPtrans[4][(u >> 18L) & 0x3f] ^ DES_SPtrans[6][(u >> 26L) & 0x3f] ^ DES_SPtrans[1][(t >> 2L) & 0x3f] ^ DES_SPtrans[3][(t >> 10L) & 0x3f] ^ DES_SPtrans[5][(t >> 18L) & 0x3f] ^ DES_SPtrans[7][(t >> 26L) & 0x3f]; \
  |  |  105|  16.8M|    }
  ------------------
   55|  16.8M|        D_ENCRYPT(r, l, 18); /* 10 */
  ------------------
  |  |  101|  16.8M|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|  16.8M|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|  16.8M|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|  16.8M|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|  16.8M|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|  16.8M|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|  16.8M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|  16.8M|        LL ^= DES_SPtrans[0][(u >> 2L) & 0x3f] ^ DES_SPtrans[2][(u >> 10L) & 0x3f] ^ DES_SPtrans[4][(u >> 18L) & 0x3f] ^ DES_SPtrans[6][(u >> 26L) & 0x3f] ^ DES_SPtrans[1][(t >> 2L) & 0x3f] ^ DES_SPtrans[3][(t >> 10L) & 0x3f] ^ DES_SPtrans[5][(t >> 18L) & 0x3f] ^ DES_SPtrans[7][(t >> 26L) & 0x3f]; \
  |  |  105|  16.8M|    }
  ------------------
   56|  16.8M|        D_ENCRYPT(l, r, 20); /* 11 */
  ------------------
  |  |  101|  16.8M|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|  16.8M|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|  16.8M|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|  16.8M|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|  16.8M|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|  16.8M|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|  16.8M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|  16.8M|        LL ^= DES_SPtrans[0][(u >> 2L) & 0x3f] ^ DES_SPtrans[2][(u >> 10L) & 0x3f] ^ DES_SPtrans[4][(u >> 18L) & 0x3f] ^ DES_SPtrans[6][(u >> 26L) & 0x3f] ^ DES_SPtrans[1][(t >> 2L) & 0x3f] ^ DES_SPtrans[3][(t >> 10L) & 0x3f] ^ DES_SPtrans[5][(t >> 18L) & 0x3f] ^ DES_SPtrans[7][(t >> 26L) & 0x3f]; \
  |  |  105|  16.8M|    }
  ------------------
   57|  16.8M|        D_ENCRYPT(r, l, 22); /* 12 */
  ------------------
  |  |  101|  16.8M|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|  16.8M|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|  16.8M|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|  16.8M|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|  16.8M|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|  16.8M|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|  16.8M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|  16.8M|        LL ^= DES_SPtrans[0][(u >> 2L) & 0x3f] ^ DES_SPtrans[2][(u >> 10L) & 0x3f] ^ DES_SPtrans[4][(u >> 18L) & 0x3f] ^ DES_SPtrans[6][(u >> 26L) & 0x3f] ^ DES_SPtrans[1][(t >> 2L) & 0x3f] ^ DES_SPtrans[3][(t >> 10L) & 0x3f] ^ DES_SPtrans[5][(t >> 18L) & 0x3f] ^ DES_SPtrans[7][(t >> 26L) & 0x3f]; \
  |  |  105|  16.8M|    }
  ------------------
   58|  16.8M|        D_ENCRYPT(l, r, 24); /* 13 */
  ------------------
  |  |  101|  16.8M|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|  16.8M|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|  16.8M|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|  16.8M|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|  16.8M|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|  16.8M|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|  16.8M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|  16.8M|        LL ^= DES_SPtrans[0][(u >> 2L) & 0x3f] ^ DES_SPtrans[2][(u >> 10L) & 0x3f] ^ DES_SPtrans[4][(u >> 18L) & 0x3f] ^ DES_SPtrans[6][(u >> 26L) & 0x3f] ^ DES_SPtrans[1][(t >> 2L) & 0x3f] ^ DES_SPtrans[3][(t >> 10L) & 0x3f] ^ DES_SPtrans[5][(t >> 18L) & 0x3f] ^ DES_SPtrans[7][(t >> 26L) & 0x3f]; \
  |  |  105|  16.8M|    }
  ------------------
   59|  16.8M|        D_ENCRYPT(r, l, 26); /* 14 */
  ------------------
  |  |  101|  16.8M|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|  16.8M|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|  16.8M|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|  16.8M|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|  16.8M|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|  16.8M|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|  16.8M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|  16.8M|        LL ^= DES_SPtrans[0][(u >> 2L) & 0x3f] ^ DES_SPtrans[2][(u >> 10L) & 0x3f] ^ DES_SPtrans[4][(u >> 18L) & 0x3f] ^ DES_SPtrans[6][(u >> 26L) & 0x3f] ^ DES_SPtrans[1][(t >> 2L) & 0x3f] ^ DES_SPtrans[3][(t >> 10L) & 0x3f] ^ DES_SPtrans[5][(t >> 18L) & 0x3f] ^ DES_SPtrans[7][(t >> 26L) & 0x3f]; \
  |  |  105|  16.8M|    }
  ------------------
   60|  16.8M|        D_ENCRYPT(l, r, 28); /* 15 */
  ------------------
  |  |  101|  16.8M|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|  16.8M|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|  16.8M|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|  16.8M|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|  16.8M|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|  16.8M|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|  16.8M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|  16.8M|        LL ^= DES_SPtrans[0][(u >> 2L) & 0x3f] ^ DES_SPtrans[2][(u >> 10L) & 0x3f] ^ DES_SPtrans[4][(u >> 18L) & 0x3f] ^ DES_SPtrans[6][(u >> 26L) & 0x3f] ^ DES_SPtrans[1][(t >> 2L) & 0x3f] ^ DES_SPtrans[3][(t >> 10L) & 0x3f] ^ DES_SPtrans[5][(t >> 18L) & 0x3f] ^ DES_SPtrans[7][(t >> 26L) & 0x3f]; \
  |  |  105|  16.8M|    }
  ------------------
   61|  16.8M|        D_ENCRYPT(r, l, 30); /* 16 */
  ------------------
  |  |  101|  16.8M|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|  16.8M|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|  16.8M|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|  16.8M|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|  16.8M|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|  16.8M|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|  16.8M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|  16.8M|        LL ^= DES_SPtrans[0][(u >> 2L) & 0x3f] ^ DES_SPtrans[2][(u >> 10L) & 0x3f] ^ DES_SPtrans[4][(u >> 18L) & 0x3f] ^ DES_SPtrans[6][(u >> 26L) & 0x3f] ^ DES_SPtrans[1][(t >> 2L) & 0x3f] ^ DES_SPtrans[3][(t >> 10L) & 0x3f] ^ DES_SPtrans[5][(t >> 18L) & 0x3f] ^ DES_SPtrans[7][(t >> 26L) & 0x3f]; \
  |  |  105|  16.8M|    }
  ------------------
   62|  16.8M|    } else {
   63|      0|        D_ENCRYPT(l, r, 30); /* 16 */
  ------------------
  |  |  101|      0|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|      0|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|      0|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|      0|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|      0|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|      0|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|      0|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|      0|        LL ^= DES_SPtrans[0][(u >> 2L) & 0x3f] ^ DES_SPtrans[2][(u >> 10L) & 0x3f] ^ DES_SPtrans[4][(u >> 18L) & 0x3f] ^ DES_SPtrans[6][(u >> 26L) & 0x3f] ^ DES_SPtrans[1][(t >> 2L) & 0x3f] ^ DES_SPtrans[3][(t >> 10L) & 0x3f] ^ DES_SPtrans[5][(t >> 18L) & 0x3f] ^ DES_SPtrans[7][(t >> 26L) & 0x3f]; \
  |  |  105|      0|    }
  ------------------
   64|      0|        D_ENCRYPT(r, l, 28); /* 15 */
  ------------------
  |  |  101|      0|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|      0|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|      0|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|      0|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|      0|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|      0|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|      0|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|      0|        LL ^= DES_SPtrans[0][(u >> 2L) & 0x3f] ^ DES_SPtrans[2][(u >> 10L) & 0x3f] ^ DES_SPtrans[4][(u >> 18L) & 0x3f] ^ DES_SPtrans[6][(u >> 26L) & 0x3f] ^ DES_SPtrans[1][(t >> 2L) & 0x3f] ^ DES_SPtrans[3][(t >> 10L) & 0x3f] ^ DES_SPtrans[5][(t >> 18L) & 0x3f] ^ DES_SPtrans[7][(t >> 26L) & 0x3f]; \
  |  |  105|      0|    }
  ------------------
   65|      0|        D_ENCRYPT(l, r, 26); /* 14 */
  ------------------
  |  |  101|      0|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|      0|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|      0|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|      0|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|      0|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|      0|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|      0|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|      0|        LL ^= DES_SPtrans[0][(u >> 2L) & 0x3f] ^ DES_SPtrans[2][(u >> 10L) & 0x3f] ^ DES_SPtrans[4][(u >> 18L) & 0x3f] ^ DES_SPtrans[6][(u >> 26L) & 0x3f] ^ DES_SPtrans[1][(t >> 2L) & 0x3f] ^ DES_SPtrans[3][(t >> 10L) & 0x3f] ^ DES_SPtrans[5][(t >> 18L) & 0x3f] ^ DES_SPtrans[7][(t >> 26L) & 0x3f]; \
  |  |  105|      0|    }
  ------------------
   66|      0|        D_ENCRYPT(r, l, 24); /* 13 */
  ------------------
  |  |  101|      0|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|      0|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|      0|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|      0|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|      0|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|      0|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|      0|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|      0|        LL ^= DES_SPtrans[0][(u >> 2L) & 0x3f] ^ DES_SPtrans[2][(u >> 10L) & 0x3f] ^ DES_SPtrans[4][(u >> 18L) & 0x3f] ^ DES_SPtrans[6][(u >> 26L) & 0x3f] ^ DES_SPtrans[1][(t >> 2L) & 0x3f] ^ DES_SPtrans[3][(t >> 10L) & 0x3f] ^ DES_SPtrans[5][(t >> 18L) & 0x3f] ^ DES_SPtrans[7][(t >> 26L) & 0x3f]; \
  |  |  105|      0|    }
  ------------------
   67|      0|        D_ENCRYPT(l, r, 22); /* 12 */
  ------------------
  |  |  101|      0|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|      0|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|      0|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|      0|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|      0|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|      0|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|      0|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|      0|        LL ^= DES_SPtrans[0][(u >> 2L) & 0x3f] ^ DES_SPtrans[2][(u >> 10L) & 0x3f] ^ DES_SPtrans[4][(u >> 18L) & 0x3f] ^ DES_SPtrans[6][(u >> 26L) & 0x3f] ^ DES_SPtrans[1][(t >> 2L) & 0x3f] ^ DES_SPtrans[3][(t >> 10L) & 0x3f] ^ DES_SPtrans[5][(t >> 18L) & 0x3f] ^ DES_SPtrans[7][(t >> 26L) & 0x3f]; \
  |  |  105|      0|    }
  ------------------
   68|      0|        D_ENCRYPT(r, l, 20); /* 11 */
  ------------------
  |  |  101|      0|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|      0|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|      0|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|      0|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|      0|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|      0|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|      0|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|      0|        LL ^= DES_SPtrans[0][(u >> 2L) & 0x3f] ^ DES_SPtrans[2][(u >> 10L) & 0x3f] ^ DES_SPtrans[4][(u >> 18L) & 0x3f] ^ DES_SPtrans[6][(u >> 26L) & 0x3f] ^ DES_SPtrans[1][(t >> 2L) & 0x3f] ^ DES_SPtrans[3][(t >> 10L) & 0x3f] ^ DES_SPtrans[5][(t >> 18L) & 0x3f] ^ DES_SPtrans[7][(t >> 26L) & 0x3f]; \
  |  |  105|      0|    }
  ------------------
   69|      0|        D_ENCRYPT(l, r, 18); /* 10 */
  ------------------
  |  |  101|      0|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|      0|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|      0|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|      0|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|      0|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|      0|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|      0|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|      0|        LL ^= DES_SPtrans[0][(u >> 2L) & 0x3f] ^ DES_SPtrans[2][(u >> 10L) & 0x3f] ^ DES_SPtrans[4][(u >> 18L) & 0x3f] ^ DES_SPtrans[6][(u >> 26L) & 0x3f] ^ DES_SPtrans[1][(t >> 2L) & 0x3f] ^ DES_SPtrans[3][(t >> 10L) & 0x3f] ^ DES_SPtrans[5][(t >> 18L) & 0x3f] ^ DES_SPtrans[7][(t >> 26L) & 0x3f]; \
  |  |  105|      0|    }
  ------------------
   70|      0|        D_ENCRYPT(r, l, 16); /* 9 */
  ------------------
  |  |  101|      0|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|      0|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|      0|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|      0|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|      0|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|      0|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|      0|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|      0|        LL ^= DES_SPtrans[0][(u >> 2L) & 0x3f] ^ DES_SPtrans[2][(u >> 10L) & 0x3f] ^ DES_SPtrans[4][(u >> 18L) & 0x3f] ^ DES_SPtrans[6][(u >> 26L) & 0x3f] ^ DES_SPtrans[1][(t >> 2L) & 0x3f] ^ DES_SPtrans[3][(t >> 10L) & 0x3f] ^ DES_SPtrans[5][(t >> 18L) & 0x3f] ^ DES_SPtrans[7][(t >> 26L) & 0x3f]; \
  |  |  105|      0|    }
  ------------------
   71|      0|        D_ENCRYPT(l, r, 14); /* 8 */
  ------------------
  |  |  101|      0|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|      0|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|      0|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|      0|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|      0|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|      0|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|      0|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|      0|        LL ^= DES_SPtrans[0][(u >> 2L) & 0x3f] ^ DES_SPtrans[2][(u >> 10L) & 0x3f] ^ DES_SPtrans[4][(u >> 18L) & 0x3f] ^ DES_SPtrans[6][(u >> 26L) & 0x3f] ^ DES_SPtrans[1][(t >> 2L) & 0x3f] ^ DES_SPtrans[3][(t >> 10L) & 0x3f] ^ DES_SPtrans[5][(t >> 18L) & 0x3f] ^ DES_SPtrans[7][(t >> 26L) & 0x3f]; \
  |  |  105|      0|    }
  ------------------
   72|      0|        D_ENCRYPT(r, l, 12); /* 7 */
  ------------------
  |  |  101|      0|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|      0|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|      0|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|      0|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|      0|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|      0|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|      0|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|      0|        LL ^= DES_SPtrans[0][(u >> 2L) & 0x3f] ^ DES_SPtrans[2][(u >> 10L) & 0x3f] ^ DES_SPtrans[4][(u >> 18L) & 0x3f] ^ DES_SPtrans[6][(u >> 26L) & 0x3f] ^ DES_SPtrans[1][(t >> 2L) & 0x3f] ^ DES_SPtrans[3][(t >> 10L) & 0x3f] ^ DES_SPtrans[5][(t >> 18L) & 0x3f] ^ DES_SPtrans[7][(t >> 26L) & 0x3f]; \
  |  |  105|      0|    }
  ------------------
   73|      0|        D_ENCRYPT(l, r, 10); /* 6 */
  ------------------
  |  |  101|      0|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|      0|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|      0|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|      0|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|      0|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|      0|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|      0|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|      0|        LL ^= DES_SPtrans[0][(u >> 2L) & 0x3f] ^ DES_SPtrans[2][(u >> 10L) & 0x3f] ^ DES_SPtrans[4][(u >> 18L) & 0x3f] ^ DES_SPtrans[6][(u >> 26L) & 0x3f] ^ DES_SPtrans[1][(t >> 2L) & 0x3f] ^ DES_SPtrans[3][(t >> 10L) & 0x3f] ^ DES_SPtrans[5][(t >> 18L) & 0x3f] ^ DES_SPtrans[7][(t >> 26L) & 0x3f]; \
  |  |  105|      0|    }
  ------------------
   74|      0|        D_ENCRYPT(r, l, 8); /* 5 */
  ------------------
  |  |  101|      0|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|      0|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|      0|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|      0|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|      0|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|      0|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|      0|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|      0|        LL ^= DES_SPtrans[0][(u >> 2L) & 0x3f] ^ DES_SPtrans[2][(u >> 10L) & 0x3f] ^ DES_SPtrans[4][(u >> 18L) & 0x3f] ^ DES_SPtrans[6][(u >> 26L) & 0x3f] ^ DES_SPtrans[1][(t >> 2L) & 0x3f] ^ DES_SPtrans[3][(t >> 10L) & 0x3f] ^ DES_SPtrans[5][(t >> 18L) & 0x3f] ^ DES_SPtrans[7][(t >> 26L) & 0x3f]; \
  |  |  105|      0|    }
  ------------------
   75|      0|        D_ENCRYPT(l, r, 6); /* 4 */
  ------------------
  |  |  101|      0|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|      0|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|      0|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|      0|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|      0|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|      0|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|      0|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|      0|        LL ^= DES_SPtrans[0][(u >> 2L) & 0x3f] ^ DES_SPtrans[2][(u >> 10L) & 0x3f] ^ DES_SPtrans[4][(u >> 18L) & 0x3f] ^ DES_SPtrans[6][(u >> 26L) & 0x3f] ^ DES_SPtrans[1][(t >> 2L) & 0x3f] ^ DES_SPtrans[3][(t >> 10L) & 0x3f] ^ DES_SPtrans[5][(t >> 18L) & 0x3f] ^ DES_SPtrans[7][(t >> 26L) & 0x3f]; \
  |  |  105|      0|    }
  ------------------
   76|      0|        D_ENCRYPT(r, l, 4); /* 3 */
  ------------------
  |  |  101|      0|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|      0|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|      0|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|      0|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|      0|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|      0|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|      0|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|      0|        LL ^= DES_SPtrans[0][(u >> 2L) & 0x3f] ^ DES_SPtrans[2][(u >> 10L) & 0x3f] ^ DES_SPtrans[4][(u >> 18L) & 0x3f] ^ DES_SPtrans[6][(u >> 26L) & 0x3f] ^ DES_SPtrans[1][(t >> 2L) & 0x3f] ^ DES_SPtrans[3][(t >> 10L) & 0x3f] ^ DES_SPtrans[5][(t >> 18L) & 0x3f] ^ DES_SPtrans[7][(t >> 26L) & 0x3f]; \
  |  |  105|      0|    }
  ------------------
   77|      0|        D_ENCRYPT(l, r, 2); /* 2 */
  ------------------
  |  |  101|      0|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|      0|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|      0|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|      0|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|      0|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|      0|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|      0|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|      0|        LL ^= DES_SPtrans[0][(u >> 2L) & 0x3f] ^ DES_SPtrans[2][(u >> 10L) & 0x3f] ^ DES_SPtrans[4][(u >> 18L) & 0x3f] ^ DES_SPtrans[6][(u >> 26L) & 0x3f] ^ DES_SPtrans[1][(t >> 2L) & 0x3f] ^ DES_SPtrans[3][(t >> 10L) & 0x3f] ^ DES_SPtrans[5][(t >> 18L) & 0x3f] ^ DES_SPtrans[7][(t >> 26L) & 0x3f]; \
  |  |  105|      0|    }
  ------------------
   78|      0|        D_ENCRYPT(r, l, 0); /* 1 */
  ------------------
  |  |  101|      0|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|      0|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|      0|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|      0|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|      0|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|      0|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|      0|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|      0|        LL ^= DES_SPtrans[0][(u >> 2L) & 0x3f] ^ DES_SPtrans[2][(u >> 10L) & 0x3f] ^ DES_SPtrans[4][(u >> 18L) & 0x3f] ^ DES_SPtrans[6][(u >> 26L) & 0x3f] ^ DES_SPtrans[1][(t >> 2L) & 0x3f] ^ DES_SPtrans[3][(t >> 10L) & 0x3f] ^ DES_SPtrans[5][(t >> 18L) & 0x3f] ^ DES_SPtrans[7][(t >> 26L) & 0x3f]; \
  |  |  105|      0|    }
  ------------------
   79|      0|    }
   80|       |
   81|       |    /* rotate and clear the top bits on machines with 8byte longs */
   82|  16.8M|    l = ROTATE(l, 3) & 0xffffffffL;
  ------------------
  |  |   61|  16.8M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  ------------------
   83|  16.8M|    r = ROTATE(r, 3) & 0xffffffffL;
  ------------------
  |  |   61|  16.8M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  ------------------
   84|       |
   85|  16.8M|    FP(r, l);
  ------------------
  |  |  160|  16.8M|    {                                       \
  |  |  161|  16.8M|        register DES_LONG tt;               \
  |  |  162|  16.8M|        PERM_OP(l, r, tt, 1, 0x55555555L);  \
  |  |  ------------------
  |  |  |  |  145|  16.8M|#define PERM_OP(a, b, t, n, m) ((t) = ((((a) >> (n)) ^ (b)) & (m)), \
  |  |  |  |  146|  16.8M|    (b) ^= (t),                                                     \
  |  |  |  |  147|  16.8M|    (a) ^= ((t) << (n)))
  |  |  ------------------
  |  |  163|  16.8M|        PERM_OP(r, l, tt, 8, 0x00ff00ffL);  \
  |  |  ------------------
  |  |  |  |  145|  16.8M|#define PERM_OP(a, b, t, n, m) ((t) = ((((a) >> (n)) ^ (b)) & (m)), \
  |  |  |  |  146|  16.8M|    (b) ^= (t),                                                     \
  |  |  |  |  147|  16.8M|    (a) ^= ((t) << (n)))
  |  |  ------------------
  |  |  164|  16.8M|        PERM_OP(l, r, tt, 2, 0x33333333L);  \
  |  |  ------------------
  |  |  |  |  145|  16.8M|#define PERM_OP(a, b, t, n, m) ((t) = ((((a) >> (n)) ^ (b)) & (m)), \
  |  |  |  |  146|  16.8M|    (b) ^= (t),                                                     \
  |  |  |  |  147|  16.8M|    (a) ^= ((t) << (n)))
  |  |  ------------------
  |  |  165|  16.8M|        PERM_OP(r, l, tt, 16, 0x0000ffffL); \
  |  |  ------------------
  |  |  |  |  145|  16.8M|#define PERM_OP(a, b, t, n, m) ((t) = ((((a) >> (n)) ^ (b)) & (m)), \
  |  |  |  |  146|  16.8M|    (b) ^= (t),                                                     \
  |  |  |  |  147|  16.8M|    (a) ^= ((t) << (n)))
  |  |  ------------------
  |  |  166|  16.8M|        PERM_OP(l, r, tt, 4, 0x0f0f0f0fL);  \
  |  |  ------------------
  |  |  |  |  145|  16.8M|#define PERM_OP(a, b, t, n, m) ((t) = ((((a) >> (n)) ^ (b)) & (m)), \
  |  |  |  |  146|  16.8M|    (b) ^= (t),                                                     \
  |  |  |  |  147|  16.8M|    (a) ^= ((t) << (n)))
  |  |  ------------------
  |  |  167|  16.8M|    }
  ------------------
   86|  16.8M|    data[0] = l;
   87|  16.8M|    data[1] = r;
   88|  16.8M|    l = r = t = u = 0;
   89|  16.8M|}

DES_set_odd_parity:
   60|  16.8M|{
   61|  16.8M|    unsigned int i;
   62|       |
   63|   151M|    for (i = 0; i < DES_KEY_SZ; i++)
  ------------------
  |  |   52|   151M|#define DES_KEY_SZ (sizeof(DES_cblock))
  ------------------
  |  Branch (63:17): [True: 134M, False: 16.8M]
  ------------------
   64|   134M|        (*key)[i] = odd_parity[(*key)[i]];
   65|  16.8M|}
DES_set_key_unchecked:
  710|  16.8M|{
  711|  16.8M|    static const int shifts2[16] = {
  712|  16.8M|        0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0
  713|  16.8M|    };
  714|  16.8M|    register DES_LONG c, d, t, s, t2;
  715|  16.8M|    register const unsigned char *in;
  716|  16.8M|    register DES_LONG *k;
  717|  16.8M|    register int i;
  718|       |
  719|       |#ifdef OPENBSD_DEV_CRYPTO
  720|       |    memcpy(schedule->key, key, sizeof(schedule->key));
  721|       |    schedule->session = NULL;
  722|       |#endif
  723|  16.8M|    k = &schedule->ks->deslong[0];
  724|  16.8M|    in = &(*key)[0];
  725|       |
  726|  16.8M|    c2l(in, c);
  ------------------
  |  |  107|  16.8M|#define c2l(c, l) (l = ((unsigned long)(*((c)++))), \
  |  |  108|  16.8M|    l |= (((unsigned long)(*((c)++))) << 8),        \
  |  |  109|  16.8M|    l |= (((unsigned long)(*((c)++))) << 16),       \
  |  |  110|  16.8M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
  727|  16.8M|    c2l(in, d);
  ------------------
  |  |  107|  16.8M|#define c2l(c, l) (l = ((unsigned long)(*((c)++))), \
  |  |  108|  16.8M|    l |= (((unsigned long)(*((c)++))) << 8),        \
  |  |  109|  16.8M|    l |= (((unsigned long)(*((c)++))) << 16),       \
  |  |  110|  16.8M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
  728|       |
  729|       |    /*
  730|       |     * do PC1 in 47 simple operations. Thanks to John Fletcher
  731|       |     * for the inspiration.
  732|       |     */
  733|  16.8M|    PERM_OP(d, c, t, 4, 0x0f0f0f0fL);
  ------------------
  |  |  145|  16.8M|#define PERM_OP(a, b, t, n, m) ((t) = ((((a) >> (n)) ^ (b)) & (m)), \
  |  |  146|  16.8M|    (b) ^= (t),                                                     \
  |  |  147|  16.8M|    (a) ^= ((t) << (n)))
  ------------------
  734|  16.8M|    HPERM_OP(c, t, -2, 0xcccc0000L);
  ------------------
  |  |  139|  16.8M|#define HPERM_OP(a, t, n, m) ((t) = ((((a) << (16 - (n))) ^ (a)) & (m)), \
  |  |  140|  16.8M|    (a) = (a) ^ (t) ^ (t >> (16 - (n))))
  ------------------
  735|  16.8M|    HPERM_OP(d, t, -2, 0xcccc0000L);
  ------------------
  |  |  139|  16.8M|#define HPERM_OP(a, t, n, m) ((t) = ((((a) << (16 - (n))) ^ (a)) & (m)), \
  |  |  140|  16.8M|    (a) = (a) ^ (t) ^ (t >> (16 - (n))))
  ------------------
  736|  16.8M|    PERM_OP(d, c, t, 1, 0x55555555L);
  ------------------
  |  |  145|  16.8M|#define PERM_OP(a, b, t, n, m) ((t) = ((((a) >> (n)) ^ (b)) & (m)), \
  |  |  146|  16.8M|    (b) ^= (t),                                                     \
  |  |  147|  16.8M|    (a) ^= ((t) << (n)))
  ------------------
  737|  16.8M|    PERM_OP(c, d, t, 8, 0x00ff00ffL);
  ------------------
  |  |  145|  16.8M|#define PERM_OP(a, b, t, n, m) ((t) = ((((a) >> (n)) ^ (b)) & (m)), \
  |  |  146|  16.8M|    (b) ^= (t),                                                     \
  |  |  147|  16.8M|    (a) ^= ((t) << (n)))
  ------------------
  738|  16.8M|    PERM_OP(d, c, t, 1, 0x55555555L);
  ------------------
  |  |  145|  16.8M|#define PERM_OP(a, b, t, n, m) ((t) = ((((a) >> (n)) ^ (b)) & (m)), \
  |  |  146|  16.8M|    (b) ^= (t),                                                     \
  |  |  147|  16.8M|    (a) ^= ((t) << (n)))
  ------------------
  739|  16.8M|    d = (((d & 0x000000ffL) << 16L) | (d & 0x0000ff00L) | ((d & 0x00ff0000L) >> 16L) | ((c & 0xf0000000L) >> 4L));
  740|  16.8M|    c &= 0x0fffffffL;
  741|       |
  742|   286M|    for (i = 0; i < ITERATIONS; i++) {
  ------------------
  |  |   28|   286M|#define ITERATIONS 16
  ------------------
  |  Branch (742:17): [True: 269M, False: 16.8M]
  ------------------
  743|   269M|        if (shifts2[i]) {
  ------------------
  |  Branch (743:13): [True: 201M, False: 67.3M]
  ------------------
  744|   201M|            c = ((c >> 2L) | (c << 26L));
  745|   201M|            d = ((d >> 2L) | (d << 26L));
  746|   201M|        } else {
  747|  67.3M|            c = ((c >> 1L) | (c << 27L));
  748|  67.3M|            d = ((d >> 1L) | (d << 27L));
  749|  67.3M|        }
  750|   269M|        c &= 0x0fffffffL;
  751|   269M|        d &= 0x0fffffffL;
  752|       |        /*
  753|       |         * could be a few less shifts but I am to lazy at this point in time
  754|       |         * to investigate
  755|       |         */
  756|   269M|        s = des_skb[0][(c) & 0x3f] | des_skb[1][((c >> 6L) & 0x03) | ((c >> 7L) & 0x3c)] | des_skb[2][((c >> 13L) & 0x0f) | ((c >> 14L) & 0x30)] | des_skb[3][((c >> 20L) & 0x01) | ((c >> 21L) & 0x06) | ((c >> 22L) & 0x38)];
  757|   269M|        t = des_skb[4][(d) & 0x3f] | des_skb[5][((d >> 7L) & 0x03) | ((d >> 8L) & 0x3c)] | des_skb[6][(d >> 15L) & 0x3f] | des_skb[7][((d >> 21L) & 0x0f) | ((d >> 22L) & 0x30)];
  758|       |
  759|       |        /* table contained 0213 4657 */
  760|   269M|        t2 = ((t << 16L) | (s & 0x0000ffffL)) & 0xffffffffL;
  761|   269M|        *(k++) = ROTATE(t2, 30) & 0xffffffffL;
  ------------------
  |  |   61|   269M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  ------------------
  762|       |
  763|   269M|        t2 = ((s >> 16L) | (t & 0xffff0000L));
  764|   269M|        *(k++) = ROTATE(t2, 26) & 0xffffffffL;
  ------------------
  |  |   61|   269M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  ------------------
  765|   269M|    }
  766|  16.8M|}

ossl_err_load_DH_strings:
   68|      1|{
   69|      1|#ifndef OPENSSL_NO_ERR
   70|      1|    if (ERR_reason_error_string(DH_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (70:9): [True: 1, False: 0]
  ------------------
   71|      1|        ERR_load_strings_const(DH_str_reasons);
   72|      1|#endif
   73|      1|    return 1;
   74|      1|}

ossl_err_load_DSA_strings:
   46|      1|{
   47|      1|#ifndef OPENSSL_NO_ERR
   48|      1|    if (ERR_reason_error_string(DSA_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (48:9): [True: 1, False: 0]
  ------------------
   49|      1|        ERR_load_strings_const(DSA_str_reasons);
   50|      1|#endif
   51|      1|    return 1;
   52|      1|}

ossl_err_load_DSO_strings:
   50|      1|{
   51|      1|#ifndef OPENSSL_NO_ERR
   52|      1|    if (ERR_reason_error_string(DSO_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (52:9): [True: 1, False: 0]
  ------------------
   53|      1|        ERR_load_strings_const(DSO_str_reasons);
   54|      1|#endif
   55|      1|    return 1;
   56|      1|}

ossl_err_load_EC_strings:
  127|      1|{
  128|      1|#ifndef OPENSSL_NO_ERR
  129|      1|    if (ERR_reason_error_string(EC_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (129:9): [True: 1, False: 0]
  ------------------
  130|      1|        ERR_load_strings_const(EC_str_reasons);
  131|      1|#endif
  132|      1|    return 1;
  133|      1|}

ossl_decoder_store_cache_flush:
  460|      4|{
  461|      4|    OSSL_METHOD_STORE *store = get_decoder_store(libctx);
  462|       |
  463|      4|    if (store != NULL)
  ------------------
  |  Branch (463:9): [True: 4, False: 0]
  ------------------
  464|      4|        return ossl_method_store_cache_flush_all(store);
  465|      0|    return 1;
  466|      4|}
decoder_meth.c:get_decoder_store:
  133|      4|{
  134|      4|    return ossl_lib_ctx_get_data(libctx, OSSL_LIB_CTX_DECODER_STORE_INDEX);
  ------------------
  |  |  108|      4|#define OSSL_LIB_CTX_DECODER_STORE_INDEX 11
  ------------------
  135|      4|}

ossl_decoder_cache_new:
  774|      3|{
  775|      3|    DECODER_CACHE *cache = OPENSSL_malloc(sizeof(*cache));
  ------------------
  |  |  111|      3|    CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  776|       |
  777|      3|    if (cache == NULL)
  ------------------
  |  Branch (777:9): [True: 0, False: 3]
  ------------------
  778|      0|        return NULL;
  779|       |
  780|      3|    cache->lock = CRYPTO_THREAD_lock_new();
  781|      3|    if (cache->lock == NULL) {
  ------------------
  |  Branch (781:9): [True: 0, False: 3]
  ------------------
  782|      0|        OPENSSL_free(cache);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  783|      0|        return NULL;
  784|      0|    }
  785|      3|    cache->hashtable = lh_DECODER_CACHE_ENTRY_new(decoder_cache_entry_hash,
  786|      3|        decoder_cache_entry_cmp);
  787|      3|    if (cache->hashtable == NULL) {
  ------------------
  |  Branch (787:9): [True: 0, False: 3]
  ------------------
  788|      0|        CRYPTO_THREAD_lock_free(cache->lock);
  789|      0|        OPENSSL_free(cache);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  790|      0|        return NULL;
  791|      0|    }
  792|       |
  793|      3|    return cache;
  794|      3|}
ossl_decoder_cache_flush:
  811|      5|{
  812|      5|    DECODER_CACHE *cache
  813|      5|        = ossl_lib_ctx_get_data(libctx, OSSL_LIB_CTX_DECODER_CACHE_INDEX);
  ------------------
  |  |  117|      5|#define OSSL_LIB_CTX_DECODER_CACHE_INDEX 20
  ------------------
  814|       |
  815|      5|    if (cache == NULL)
  ------------------
  |  Branch (815:9): [True: 0, False: 5]
  ------------------
  816|      0|        return 0;
  817|       |
  818|      5|    if (!CRYPTO_THREAD_write_lock(cache->lock)) {
  ------------------
  |  Branch (818:9): [True: 0, False: 5]
  ------------------
  819|      0|        ERR_raise(ERR_LIB_OSSL_DECODER, ERR_R_OSSL_DECODER_LIB);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  820|      0|        return 0;
  821|      0|    }
  822|       |
  823|      5|    lh_DECODER_CACHE_ENTRY_doall(cache->hashtable, decoder_cache_entry_free);
  824|      5|    lh_DECODER_CACHE_ENTRY_flush(cache->hashtable);
  825|       |
  826|      5|    CRYPTO_THREAD_unlock(cache->lock);
  827|      5|    return 1;
  828|      5|}

ossl_encoder_store_cache_flush:
  459|      4|{
  460|      4|    OSSL_METHOD_STORE *store = get_encoder_store(libctx);
  461|       |
  462|      4|    if (store != NULL)
  ------------------
  |  Branch (462:9): [True: 4, False: 0]
  ------------------
  463|      4|        return ossl_method_store_cache_flush_all(store);
  464|      0|    return 1;
  465|      4|}
encoder_meth.c:get_encoder_store:
  126|      4|{
  127|      4|    return ossl_lib_ctx_get_data(libctx, OSSL_LIB_CTX_ENCODER_STORE_INDEX);
  ------------------
  |  |  107|      4|#define OSSL_LIB_CTX_ENCODER_STORE_INDEX 10
  ------------------
  128|      4|}

ossl_err_load_ERR_strings:
  264|     35|{
  265|     35|#ifndef OPENSSL_NO_ERR
  266|     35|    if (!RUN_ONCE(&err_string_init, do_err_strings_init))
  ------------------
  |  |  130|     35|    (CRYPTO_THREAD_run_once(once, init##_ossl_) ? init##_ossl_ret_ : 0)
  |  |  ------------------
  |  |  |  Branch (130:6): [True: 35, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (266:9): [True: 0, False: 35]
  ------------------
  267|      0|        return 0;
  268|       |
  269|     35|    err_load_strings(ERR_str_libraries);
  270|     35|    err_load_strings(ERR_str_reasons);
  271|     35|#endif
  272|     35|    return 1;
  273|     35|}
ERR_load_strings_const:
  289|     34|{
  290|     34|#ifndef OPENSSL_NO_ERR
  291|     34|    if (ossl_err_load_ERR_strings() == 0)
  ------------------
  |  Branch (291:9): [True: 0, False: 34]
  ------------------
  292|      0|        return 0;
  293|     34|    err_load_strings(str);
  294|     34|#endif
  295|       |
  296|     34|    return 1;
  297|     34|}
ERR_reason_error_string:
  604|     34|{
  605|     34|#ifndef OPENSSL_NO_ERR
  606|     34|    ERR_STRING_DATA d, *p = NULL;
  607|     34|    unsigned long l, r;
  608|       |
  609|     34|    if (!RUN_ONCE(&err_string_init, do_err_strings_init)) {
  ------------------
  |  |  130|     34|    (CRYPTO_THREAD_run_once(once, init##_ossl_) ? init##_ossl_ret_ : 0)
  |  |  ------------------
  |  |  |  Branch (130:6): [True: 34, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (609:9): [True: 0, False: 34]
  ------------------
  610|      0|        return NULL;
  611|      0|    }
  612|       |
  613|       |    /*
  614|       |     * ERR_reason_error_string() can't safely return system error strings,
  615|       |     * since openssl_strerror_r() needs a buffer for thread safety, and we
  616|       |     * haven't got one that would serve any sensible purpose.
  617|       |     */
  618|     34|    if (ERR_SYSTEM_ERROR(e))
  ------------------
  |  |  222|     34|#define ERR_SYSTEM_ERROR(errcode) (((errcode) & ERR_SYSTEM_FLAG) != 0)
  |  |  ------------------
  |  |  |  |  201|     34|#define ERR_SYSTEM_FLAG ((unsigned int)INT_MAX + 1)
  |  |  ------------------
  |  |  |  Branch (222:35): [True: 0, False: 34]
  |  |  ------------------
  ------------------
  619|      0|        return NULL;
  620|       |
  621|     34|    l = ERR_GET_LIB(e);
  622|     34|    r = ERR_GET_REASON(e);
  623|     34|    d.error = ERR_PACK(l, 0, r);
  ------------------
  |  |  262|     34|    ((((unsigned long)(lib) & ERR_LIB_MASK) << ERR_LIB_OFFSET) | (((unsigned long)(reason) & ERR_REASON_MASK)))
  |  |  ------------------
  |  |  |  |  210|     34|#define ERR_LIB_MASK 0xFF
  |  |  ------------------
  |  |                   ((((unsigned long)(lib) & ERR_LIB_MASK) << ERR_LIB_OFFSET) | (((unsigned long)(reason) & ERR_REASON_MASK)))
  |  |  ------------------
  |  |  |  |  209|     34|#define ERR_LIB_OFFSET 23L
  |  |  ------------------
  |  |                   ((((unsigned long)(lib) & ERR_LIB_MASK) << ERR_LIB_OFFSET) | (((unsigned long)(reason) & ERR_REASON_MASK)))
  |  |  ------------------
  |  |  |  |  213|     34|#define ERR_REASON_MASK 0X7FFFFF
  |  |  ------------------
  ------------------
  624|     34|    p = int_err_get_item(&d);
  625|     34|    if (p == NULL) {
  ------------------
  |  Branch (625:9): [True: 34, False: 0]
  ------------------
  626|     34|        d.error = ERR_PACK(0, 0, r);
  ------------------
  |  |  262|     34|    ((((unsigned long)(lib) & ERR_LIB_MASK) << ERR_LIB_OFFSET) | (((unsigned long)(reason) & ERR_REASON_MASK)))
  |  |  ------------------
  |  |  |  |  210|     34|#define ERR_LIB_MASK 0xFF
  |  |  ------------------
  |  |                   ((((unsigned long)(lib) & ERR_LIB_MASK) << ERR_LIB_OFFSET) | (((unsigned long)(reason) & ERR_REASON_MASK)))
  |  |  ------------------
  |  |  |  |  209|     34|#define ERR_LIB_OFFSET 23L
  |  |  ------------------
  |  |                   ((((unsigned long)(lib) & ERR_LIB_MASK) << ERR_LIB_OFFSET) | (((unsigned long)(reason) & ERR_REASON_MASK)))
  |  |  ------------------
  |  |  |  |  213|     34|#define ERR_REASON_MASK 0X7FFFFF
  |  |  ------------------
  ------------------
  627|     34|        p = int_err_get_item(&d);
  628|     34|    }
  629|     34|    return ((p == NULL) ? NULL : p->string);
  ------------------
  |  Branch (629:13): [True: 34, False: 0]
  ------------------
  630|       |#else
  631|       |    return NULL;
  632|       |#endif
  633|     34|}
ossl_err_get_state_int:
  649|  2.01k|{
  650|  2.01k|    ERR_STATE *state;
  651|  2.01k|    int saveerrno = 0;
  652|       |
  653|  2.01k|    if (save_sys_error)
  ------------------
  |  Branch (653:9): [True: 2.01k, False: 0]
  ------------------
  654|  2.01k|        saveerrno = get_last_sys_error();
  ------------------
  |  |   30|  2.01k|#define get_last_sys_error() errno
  ------------------
  655|       |
  656|  2.01k|    if (!OPENSSL_init_crypto(OPENSSL_INIT_BASE_ONLY, NULL))
  ------------------
  |  |   31|  2.01k|#define OPENSSL_INIT_BASE_ONLY 0x00040000L
  ------------------
  |  Branch (656:9): [True: 0, False: 2.01k]
  ------------------
  657|      0|        return NULL;
  658|       |
  659|  2.01k|    state = CRYPTO_THREAD_get_local_ex(CRYPTO_THREAD_LOCAL_ERR_KEY,
  660|  2.01k|        CRYPTO_THREAD_NO_CONTEXT);
  ------------------
  |  |   44|  2.01k|#define CRYPTO_THREAD_NO_CONTEXT (void *)1
  ------------------
  661|  2.01k|    if (state == (ERR_STATE *)-1)
  ------------------
  |  Branch (661:9): [True: 0, False: 2.01k]
  ------------------
  662|      0|        return NULL;
  663|       |
  664|  2.01k|    if (state == NULL) {
  ------------------
  |  Branch (664:9): [True: 1, False: 2.01k]
  ------------------
  665|      1|        if (!CRYPTO_THREAD_set_local_ex(CRYPTO_THREAD_LOCAL_ERR_KEY,
  ------------------
  |  Branch (665:13): [True: 0, False: 1]
  ------------------
  666|      1|                CRYPTO_THREAD_NO_CONTEXT, (ERR_STATE *)-1))
  ------------------
  |  |   44|      1|#define CRYPTO_THREAD_NO_CONTEXT (void *)1
  ------------------
  667|      0|            return NULL;
  668|       |
  669|      1|        state = OSSL_ERR_STATE_new();
  670|      1|        if (state == NULL) {
  ------------------
  |  Branch (670:13): [True: 0, False: 1]
  ------------------
  671|      0|            CRYPTO_THREAD_set_local_ex(CRYPTO_THREAD_LOCAL_ERR_KEY,
  672|      0|                CRYPTO_THREAD_NO_CONTEXT, NULL);
  ------------------
  |  |   44|      0|#define CRYPTO_THREAD_NO_CONTEXT (void *)1
  ------------------
  673|      0|            return NULL;
  674|      0|        }
  675|       |
  676|      1|        if (!ossl_init_thread_start(NULL, NULL, err_delete_thread_state)
  ------------------
  |  Branch (676:13): [True: 0, False: 1]
  ------------------
  677|      1|            || !CRYPTO_THREAD_set_local_ex(CRYPTO_THREAD_LOCAL_ERR_KEY,
  ------------------
  |  Branch (677:16): [True: 0, False: 1]
  ------------------
  678|      1|                CRYPTO_THREAD_NO_CONTEXT, state)) {
  ------------------
  |  |   44|      1|#define CRYPTO_THREAD_NO_CONTEXT (void *)1
  ------------------
  679|      0|            OSSL_ERR_STATE_free(state);
  680|      0|            CRYPTO_THREAD_set_local_ex(CRYPTO_THREAD_LOCAL_ERR_KEY,
  681|      0|                CRYPTO_THREAD_NO_CONTEXT, NULL);
  ------------------
  |  |   44|      0|#define CRYPTO_THREAD_NO_CONTEXT (void *)1
  ------------------
  682|      0|            return NULL;
  683|      0|        }
  684|       |
  685|       |        /* Ignore failures from these */
  686|      1|        OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL);
  ------------------
  |  |  548|      1|#define OPENSSL_INIT_LOAD_CRYPTO_STRINGS 0x00000002L
  ------------------
  687|      1|    }
  688|       |
  689|  2.01k|    if (save_sys_error)
  ------------------
  |  Branch (689:9): [True: 2.01k, False: 0]
  ------------------
  690|       |        set_sys_error(saveerrno);
  ------------------
  |  |   32|  2.01k|#define set_sys_error(e) errno = (e)
  ------------------
  691|  2.01k|    return state;
  692|  2.01k|}
err_shelve_state:
  699|      1|{
  700|      1|    int saveerrno = get_last_sys_error();
  ------------------
  |  |   30|      1|#define get_last_sys_error() errno
  ------------------
  701|       |
  702|       |    /*
  703|       |     * Note, at present our only caller is OPENSSL_init_crypto(), indirectly
  704|       |     * via ossl_init_load_crypto_nodelete(), by which point the requested
  705|       |     * "base" initialization has already been performed, so the below call is a
  706|       |     * NOOP, that re-enters OPENSSL_init_crypto() only to quickly return.
  707|       |     *
  708|       |     * If are no other valid callers of this function, the call below can be
  709|       |     * removed, avoiding the re-entry into OPENSSL_init_crypto().  If there are
  710|       |     * potential uses that are not from inside OPENSSL_init_crypto(), then this
  711|       |     * call is needed, but some care is required to make sure that the re-entry
  712|       |     * remains a NOOP.
  713|       |     */
  714|      1|    if (!OPENSSL_init_crypto(OPENSSL_INIT_BASE_ONLY, NULL))
  ------------------
  |  |   31|      1|#define OPENSSL_INIT_BASE_ONLY 0x00040000L
  ------------------
  |  Branch (714:9): [True: 0, False: 1]
  ------------------
  715|      0|        return 0;
  716|       |
  717|      1|    *state = CRYPTO_THREAD_get_local_ex(CRYPTO_THREAD_LOCAL_ERR_KEY,
  718|      1|        CRYPTO_THREAD_NO_CONTEXT);
  ------------------
  |  |   44|      1|#define CRYPTO_THREAD_NO_CONTEXT (void *)1
  ------------------
  719|      1|    if (!CRYPTO_THREAD_set_local_ex(CRYPTO_THREAD_LOCAL_ERR_KEY,
  ------------------
  |  Branch (719:9): [True: 0, False: 1]
  ------------------
  720|      1|            CRYPTO_THREAD_NO_CONTEXT, (ERR_STATE *)-1))
  ------------------
  |  |   44|      1|#define CRYPTO_THREAD_NO_CONTEXT (void *)1
  ------------------
  721|      0|        return 0;
  722|       |
  723|      1|    set_sys_error(saveerrno);
  ------------------
  |  |   32|      1|#define set_sys_error(e) errno = (e)
  ------------------
  724|      1|    return 1;
  725|      1|}
err_unshelve_state:
  732|      1|{
  733|      1|    if (state != (void *)-1)
  ------------------
  |  Branch (733:9): [True: 1, False: 0]
  ------------------
  734|      1|        CRYPTO_THREAD_set_local_ex(CRYPTO_THREAD_LOCAL_ERR_KEY,
  735|      1|            CRYPTO_THREAD_NO_CONTEXT, (ERR_STATE *)state);
  ------------------
  |  |   44|      1|#define CRYPTO_THREAD_NO_CONTEXT (void *)1
  ------------------
  736|      1|}
ERR_get_next_error_library:
  739|      4|{
  740|      4|    int ret;
  741|       |
  742|      4|    if (!RUN_ONCE(&err_string_init, do_err_strings_init))
  ------------------
  |  |  130|      4|    (CRYPTO_THREAD_run_once(once, init##_ossl_) ? init##_ossl_ret_ : 0)
  |  |  ------------------
  |  |  |  Branch (130:6): [True: 4, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (742:9): [True: 0, False: 4]
  ------------------
  743|      0|        return 0;
  744|       |
  745|      4|    if (!CRYPTO_THREAD_write_lock(err_string_lock))
  ------------------
  |  Branch (745:9): [True: 0, False: 4]
  ------------------
  746|      0|        return 0;
  747|      4|    ret = int_err_library_number++;
  748|      4|    CRYPTO_THREAD_unlock(err_string_lock);
  749|      4|    return ret;
  750|      4|}
err.c:do_err_strings_init:
  208|      1|{
  209|      1|    if (!OPENSSL_init_crypto(OPENSSL_INIT_BASE_ONLY, NULL))
  ------------------
  |  |   31|      1|#define OPENSSL_INIT_BASE_ONLY 0x00040000L
  ------------------
  |  Branch (209:9): [True: 0, False: 1]
  ------------------
  210|      0|        return 0;
  211|      1|    err_string_lock = CRYPTO_THREAD_lock_new();
  212|      1|    if (err_string_lock == NULL)
  ------------------
  |  Branch (212:9): [True: 0, False: 1]
  ------------------
  213|      0|        return 0;
  214|      1|#ifndef OPENSSL_NO_ERR
  215|      1|    int_error_hash = lh_ERR_STRING_DATA_new(err_string_data_hash,
  ------------------
  |  |  330|      1|#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp)), lh_ERR_STRING_DATA_hash_thunk, lh_ERR_STRING_DATA_comp_thunk, lh_ERR_STRING_DATA_doall_thunk, lh_ERR_STRING_DATA_doall_arg_thunk))
  ------------------
  216|      1|        err_string_data_cmp);
  217|      1|    if (int_error_hash == NULL) {
  ------------------
  |  Branch (217:9): [True: 0, False: 1]
  ------------------
  218|      0|        CRYPTO_THREAD_lock_free(err_string_lock);
  219|      0|        err_string_lock = NULL;
  220|      0|        return 0;
  221|      0|    }
  222|      1|#endif
  223|      1|    return 1;
  224|      1|}
err.c:err_string_data_hash:
  166|  4.38k|{
  167|  4.38k|    unsigned long ret, l;
  168|       |
  169|  4.38k|    l = a->error;
  170|  4.38k|    ret = l ^ ERR_GET_LIB(l);
  171|  4.38k|    return (ret ^ ret % 19 * 13);
  172|  4.38k|}
err.c:err_string_data_cmp:
  176|  2.94k|{
  177|  2.94k|    if (a->error == b->error)
  ------------------
  |  Branch (177:9): [True: 2.78k, False: 156]
  ------------------
  178|  2.78k|        return 0;
  179|    156|    return a->error > b->error ? 1 : -1;
  ------------------
  |  Branch (179:12): [True: 82, False: 74]
  ------------------
  180|  2.94k|}
err.c:err_load_strings:
  252|    104|{
  253|    104|    if (!CRYPTO_THREAD_write_lock(err_string_lock))
  ------------------
  |  Branch (253:9): [True: 0, False: 104]
  ------------------
  254|      0|        return 0;
  255|  4.42k|    for (; str->error; str++)
  ------------------
  |  Branch (255:12): [True: 4.31k, False: 104]
  ------------------
  256|  4.31k|        (void)lh_ERR_STRING_DATA_insert(int_error_hash,
  ------------------
  |  |  333|  4.42k|#define lh_ERR_STRING_DATA_insert(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_insert(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_plain_type(ptr)))
  ------------------
  257|    104|            (ERR_STRING_DATA *)str);
  258|    104|    CRYPTO_THREAD_unlock(err_string_lock);
  259|    104|    return 1;
  260|    104|}
err.c:int_err_get_item:
  183|     68|{
  184|     68|    ERR_STRING_DATA *p = NULL;
  185|       |
  186|     68|    if (!CRYPTO_THREAD_read_lock(err_string_lock))
  ------------------
  |  Branch (186:9): [True: 0, False: 68]
  ------------------
  187|      0|        return NULL;
  188|     68|    p = lh_ERR_STRING_DATA_retrieve(int_error_hash, d);
  ------------------
  |  |  335|     68|#define lh_ERR_STRING_DATA_retrieve(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_retrieve(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_const_ERR_STRING_DATA_lh_plain_type(ptr)))
  ------------------
  189|     68|    CRYPTO_THREAD_unlock(err_string_lock);
  190|       |
  191|     68|    return p;
  192|     68|}

ossl_err_load_crypto_strings:
   49|      1|{
   50|      1|    if (0
  ------------------
  |  Branch (50:9): [Folded, False: 1]
  ------------------
   51|      1|#ifndef OPENSSL_NO_ERR
   52|      1|        || ossl_err_load_ERR_strings() == 0 /* include error strings for SYSerr */
  ------------------
  |  Branch (52:12): [True: 0, False: 1]
  ------------------
   53|      1|        || ossl_err_load_BN_strings() == 0
  ------------------
  |  Branch (53:12): [True: 0, False: 1]
  ------------------
   54|      1|        || ossl_err_load_RSA_strings() == 0
  ------------------
  |  Branch (54:12): [True: 0, False: 1]
  ------------------
   55|      1|#ifndef OPENSSL_NO_DH
   56|      1|        || ossl_err_load_DH_strings() == 0
  ------------------
  |  Branch (56:12): [True: 0, False: 1]
  ------------------
   57|      1|#endif
   58|      1|        || ossl_err_load_EVP_strings() == 0
  ------------------
  |  Branch (58:12): [True: 0, False: 1]
  ------------------
   59|      1|        || ossl_err_load_BUF_strings() == 0
  ------------------
  |  Branch (59:12): [True: 0, False: 1]
  ------------------
   60|      1|        || ossl_err_load_OBJ_strings() == 0
  ------------------
  |  Branch (60:12): [True: 0, False: 1]
  ------------------
   61|      1|        || ossl_err_load_PEM_strings() == 0
  ------------------
  |  Branch (61:12): [True: 0, False: 1]
  ------------------
   62|      1|#ifndef OPENSSL_NO_DSA
   63|      1|        || ossl_err_load_DSA_strings() == 0
  ------------------
  |  Branch (63:12): [True: 0, False: 1]
  ------------------
   64|      1|#endif
   65|      1|        || ossl_err_load_X509_strings() == 0
  ------------------
  |  Branch (65:12): [True: 0, False: 1]
  ------------------
   66|      1|        || ossl_err_load_ASN1_strings() == 0
  ------------------
  |  Branch (66:12): [True: 0, False: 1]
  ------------------
   67|      1|        || ossl_err_load_CONF_strings() == 0
  ------------------
  |  Branch (67:12): [True: 0, False: 1]
  ------------------
   68|      1|        || ossl_err_load_CRYPTO_strings() == 0
  ------------------
  |  Branch (68:12): [True: 0, False: 1]
  ------------------
   69|      1|#ifndef OPENSSL_NO_COMP
   70|      1|        || ossl_err_load_COMP_strings() == 0
  ------------------
  |  Branch (70:12): [True: 0, False: 1]
  ------------------
   71|      1|#endif
   72|      1|#ifndef OPENSSL_NO_EC
   73|      1|        || ossl_err_load_EC_strings() == 0
  ------------------
  |  Branch (73:12): [True: 0, False: 1]
  ------------------
   74|      1|#endif
   75|       |        /* skip ossl_err_load_SSL_strings() because it is not in this library */
   76|      1|        || ossl_err_load_BIO_strings() == 0
  ------------------
  |  Branch (76:12): [True: 0, False: 1]
  ------------------
   77|      1|        || ossl_err_load_PKCS7_strings() == 0
  ------------------
  |  Branch (77:12): [True: 0, False: 1]
  ------------------
   78|      1|        || ossl_err_load_X509V3_strings() == 0
  ------------------
  |  Branch (78:12): [True: 0, False: 1]
  ------------------
   79|      1|        || ossl_err_load_PKCS12_strings() == 0
  ------------------
  |  Branch (79:12): [True: 0, False: 1]
  ------------------
   80|      1|        || ossl_err_load_RAND_strings() == 0
  ------------------
  |  Branch (80:12): [True: 0, False: 1]
  ------------------
   81|      1|        || ossl_err_load_DSO_strings() == 0
  ------------------
  |  Branch (81:12): [True: 0, False: 1]
  ------------------
   82|      1|#ifndef OPENSSL_NO_TS
   83|      1|        || ossl_err_load_TS_strings() == 0
  ------------------
  |  Branch (83:12): [True: 0, False: 1]
  ------------------
   84|      1|#endif
   85|      1|#ifndef OPENSSL_NO_HTTP
   86|      1|        || ossl_err_load_HTTP_strings() == 0
  ------------------
  |  Branch (86:12): [True: 0, False: 1]
  ------------------
   87|      1|#endif
   88|      1|#ifndef OPENSSL_NO_OCSP
   89|      1|        || ossl_err_load_OCSP_strings() == 0
  ------------------
  |  Branch (89:12): [True: 0, False: 1]
  ------------------
   90|      1|#endif
   91|      1|        || ossl_err_load_UI_strings() == 0
  ------------------
  |  Branch (91:12): [True: 0, False: 1]
  ------------------
   92|      1|#ifndef OPENSSL_NO_CMS
   93|      1|        || ossl_err_load_CMS_strings() == 0
  ------------------
  |  Branch (93:12): [True: 0, False: 1]
  ------------------
   94|      1|#endif
   95|      1|#ifndef OPENSSL_NO_CRMF
   96|      1|        || ossl_err_load_CRMF_strings() == 0
  ------------------
  |  Branch (96:12): [True: 0, False: 1]
  ------------------
   97|      1|        || ossl_err_load_CMP_strings() == 0
  ------------------
  |  Branch (97:12): [True: 0, False: 1]
  ------------------
   98|      1|#endif
   99|      1|#ifndef OPENSSL_NO_CT
  100|      1|        || ossl_err_load_CT_strings() == 0
  ------------------
  |  Branch (100:12): [True: 0, False: 1]
  ------------------
  101|      1|#endif
  102|      1|        || ossl_err_load_ESS_strings() == 0
  ------------------
  |  Branch (102:12): [True: 0, False: 1]
  ------------------
  103|      1|        || ossl_err_load_ASYNC_strings() == 0
  ------------------
  |  Branch (103:12): [True: 0, False: 1]
  ------------------
  104|      1|#ifndef OPENSSL_NO_SM2
  105|      1|        || ossl_err_load_SM2_strings() == 0
  ------------------
  |  Branch (105:12): [True: 0, False: 1]
  ------------------
  106|      1|#endif
  107|      1|        || ossl_err_load_OSSL_STORE_strings() == 0
  ------------------
  |  Branch (107:12): [True: 0, False: 1]
  ------------------
  108|      1|        || ossl_err_load_PROP_strings() == 0
  ------------------
  |  Branch (108:12): [True: 0, False: 1]
  ------------------
  109|      1|        || ossl_err_load_PROV_strings() == 0
  ------------------
  |  Branch (109:12): [True: 0, False: 1]
  ------------------
  110|      1|#endif
  111|      1|    )
  112|      0|        return 0;
  113|       |
  114|      1|    return 1;
  115|      1|}

ERR_new:
   15|    672|{
   16|    672|    ERR_STATE *es;
   17|       |
   18|    672|    es = ossl_err_get_state_int(1);
   19|    672|    if (es == NULL)
  ------------------
  |  Branch (19:9): [True: 0, False: 672]
  ------------------
   20|      0|        return;
   21|       |
   22|       |    /* Allocate a slot */
   23|    672|    err_get_slot(es);
   24|    672|    err_clear(es, es->top, 0);
   25|    672|}
ERR_set_debug:
   28|    672|{
   29|    672|    ERR_STATE *es;
   30|       |
   31|    672|    es = ossl_err_get_state_int(1);
   32|    672|    if (es == NULL)
  ------------------
  |  Branch (32:9): [True: 0, False: 672]
  ------------------
   33|      0|        return;
   34|       |
   35|    672|    err_set_debug(es, es->top, file, line, func);
   36|    672|}
ERR_set_error:
   39|    672|{
   40|    672|    va_list args;
   41|       |
   42|    672|    va_start(args, fmt);
   43|    672|    ERR_vset_error(lib, reason, fmt, args);
   44|       |    va_end(args);
   45|    672|}
ERR_vset_error:
   48|    672|{
   49|    672|    ERR_STATE *es;
   50|    672|    char *buf = NULL;
   51|    672|    size_t buf_size = 0;
   52|    672|    unsigned long flags = 0;
   53|    672|    size_t i;
   54|       |
   55|    672|    es = ossl_err_get_state_int(1);
   56|    672|    if (es == NULL)
  ------------------
  |  Branch (56:9): [True: 0, False: 672]
  ------------------
   57|      0|        return;
   58|    672|    i = es->top;
   59|       |
   60|    672|    if (fmt != NULL) {
  ------------------
  |  Branch (60:9): [True: 672, False: 0]
  ------------------
   61|    672|        int printed_len = 0;
   62|    672|        char *rbuf = NULL;
   63|       |
   64|    672|        buf = es->err_data[i];
   65|    672|        buf_size = es->err_data_size[i];
   66|       |
   67|       |        /*
   68|       |         * To protect the string we just grabbed from tampering by other
   69|       |         * functions we may call, or to protect them from freeing a pointer
   70|       |         * that may no longer be valid at that point, we clear away the
   71|       |         * data pointer and the flags.  We will set them again at the end
   72|       |         * of this function.
   73|       |         */
   74|    672|        es->err_data[i] = NULL;
   75|    672|        es->err_data_flags[i] = 0;
   76|       |
   77|       |        /*
   78|       |         * Try to maximize the space available.  If that fails, we use what
   79|       |         * we have.
   80|       |         */
   81|    672|        if (buf_size < ERR_MAX_DATA_SIZE
  ------------------
  |  |  348|  1.34k|#define ERR_MAX_DATA_SIZE 1024
  ------------------
  |  Branch (81:13): [True: 672, False: 0]
  ------------------
   82|    672|            && (rbuf = OPENSSL_realloc(buf, ERR_MAX_DATA_SIZE)) != NULL) {
  ------------------
  |  |  125|    672|    CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  |  Branch (82:16): [True: 672, False: 0]
  ------------------
   83|    672|            buf = rbuf;
   84|    672|            buf_size = ERR_MAX_DATA_SIZE;
  ------------------
  |  |  348|    672|#define ERR_MAX_DATA_SIZE 1024
  ------------------
   85|    672|        }
   86|       |
   87|    672|        if (buf != NULL) {
  ------------------
  |  Branch (87:13): [True: 672, False: 0]
  ------------------
   88|    672|            printed_len = BIO_vsnprintf(buf, buf_size, fmt, args);
   89|    672|        }
   90|    672|        if (printed_len < 0)
  ------------------
  |  Branch (90:13): [True: 0, False: 672]
  ------------------
   91|      0|            printed_len = 0;
   92|    672|        if (buf != NULL)
  ------------------
  |  Branch (92:13): [True: 672, False: 0]
  ------------------
   93|    672|            buf[printed_len] = '\0';
   94|       |
   95|       |        /*
   96|       |         * Try to reduce the size, but only if we maximized above.  If that
   97|       |         * fails, we keep what we have.
   98|       |         * (According to documentation, realloc leaves the old buffer untouched
   99|       |         * if it fails)
  100|       |         */
  101|    672|        if ((rbuf = OPENSSL_realloc(buf, printed_len + 1)) != NULL) {
  ------------------
  |  |  125|    672|    CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  |  Branch (101:13): [True: 672, False: 0]
  ------------------
  102|    672|            buf = rbuf;
  103|    672|            buf_size = printed_len + 1;
  104|    672|            buf[printed_len] = '\0';
  105|    672|        }
  106|       |
  107|    672|        if (buf != NULL)
  ------------------
  |  Branch (107:13): [True: 672, False: 0]
  ------------------
  108|    672|            flags = ERR_TXT_MALLOCED | ERR_TXT_STRING;
  ------------------
  |  |   50|    672|#define ERR_TXT_MALLOCED 0x01
  ------------------
                          flags = ERR_TXT_MALLOCED | ERR_TXT_STRING;
  ------------------
  |  |   51|    672|#define ERR_TXT_STRING 0x02
  ------------------
  109|    672|    }
  110|       |
  111|    672|    err_clear_data(es, es->top, 0);
  112|    672|    err_set_error(es, es->top, lib, reason);
  113|    672|    if (fmt != NULL)
  ------------------
  |  Branch (113:9): [True: 672, False: 0]
  ------------------
  114|    672|        err_set_data(es, es->top, buf, buf_size, flags);
  115|    672|}

err_blocks.c:err_get_slot:
   35|    672|{
   36|    672|    es->top = (es->top + 1) % ERR_NUM_ERRORS;
  ------------------
  |  |   14|    672|#define ERR_NUM_ERRORS 16
  ------------------
   37|    672|    if (es->top == es->bottom)
  ------------------
  |  Branch (37:9): [True: 657, False: 15]
  ------------------
   38|    657|        es->bottom = (es->bottom + 1) % ERR_NUM_ERRORS;
  ------------------
  |  |   14|    657|#define ERR_NUM_ERRORS 16
  ------------------
   39|    672|}
err_blocks.c:err_clear:
  106|    672|{
  107|    672|    err_clear_data(es, i, (deall));
  108|    672|    es->err_marks[i] = 0;
  109|    672|    es->err_flags[i] = 0;
  110|    672|    es->err_buffer[i] = 0;
  111|    672|    es->err_line[i] = -1;
  112|    672|    OPENSSL_free(es->err_file[i]);
  ------------------
  |  |  136|    672|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  113|    672|    es->err_file[i] = NULL;
  114|    672|    OPENSSL_free(es->err_func[i]);
  ------------------
  |  |  136|    672|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  115|       |    es->err_func[i] = NULL;
  116|    672|}
err_blocks.c:err_set_debug:
   71|    672|{
   72|       |    /*
   73|       |     * We dup the file and fn strings because they may be provider owned. If the
   74|       |     * provider gets unloaded, they may not be valid anymore.
   75|       |     */
   76|    672|    OPENSSL_free(es->err_file[i]);
  ------------------
  |  |  136|    672|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   77|    672|    if (file == NULL || file[0] == '\0')
  ------------------
  |  Branch (77:9): [True: 0, False: 672]
  |  Branch (77:25): [True: 0, False: 672]
  ------------------
   78|      0|        es->err_file[i] = NULL;
   79|    672|    else if ((es->err_file[i] = CRYPTO_malloc(strlen(file) + 1,
  ------------------
  |  Branch (79:14): [True: 672, False: 0]
  ------------------
   80|    672|                  NULL, 0))
   81|    672|        != NULL)
   82|       |        /* We cannot use OPENSSL_strdup due to possible recursion */
   83|    672|        strcpy(es->err_file[i], file);
   84|       |
   85|    672|    es->err_line[i] = line;
   86|    672|    OPENSSL_free(es->err_func[i]);
  ------------------
  |  |  136|    672|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   87|    672|    if (fn == NULL || fn[0] == '\0')
  ------------------
  |  Branch (87:9): [True: 0, False: 672]
  |  Branch (87:23): [True: 0, False: 672]
  ------------------
   88|      0|        es->err_func[i] = NULL;
   89|    672|    else if ((es->err_func[i] = CRYPTO_malloc(strlen(fn) + 1,
  ------------------
  |  Branch (89:14): [True: 672, False: 0]
  ------------------
   90|    672|                  NULL, 0))
   91|    672|        != NULL)
   92|    672|        strcpy(es->err_func[i], fn);
   93|    672|}
err_blocks.c:err_clear_data:
   42|  1.34k|{
   43|  1.34k|    if (es->err_data_flags[i] & ERR_TXT_MALLOCED) {
  ------------------
  |  |   50|  1.34k|#define ERR_TXT_MALLOCED 0x01
  ------------------
  |  Branch (43:9): [True: 656, False: 688]
  ------------------
   44|    656|        if (deall) {
  ------------------
  |  Branch (44:13): [True: 0, False: 656]
  ------------------
   45|      0|            OPENSSL_free(es->err_data[i]);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   46|      0|            es->err_data[i] = NULL;
   47|      0|            es->err_data_size[i] = 0;
   48|      0|            es->err_data_flags[i] = 0;
   49|    656|        } else if (es->err_data[i] != NULL) {
  ------------------
  |  Branch (49:20): [True: 656, False: 0]
  ------------------
   50|    656|            es->err_data[i][0] = '\0';
   51|    656|            es->err_data_flags[i] = ERR_TXT_MALLOCED;
  ------------------
  |  |   50|    656|#define ERR_TXT_MALLOCED 0x01
  ------------------
   52|    656|        }
   53|    688|    } else {
   54|       |        es->err_data[i] = NULL;
   55|    688|        es->err_data_size[i] = 0;
   56|    688|        es->err_data_flags[i] = 0;
   57|    688|    }
   58|  1.34k|}
err_blocks.c:err_set_error:
   62|    672|{
   63|    672|    es->err_buffer[i] = lib == ERR_LIB_SYS
  ------------------
  |  |   55|    672|#define ERR_LIB_SYS 2
  ------------------
  |  Branch (63:25): [True: 0, False: 672]
  ------------------
   64|    672|        ? (unsigned int)(ERR_SYSTEM_FLAG | reason)
  ------------------
  |  |  201|      0|#define ERR_SYSTEM_FLAG ((unsigned int)INT_MAX + 1)
  ------------------
   65|    672|        : ERR_PACK(lib, 0, reason);
  ------------------
  |  |  262|  1.34k|    ((((unsigned long)(lib) & ERR_LIB_MASK) << ERR_LIB_OFFSET) | (((unsigned long)(reason) & ERR_REASON_MASK)))
  |  |  ------------------
  |  |  |  |  210|    672|#define ERR_LIB_MASK 0xFF
  |  |  ------------------
  |  |                   ((((unsigned long)(lib) & ERR_LIB_MASK) << ERR_LIB_OFFSET) | (((unsigned long)(reason) & ERR_REASON_MASK)))
  |  |  ------------------
  |  |  |  |  209|    672|#define ERR_LIB_OFFSET 23L
  |  |  ------------------
  |  |                   ((((unsigned long)(lib) & ERR_LIB_MASK) << ERR_LIB_OFFSET) | (((unsigned long)(reason) & ERR_REASON_MASK)))
  |  |  ------------------
  |  |  |  |  213|    672|#define ERR_REASON_MASK 0X7FFFFF
  |  |  ------------------
  ------------------
   66|    672|}
err_blocks.c:err_set_data:
   97|    672|{
   98|    672|    if ((es->err_data_flags[i] & ERR_TXT_MALLOCED) != 0)
  ------------------
  |  |   50|    672|#define ERR_TXT_MALLOCED 0x01
  ------------------
  |  Branch (98:9): [True: 0, False: 672]
  ------------------
   99|      0|        OPENSSL_free(es->err_data[i]);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  100|    672|    es->err_data[i] = data;
  101|    672|    es->err_data_size[i] = datasz;
  102|    672|    es->err_data_flags[i] = flags;
  103|    672|}

OSSL_ERR_STATE_new:
   20|      1|{
   21|       |    return CRYPTO_zalloc(sizeof(ERR_STATE), NULL, 0);
   22|      1|}

ossl_err_load_ESS_strings:
   42|      1|{
   43|      1|#ifndef OPENSSL_NO_ERR
   44|      1|    if (ERR_reason_error_string(ESS_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (44:9): [True: 1, False: 0]
  ------------------
   45|      1|        ERR_load_strings_const(ESS_str_reasons);
   46|      1|#endif
   47|      1|    return 1;
   48|      1|}

openssl_add_all_ciphers_int:
   18|      1|{
   19|       |
   20|      1|#ifndef OPENSSL_NO_DES
   21|      1|    EVP_add_cipher(EVP_des_cfb());
  ------------------
  |  |  910|      1|#define EVP_des_cfb EVP_des_cfb64
  ------------------
   22|      1|    EVP_add_cipher(EVP_des_cfb1());
   23|      1|    EVP_add_cipher(EVP_des_cfb8());
   24|      1|    EVP_add_cipher(EVP_des_ede_cfb());
  ------------------
  |  |  914|      1|#define EVP_des_ede_cfb EVP_des_ede_cfb64
  ------------------
   25|      1|    EVP_add_cipher(EVP_des_ede3_cfb());
  ------------------
  |  |  916|      1|#define EVP_des_ede3_cfb EVP_des_ede3_cfb64
  ------------------
   26|      1|    EVP_add_cipher(EVP_des_ede3_cfb1());
   27|      1|    EVP_add_cipher(EVP_des_ede3_cfb8());
   28|       |
   29|      1|    EVP_add_cipher(EVP_des_ofb());
   30|      1|    EVP_add_cipher(EVP_des_ede_ofb());
   31|      1|    EVP_add_cipher(EVP_des_ede3_ofb());
   32|       |
   33|      1|    EVP_add_cipher(EVP_desx_cbc());
   34|      1|    EVP_add_cipher_alias(SN_desx_cbc, "DESX");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
   35|      1|    EVP_add_cipher_alias(SN_desx_cbc, "desx");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
   36|       |
   37|      1|    EVP_add_cipher(EVP_des_cbc());
   38|      1|    EVP_add_cipher_alias(SN_des_cbc, "DES");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
   39|      1|    EVP_add_cipher_alias(SN_des_cbc, "des");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
   40|      1|    EVP_add_cipher(EVP_des_ede_cbc());
   41|      1|    EVP_add_cipher(EVP_des_ede3_cbc());
   42|      1|    EVP_add_cipher_alias(SN_des_ede3_cbc, "DES3");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
   43|      1|    EVP_add_cipher_alias(SN_des_ede3_cbc, "des3");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
   44|       |
   45|      1|    EVP_add_cipher(EVP_des_ecb());
   46|      1|    EVP_add_cipher(EVP_des_ede());
   47|      1|    EVP_add_cipher_alias(SN_des_ede_ecb, "DES-EDE-ECB");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
   48|      1|    EVP_add_cipher_alias(SN_des_ede_ecb, "des-ede-ecb");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
   49|      1|    EVP_add_cipher(EVP_des_ede3());
   50|      1|    EVP_add_cipher_alias(SN_des_ede3_ecb, "DES-EDE3-ECB");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
   51|      1|    EVP_add_cipher_alias(SN_des_ede3_ecb, "des-ede3-ecb");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
   52|      1|    EVP_add_cipher(EVP_des_ede3_wrap());
   53|      1|    EVP_add_cipher_alias(SN_id_smime_alg_CMS3DESwrap, "des3-wrap");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
   54|      1|#endif
   55|       |
   56|      1|#ifndef OPENSSL_NO_RC4
   57|      1|    EVP_add_cipher(EVP_rc4());
   58|      1|    EVP_add_cipher(EVP_rc4_40());
   59|      1|#ifndef OPENSSL_NO_MD5
   60|      1|    EVP_add_cipher(EVP_rc4_hmac_md5());
   61|      1|#endif
   62|      1|#endif
   63|       |
   64|      1|#ifndef OPENSSL_NO_IDEA
   65|      1|    EVP_add_cipher(EVP_idea_ecb());
   66|      1|    EVP_add_cipher(EVP_idea_cfb());
  ------------------
  |  |  943|      1|#define EVP_idea_cfb EVP_idea_cfb64
  ------------------
   67|      1|    EVP_add_cipher(EVP_idea_ofb());
   68|      1|    EVP_add_cipher(EVP_idea_cbc());
   69|      1|    EVP_add_cipher_alias(SN_idea_cbc, "IDEA");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
   70|      1|    EVP_add_cipher_alias(SN_idea_cbc, "idea");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
   71|      1|#endif
   72|       |
   73|      1|#ifndef OPENSSL_NO_SEED
   74|      1|    EVP_add_cipher(EVP_seed_ecb());
   75|      1|    EVP_add_cipher(EVP_seed_cfb());
  ------------------
  |  | 1097|      1|#define EVP_seed_cfb EVP_seed_cfb128
  ------------------
   76|      1|    EVP_add_cipher(EVP_seed_ofb());
   77|      1|    EVP_add_cipher(EVP_seed_cbc());
   78|      1|    EVP_add_cipher_alias(SN_seed_cbc, "SEED");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
   79|      1|    EVP_add_cipher_alias(SN_seed_cbc, "seed");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
   80|      1|#endif
   81|       |
   82|      1|#ifndef OPENSSL_NO_SM4
   83|      1|    EVP_add_cipher(EVP_sm4_ecb());
   84|      1|    EVP_add_cipher(EVP_sm4_cbc());
   85|      1|    EVP_add_cipher(EVP_sm4_cfb());
  ------------------
  |  | 1105|      1|#define EVP_sm4_cfb EVP_sm4_cfb128
  ------------------
   86|      1|    EVP_add_cipher(EVP_sm4_ofb());
   87|      1|    EVP_add_cipher(EVP_sm4_ctr());
   88|      1|    EVP_add_cipher_alias(SN_sm4_cbc, "SM4");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
   89|      1|    EVP_add_cipher_alias(SN_sm4_cbc, "sm4");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
   90|      1|#endif
   91|       |
   92|      1|#ifndef OPENSSL_NO_RC2
   93|      1|    EVP_add_cipher(EVP_rc2_ecb());
   94|      1|    EVP_add_cipher(EVP_rc2_cfb());
  ------------------
  |  |  953|      1|#define EVP_rc2_cfb EVP_rc2_cfb64
  ------------------
   95|      1|    EVP_add_cipher(EVP_rc2_ofb());
   96|      1|    EVP_add_cipher(EVP_rc2_cbc());
   97|      1|    EVP_add_cipher(EVP_rc2_40_cbc());
   98|      1|    EVP_add_cipher(EVP_rc2_64_cbc());
   99|      1|    EVP_add_cipher_alias(SN_rc2_cbc, "RC2");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  100|      1|    EVP_add_cipher_alias(SN_rc2_cbc, "rc2");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  101|      1|    EVP_add_cipher_alias(SN_rc2_cbc, "rc2-128");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  102|      1|    EVP_add_cipher_alias(SN_rc2_64_cbc, "rc2-64");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  103|      1|    EVP_add_cipher_alias(SN_rc2_40_cbc, "rc2-40");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  104|      1|#endif
  105|       |
  106|      1|#ifndef OPENSSL_NO_BF
  107|      1|    EVP_add_cipher(EVP_bf_ecb());
  108|      1|    EVP_add_cipher(EVP_bf_cfb());
  ------------------
  |  |  960|      1|#define EVP_bf_cfb EVP_bf_cfb64
  ------------------
  109|      1|    EVP_add_cipher(EVP_bf_ofb());
  110|      1|    EVP_add_cipher(EVP_bf_cbc());
  111|      1|    EVP_add_cipher_alias(SN_bf_cbc, "BF");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  112|      1|    EVP_add_cipher_alias(SN_bf_cbc, "bf");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  113|      1|    EVP_add_cipher_alias(SN_bf_cbc, "blowfish");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  114|      1|#endif
  115|       |
  116|      1|#ifndef OPENSSL_NO_CAST
  117|      1|    EVP_add_cipher(EVP_cast5_ecb());
  118|      1|    EVP_add_cipher(EVP_cast5_cfb());
  ------------------
  |  |  967|      1|#define EVP_cast5_cfb EVP_cast5_cfb64
  ------------------
  119|      1|    EVP_add_cipher(EVP_cast5_ofb());
  120|      1|    EVP_add_cipher(EVP_cast5_cbc());
  121|      1|    EVP_add_cipher_alias(SN_cast5_cbc, "CAST");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  122|      1|    EVP_add_cipher_alias(SN_cast5_cbc, "cast");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  123|      1|    EVP_add_cipher_alias(SN_cast5_cbc, "CAST-cbc");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  124|      1|    EVP_add_cipher_alias(SN_cast5_cbc, "cast-cbc");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  125|      1|#endif
  126|       |
  127|       |#ifndef OPENSSL_NO_RC5
  128|       |    EVP_add_cipher(EVP_rc5_32_12_16_ecb());
  129|       |    EVP_add_cipher(EVP_rc5_32_12_16_cfb());
  130|       |    EVP_add_cipher(EVP_rc5_32_12_16_ofb());
  131|       |    EVP_add_cipher(EVP_rc5_32_12_16_cbc());
  132|       |    EVP_add_cipher_alias(SN_rc5_cbc, "rc5");
  133|       |    EVP_add_cipher_alias(SN_rc5_cbc, "RC5");
  134|       |#endif
  135|       |
  136|      1|    EVP_add_cipher(EVP_aes_128_ecb());
  137|      1|    EVP_add_cipher(EVP_aes_128_cbc());
  138|      1|    EVP_add_cipher(EVP_aes_128_cfb());
  ------------------
  |  |  982|      1|#define EVP_aes_128_cfb EVP_aes_128_cfb128
  ------------------
  139|      1|    EVP_add_cipher(EVP_aes_128_cfb1());
  140|      1|    EVP_add_cipher(EVP_aes_128_cfb8());
  141|      1|    EVP_add_cipher(EVP_aes_128_ofb());
  142|      1|    EVP_add_cipher(EVP_aes_128_ctr());
  143|      1|    EVP_add_cipher(EVP_aes_128_gcm());
  144|      1|#ifndef OPENSSL_NO_OCB
  145|      1|    EVP_add_cipher(EVP_aes_128_ocb());
  146|      1|#endif
  147|      1|    EVP_add_cipher(EVP_aes_128_xts());
  148|      1|    EVP_add_cipher(EVP_aes_128_ccm());
  149|      1|    EVP_add_cipher(EVP_aes_128_wrap());
  150|      1|    EVP_add_cipher_alias(SN_id_aes128_wrap, "aes128-wrap");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  151|      1|    EVP_add_cipher(EVP_aes_128_wrap_pad());
  152|      1|    EVP_add_cipher_alias(SN_id_aes128_wrap_pad, "aes128-wrap-pad");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  153|      1|    EVP_add_cipher_alias(SN_aes_128_cbc, "AES128");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  154|      1|    EVP_add_cipher_alias(SN_aes_128_cbc, "aes128");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  155|      1|    EVP_add_cipher(EVP_aes_192_ecb());
  156|      1|    EVP_add_cipher(EVP_aes_192_cbc());
  157|      1|    EVP_add_cipher(EVP_aes_192_cfb());
  ------------------
  |  |  998|      1|#define EVP_aes_192_cfb EVP_aes_192_cfb128
  ------------------
  158|      1|    EVP_add_cipher(EVP_aes_192_cfb1());
  159|      1|    EVP_add_cipher(EVP_aes_192_cfb8());
  160|      1|    EVP_add_cipher(EVP_aes_192_ofb());
  161|      1|    EVP_add_cipher(EVP_aes_192_ctr());
  162|      1|    EVP_add_cipher(EVP_aes_192_gcm());
  163|      1|#ifndef OPENSSL_NO_OCB
  164|      1|    EVP_add_cipher(EVP_aes_192_ocb());
  165|      1|#endif
  166|      1|    EVP_add_cipher(EVP_aes_192_ccm());
  167|      1|    EVP_add_cipher(EVP_aes_192_wrap());
  168|      1|    EVP_add_cipher_alias(SN_id_aes192_wrap, "aes192-wrap");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  169|      1|    EVP_add_cipher(EVP_aes_192_wrap_pad());
  170|      1|    EVP_add_cipher_alias(SN_id_aes192_wrap_pad, "aes192-wrap-pad");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  171|      1|    EVP_add_cipher_alias(SN_aes_192_cbc, "AES192");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  172|      1|    EVP_add_cipher_alias(SN_aes_192_cbc, "aes192");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  173|      1|    EVP_add_cipher(EVP_aes_256_ecb());
  174|      1|    EVP_add_cipher(EVP_aes_256_cbc());
  175|      1|    EVP_add_cipher(EVP_aes_256_cfb());
  ------------------
  |  | 1013|      1|#define EVP_aes_256_cfb EVP_aes_256_cfb128
  ------------------
  176|      1|    EVP_add_cipher(EVP_aes_256_cfb1());
  177|      1|    EVP_add_cipher(EVP_aes_256_cfb8());
  178|      1|    EVP_add_cipher(EVP_aes_256_ofb());
  179|      1|    EVP_add_cipher(EVP_aes_256_ctr());
  180|      1|    EVP_add_cipher(EVP_aes_256_gcm());
  181|      1|#ifndef OPENSSL_NO_OCB
  182|      1|    EVP_add_cipher(EVP_aes_256_ocb());
  183|      1|#endif
  184|      1|    EVP_add_cipher(EVP_aes_256_xts());
  185|      1|    EVP_add_cipher(EVP_aes_256_ccm());
  186|      1|    EVP_add_cipher(EVP_aes_256_wrap());
  187|      1|    EVP_add_cipher_alias(SN_id_aes256_wrap, "aes256-wrap");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  188|      1|    EVP_add_cipher(EVP_aes_256_wrap_pad());
  189|      1|    EVP_add_cipher_alias(SN_id_aes256_wrap_pad, "aes256-wrap-pad");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  190|      1|    EVP_add_cipher_alias(SN_aes_256_cbc, "AES256");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  191|      1|    EVP_add_cipher_alias(SN_aes_256_cbc, "aes256");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  192|      1|    EVP_add_cipher(EVP_aes_128_cbc_hmac_sha1());
  193|      1|    EVP_add_cipher(EVP_aes_256_cbc_hmac_sha1());
  194|      1|    EVP_add_cipher(EVP_aes_128_cbc_hmac_sha256());
  195|      1|    EVP_add_cipher(EVP_aes_256_cbc_hmac_sha256());
  196|      1|#ifndef OPENSSL_NO_ARIA
  197|      1|    EVP_add_cipher(EVP_aria_128_ecb());
  198|      1|    EVP_add_cipher(EVP_aria_128_cbc());
  199|      1|    EVP_add_cipher(EVP_aria_128_cfb());
  ------------------
  |  | 1034|      1|#define EVP_aria_128_cfb EVP_aria_128_cfb128
  ------------------
  200|      1|    EVP_add_cipher(EVP_aria_128_cfb1());
  201|      1|    EVP_add_cipher(EVP_aria_128_cfb8());
  202|      1|    EVP_add_cipher(EVP_aria_128_ctr());
  203|      1|    EVP_add_cipher(EVP_aria_128_ofb());
  204|      1|    EVP_add_cipher(EVP_aria_128_gcm());
  205|      1|    EVP_add_cipher(EVP_aria_128_ccm());
  206|      1|    EVP_add_cipher_alias(SN_aria_128_cbc, "ARIA128");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  207|      1|    EVP_add_cipher_alias(SN_aria_128_cbc, "aria128");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  208|      1|    EVP_add_cipher(EVP_aria_192_ecb());
  209|      1|    EVP_add_cipher(EVP_aria_192_cbc());
  210|      1|    EVP_add_cipher(EVP_aria_192_cfb());
  ------------------
  |  | 1044|      1|#define EVP_aria_192_cfb EVP_aria_192_cfb128
  ------------------
  211|      1|    EVP_add_cipher(EVP_aria_192_cfb1());
  212|      1|    EVP_add_cipher(EVP_aria_192_cfb8());
  213|      1|    EVP_add_cipher(EVP_aria_192_ctr());
  214|      1|    EVP_add_cipher(EVP_aria_192_ofb());
  215|      1|    EVP_add_cipher(EVP_aria_192_gcm());
  216|      1|    EVP_add_cipher(EVP_aria_192_ccm());
  217|      1|    EVP_add_cipher_alias(SN_aria_192_cbc, "ARIA192");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  218|      1|    EVP_add_cipher_alias(SN_aria_192_cbc, "aria192");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  219|      1|    EVP_add_cipher(EVP_aria_256_ecb());
  220|      1|    EVP_add_cipher(EVP_aria_256_cbc());
  221|      1|    EVP_add_cipher(EVP_aria_256_cfb());
  ------------------
  |  | 1054|      1|#define EVP_aria_256_cfb EVP_aria_256_cfb128
  ------------------
  222|      1|    EVP_add_cipher(EVP_aria_256_cfb1());
  223|      1|    EVP_add_cipher(EVP_aria_256_cfb8());
  224|      1|    EVP_add_cipher(EVP_aria_256_ctr());
  225|      1|    EVP_add_cipher(EVP_aria_256_ofb());
  226|      1|    EVP_add_cipher(EVP_aria_256_gcm());
  227|      1|    EVP_add_cipher(EVP_aria_256_ccm());
  228|      1|    EVP_add_cipher_alias(SN_aria_256_cbc, "ARIA256");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  229|      1|    EVP_add_cipher_alias(SN_aria_256_cbc, "aria256");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  230|      1|#endif
  231|       |
  232|      1|#ifndef OPENSSL_NO_CAMELLIA
  233|      1|    EVP_add_cipher(EVP_camellia_128_ecb());
  234|      1|    EVP_add_cipher(EVP_camellia_128_cbc());
  235|      1|    EVP_add_cipher(EVP_camellia_128_cfb());
  ------------------
  |  | 1066|      1|#define EVP_camellia_128_cfb EVP_camellia_128_cfb128
  ------------------
  236|      1|    EVP_add_cipher(EVP_camellia_128_cfb1());
  237|      1|    EVP_add_cipher(EVP_camellia_128_cfb8());
  238|      1|    EVP_add_cipher(EVP_camellia_128_ofb());
  239|      1|    EVP_add_cipher_alias(SN_camellia_128_cbc, "CAMELLIA128");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  240|      1|    EVP_add_cipher_alias(SN_camellia_128_cbc, "camellia128");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  241|      1|    EVP_add_cipher(EVP_camellia_192_ecb());
  242|      1|    EVP_add_cipher(EVP_camellia_192_cbc());
  243|      1|    EVP_add_cipher(EVP_camellia_192_cfb());
  ------------------
  |  | 1074|      1|#define EVP_camellia_192_cfb EVP_camellia_192_cfb128
  ------------------
  244|      1|    EVP_add_cipher(EVP_camellia_192_cfb1());
  245|      1|    EVP_add_cipher(EVP_camellia_192_cfb8());
  246|      1|    EVP_add_cipher(EVP_camellia_192_ofb());
  247|      1|    EVP_add_cipher_alias(SN_camellia_192_cbc, "CAMELLIA192");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  248|      1|    EVP_add_cipher_alias(SN_camellia_192_cbc, "camellia192");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  249|      1|    EVP_add_cipher(EVP_camellia_256_ecb());
  250|      1|    EVP_add_cipher(EVP_camellia_256_cbc());
  251|      1|    EVP_add_cipher(EVP_camellia_256_cfb());
  ------------------
  |  | 1082|      1|#define EVP_camellia_256_cfb EVP_camellia_256_cfb128
  ------------------
  252|      1|    EVP_add_cipher(EVP_camellia_256_cfb1());
  253|      1|    EVP_add_cipher(EVP_camellia_256_cfb8());
  254|      1|    EVP_add_cipher(EVP_camellia_256_ofb());
  255|      1|    EVP_add_cipher_alias(SN_camellia_256_cbc, "CAMELLIA256");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  256|      1|    EVP_add_cipher_alias(SN_camellia_256_cbc, "camellia256");
  ------------------
  |  |  610|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   26|      1|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
  257|      1|    EVP_add_cipher(EVP_camellia_128_ctr());
  258|      1|    EVP_add_cipher(EVP_camellia_192_ctr());
  259|      1|    EVP_add_cipher(EVP_camellia_256_ctr());
  260|      1|#endif
  261|       |
  262|      1|#ifndef OPENSSL_NO_CHACHA
  263|      1|    EVP_add_cipher(EVP_chacha20());
  264|      1|#ifndef OPENSSL_NO_POLY1305
  265|      1|    EVP_add_cipher(EVP_chacha20_poly1305());
  266|      1|#endif
  267|      1|#endif
  268|      1|}

openssl_add_all_digests_int:
   18|      1|{
   19|      1|#ifndef OPENSSL_NO_MD4
   20|      1|    EVP_add_digest(EVP_md4());
   21|      1|#endif
   22|      1|#ifndef OPENSSL_NO_MD5
   23|      1|    EVP_add_digest(EVP_md5());
   24|      1|    EVP_add_digest_alias(SN_md5, "ssl3-md5");
  ------------------
  |  |  612|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_MD_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   25|      1|#define OBJ_NAME_TYPE_MD_METH 0x01
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_MD_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
   25|      1|    EVP_add_digest(EVP_md5_sha1());
   26|      1|#endif
   27|      1|    EVP_add_digest(EVP_sha1());
   28|      1|    EVP_add_digest_alias(SN_sha1, "ssl3-sha1");
  ------------------
  |  |  612|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_MD_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   25|      1|#define OBJ_NAME_TYPE_MD_METH 0x01
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_MD_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
   29|      1|    EVP_add_digest_alias(SN_sha1WithRSAEncryption, SN_sha1WithRSA);
  ------------------
  |  |  612|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_MD_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   25|      1|#define OBJ_NAME_TYPE_MD_METH 0x01
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_MD_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
   30|      1|#if !defined(OPENSSL_NO_MDC2) && !defined(OPENSSL_NO_DES)
   31|      1|    EVP_add_digest(EVP_mdc2());
   32|      1|#endif
   33|      1|#ifndef OPENSSL_NO_RMD160
   34|      1|    EVP_add_digest(EVP_ripemd160());
   35|      1|    EVP_add_digest_alias(SN_ripemd160, "ripemd");
  ------------------
  |  |  612|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_MD_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   25|      1|#define OBJ_NAME_TYPE_MD_METH 0x01
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_MD_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
   36|      1|    EVP_add_digest_alias(SN_ripemd160, "rmd160");
  ------------------
  |  |  612|      1|    OBJ_NAME_add((alias), OBJ_NAME_TYPE_MD_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   25|      1|#define OBJ_NAME_TYPE_MD_METH 0x01
  |  |  ------------------
  |  |                   OBJ_NAME_add((alias), OBJ_NAME_TYPE_MD_METH | OBJ_NAME_ALIAS, (n))
  |  |  ------------------
  |  |  |  |   33|      1|#define OBJ_NAME_ALIAS 0x8000
  |  |  ------------------
  ------------------
   37|      1|#endif
   38|      1|    EVP_add_digest(EVP_sha224());
   39|      1|    EVP_add_digest(EVP_sha256());
   40|      1|    EVP_add_digest(EVP_sha384());
   41|      1|    EVP_add_digest(EVP_sha512());
   42|      1|    EVP_add_digest(EVP_sha512_224());
   43|      1|    EVP_add_digest(EVP_sha512_256());
   44|      1|#ifndef OPENSSL_NO_WHIRLPOOL
   45|      1|    EVP_add_digest(EVP_whirlpool());
   46|      1|#endif
   47|      1|#ifndef OPENSSL_NO_SM3
   48|      1|    EVP_add_digest(EVP_sm3());
   49|      1|#endif
   50|      1|#ifndef OPENSSL_NO_BLAKE2
   51|      1|    EVP_add_digest(EVP_blake2b512());
   52|      1|    EVP_add_digest(EVP_blake2s256());
   53|      1|#endif
   54|      1|    EVP_add_digest(EVP_sha3_224());
   55|      1|    EVP_add_digest(EVP_sha3_256());
   56|      1|    EVP_add_digest(EVP_sha3_384());
   57|      1|    EVP_add_digest(EVP_sha3_512());
   58|      1|    EVP_add_digest(EVP_shake128());
   59|      1|    EVP_add_digest(EVP_shake256());
   60|      1|}

evp_md_ctx_clear_digest:
   29|  9.59k|{
   30|  9.59k|    if (ctx->algctx != NULL) {
  ------------------
  |  Branch (30:9): [True: 9.59k, False: 0]
  ------------------
   31|  9.59k|        if (ctx->digest != NULL && ctx->digest->freectx != NULL)
  ------------------
  |  Branch (31:13): [True: 9.59k, False: 0]
  |  Branch (31:36): [True: 9.59k, False: 0]
  ------------------
   32|  9.59k|            ctx->digest->freectx(ctx->algctx);
   33|  9.59k|        ctx->algctx = NULL;
   34|  9.59k|        EVP_MD_CTX_set_flags(ctx, EVP_MD_CTX_FLAG_CLEANED);
  ------------------
  |  |  177|  9.59k|#define EVP_MD_CTX_FLAG_CLEANED 0x0002 /* context has already been \
  ------------------
   35|  9.59k|    }
   36|       |
   37|       |    /* Code below to be removed when legacy support is dropped. */
   38|       |
   39|       |    /*
   40|       |     * Don't assume ctx->md_data was cleaned in EVP_Digest_Final, because
   41|       |     * sometimes only copies of the context are ever finalised.
   42|       |     */
   43|  9.59k|    if (force)
  ------------------
  |  Branch (43:9): [True: 0, False: 9.59k]
  ------------------
   44|      0|        ctx->digest = NULL;
   45|       |
   46|       |    /* Non legacy code, this has to be later than the ctx->digest cleaning */
   47|  9.59k|    if (!keep_fetched) {
  ------------------
  |  Branch (47:9): [True: 9.59k, False: 0]
  ------------------
   48|  9.59k|        EVP_MD_free(ctx->fetched_digest);
   49|  9.59k|        ctx->fetched_digest = NULL;
   50|       |        ctx->reqdigest = NULL;
   51|  9.59k|    }
   52|  9.59k|}
EVP_MD_CTX_reset:
   77|  9.59k|{
   78|  9.59k|    return evp_md_ctx_reset_ex(ctx, 0);
   79|  9.59k|}
EVP_MD_CTX_new:
  108|  9.59k|{
  109|  9.59k|    return OPENSSL_zalloc(sizeof(EVP_MD_CTX));
  ------------------
  |  |  113|  9.59k|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  110|  9.59k|}
EVP_MD_CTX_free:
  113|  9.59k|{
  114|  9.59k|    if (ctx == NULL)
  ------------------
  |  Branch (114:9): [True: 0, False: 9.59k]
  ------------------
  115|      0|        return;
  116|       |
  117|  9.59k|    EVP_MD_CTX_reset(ctx);
  118|  9.59k|    OPENSSL_free(ctx);
  ------------------
  |  |  136|  9.59k|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  119|  9.59k|}
evp_md_ctx_free_algctx:
  122|  9.59k|{
  123|  9.59k|    if (ctx->algctx != NULL) {
  ------------------
  |  Branch (123:9): [True: 0, False: 9.59k]
  ------------------
  124|      0|        if (!ossl_assert(ctx->digest != NULL)) {
  ------------------
  |  |   44|      0|#define ossl_assert(x) ossl_likely((x) != 0)
  |  |  ------------------
  |  |  |  |   22|      0|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  ------------------
  |  Branch (124:13): [True: 0, False: 0]
  ------------------
  125|      0|            ERR_raise(ERR_LIB_EVP, EVP_R_INITIALIZATION_ERROR);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  126|      0|            return 0;
  127|      0|        }
  128|      0|        if (ctx->digest->freectx != NULL)
  ------------------
  |  Branch (128:13): [True: 0, False: 0]
  ------------------
  129|      0|            ctx->digest->freectx(ctx->algctx);
  130|      0|        ctx->algctx = NULL;
  131|      0|    }
  132|  9.59k|    return 1;
  133|  9.59k|}
EVP_DigestInit_ex2:
  228|      3|{
  229|      3|    return evp_md_init_internal(ctx, type, params);
  230|      3|}
EVP_DigestInit_ex:
  239|  19.1k|{
  240|  19.1k|    if (!ossl_assert(impl == NULL))
  ------------------
  |  |   44|  19.1k|#define ossl_assert(x) ossl_likely((x) != 0)
  |  |  ------------------
  |  |  |  |   22|  19.1k|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  ------------------
  |  Branch (240:9): [True: 0, False: 19.1k]
  ------------------
  241|      0|        return 0;
  242|  19.1k|    return evp_md_init_internal(ctx, type, NULL);
  243|  19.1k|}
EVP_DigestUpdate:
  246|  19.1k|{
  247|  19.1k|    if (ossl_unlikely(count == 0))
  ------------------
  |  |   23|  19.1k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 19.1k]
  |  |  ------------------
  ------------------
  248|      0|        return 1;
  249|       |
  250|  19.1k|    if (ossl_unlikely((ctx->flags & EVP_MD_CTX_FLAG_FINALISED) != 0)) {
  ------------------
  |  |   23|  19.1k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 19.1k]
  |  |  ------------------
  ------------------
  251|      0|        ERR_raise(ERR_LIB_EVP, EVP_R_UPDATE_ERROR);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  252|      0|        return 0;
  253|      0|    }
  254|       |
  255|  19.1k|    if (ossl_unlikely(ctx->pctx != NULL)
  ------------------
  |  |   23|  38.3k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 19.1k]
  |  |  ------------------
  ------------------
  256|      0|        && EVP_PKEY_CTX_IS_SIGNATURE_OP(ctx->pctx)
  ------------------
  |  |  475|  19.1k|    (((ctx)->operation & EVP_PKEY_OP_TYPE_SIG) != 0)
  |  |  ------------------
  |  |  |  | 1556|      0|    (EVP_PKEY_OP_SIGN | EVP_PKEY_OP_SIGNMSG          \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1540|      0|#define EVP_PKEY_OP_SIGN (1 << 4)
  |  |  |  |  ------------------
  |  |  |  |                   (EVP_PKEY_OP_SIGN | EVP_PKEY_OP_SIGNMSG          \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1550|      0|#define EVP_PKEY_OP_SIGNMSG (1 << 14)
  |  |  |  |  ------------------
  |  |  |  | 1557|      0|        | EVP_PKEY_OP_VERIFY | EVP_PKEY_OP_VERIFYMSG \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1541|      0|#define EVP_PKEY_OP_VERIFY (1 << 5)
  |  |  |  |  ------------------
  |  |  |  |                       | EVP_PKEY_OP_VERIFY | EVP_PKEY_OP_VERIFYMSG \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1551|      0|#define EVP_PKEY_OP_VERIFYMSG (1 << 15)
  |  |  |  |  ------------------
  |  |  |  | 1558|      0|        | EVP_PKEY_OP_VERIFYRECOVER                  \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1542|      0|#define EVP_PKEY_OP_VERIFYRECOVER (1 << 6)
  |  |  |  |  ------------------
  |  |  |  | 1559|      0|        | EVP_PKEY_OP_SIGNCTX | EVP_PKEY_OP_VERIFYCTX)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1543|      0|#define EVP_PKEY_OP_SIGNCTX (1 << 7)
  |  |  |  |  ------------------
  |  |  |  |                       | EVP_PKEY_OP_SIGNCTX | EVP_PKEY_OP_VERIFYCTX)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1544|      0|#define EVP_PKEY_OP_VERIFYCTX (1 << 8)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (475:5): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  257|      0|        && ctx->pctx->op.sig.algctx != NULL) {
  ------------------
  |  Branch (257:12): [True: 0, False: 0]
  ------------------
  258|      0|#ifndef FIPS_MODULE
  259|       |        /*
  260|       |         * Prior to OpenSSL 3.0 EVP_DigestSignUpdate() and
  261|       |         * EVP_DigestVerifyUpdate() were just macros for EVP_DigestUpdate().
  262|       |         * Some code calls EVP_DigestUpdate() directly even when initialised
  263|       |         * with EVP_DigestSignInit_ex() or
  264|       |         * EVP_DigestVerifyInit_ex(), so we detect that and redirect to
  265|       |         * the correct EVP_Digest*Update() function
  266|       |         */
  267|      0|        if (ctx->pctx->operation == EVP_PKEY_OP_SIGNCTX)
  ------------------
  |  | 1543|      0|#define EVP_PKEY_OP_SIGNCTX (1 << 7)
  ------------------
  |  Branch (267:13): [True: 0, False: 0]
  ------------------
  268|      0|            return EVP_DigestSignUpdate(ctx, data, count);
  269|      0|        if (ctx->pctx->operation == EVP_PKEY_OP_VERIFYCTX)
  ------------------
  |  | 1544|      0|#define EVP_PKEY_OP_VERIFYCTX (1 << 8)
  ------------------
  |  Branch (269:13): [True: 0, False: 0]
  ------------------
  270|      0|            return EVP_DigestVerifyUpdate(ctx, data, count);
  271|      0|#endif
  272|      0|        ERR_raise(ERR_LIB_EVP, EVP_R_UPDATE_ERROR);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  273|      0|        return 0;
  274|      0|    }
  275|       |
  276|  19.1k|    if (ctx->digest == NULL || ctx->digest->prov == NULL) {
  ------------------
  |  Branch (276:9): [True: 0, False: 19.1k]
  |  Branch (276:32): [True: 0, False: 19.1k]
  ------------------
  277|      0|        ERR_raise(ERR_LIB_EVP, EVP_R_UPDATE_ERROR);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  278|      0|        return 0;
  279|      0|    }
  280|       |
  281|  19.1k|    if (ossl_unlikely(ctx->digest->dupdate == NULL)) {
  ------------------
  |  |   23|  19.1k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 19.1k]
  |  |  ------------------
  ------------------
  282|      0|        ERR_raise(ERR_LIB_EVP, EVP_R_UPDATE_ERROR);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  283|      0|        return 0;
  284|      0|    }
  285|  19.1k|    return ctx->digest->dupdate(ctx->algctx, data, count);
  286|  19.1k|}
EVP_DigestFinal_ex:
  299|  9.59k|{
  300|  9.59k|    int ret, sz;
  301|  9.59k|    size_t size = 0;
  302|  9.59k|    size_t mdsize = 0;
  303|       |
  304|  9.59k|    if (ossl_unlikely(ctx->digest == NULL))
  ------------------
  |  |   23|  9.59k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 9.59k]
  |  |  ------------------
  ------------------
  305|      0|        return 0;
  306|       |
  307|  9.59k|    sz = EVP_MD_CTX_get_size(ctx);
  ------------------
  |  |  488|  9.59k|#define EVP_MD_CTX_get_size(e) EVP_MD_CTX_get_size_ex(e)
  ------------------
  308|  9.59k|    if (ossl_unlikely(sz < 0))
  ------------------
  |  |   23|  9.59k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 9.59k]
  |  |  ------------------
  ------------------
  309|      0|        return 0;
  310|  9.59k|    mdsize = sz;
  311|  9.59k|    if (ossl_unlikely(ctx->digest->prov == NULL)) {
  ------------------
  |  |   23|  9.59k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 9.59k]
  |  |  ------------------
  ------------------
  312|      0|        ERR_raise(ERR_LIB_EVP, EVP_R_FINAL_ERROR);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  313|      0|        return 0;
  314|      0|    }
  315|       |
  316|  9.59k|    if (ossl_unlikely(ctx->digest->dfinal == NULL)) {
  ------------------
  |  |   23|  9.59k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 9.59k]
  |  |  ------------------
  ------------------
  317|      0|        ERR_raise(ERR_LIB_EVP, EVP_R_FINAL_ERROR);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  318|      0|        return 0;
  319|      0|    }
  320|       |
  321|  9.59k|    if (ossl_unlikely((ctx->flags & EVP_MD_CTX_FLAG_FINALISED) != 0)) {
  ------------------
  |  |   23|  9.59k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 9.59k]
  |  |  ------------------
  ------------------
  322|      0|        ERR_raise(ERR_LIB_EVP, EVP_R_FINAL_ERROR);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  323|      0|        return 0;
  324|      0|    }
  325|       |
  326|  9.59k|    ret = ctx->digest->dfinal(ctx->algctx, md, &size, mdsize);
  327|       |
  328|  9.59k|    ctx->flags |= EVP_MD_CTX_FLAG_FINALISED;
  ------------------
  |  |   33|  9.59k|#define EVP_MD_CTX_FLAG_FINALISED 0x0800
  ------------------
  329|       |
  330|  9.59k|    if (isize != NULL) {
  ------------------
  |  Branch (330:9): [True: 9.59k, False: 0]
  ------------------
  331|  9.59k|        if (ossl_likely(size <= UINT_MAX)) {
  ------------------
  |  |   22|  9.59k|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (22:24): [True: 9.59k, False: 0]
  |  |  ------------------
  ------------------
  332|  9.59k|            *isize = (unsigned int)size;
  333|  9.59k|        } else {
  334|      0|            ERR_raise(ERR_LIB_EVP, EVP_R_FINAL_ERROR);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  335|      0|            ret = 0;
  336|      0|        }
  337|  9.59k|    }
  338|       |
  339|  9.59k|    return ret;
  340|  9.59k|}
EVP_MD_CTX_get_params:
  657|    188|{
  658|    188|    EVP_PKEY_CTX *pctx = ctx->pctx;
  659|       |
  660|       |    /* If we have a pctx then we should try that first */
  661|    188|    if (pctx != NULL
  ------------------
  |  Branch (661:9): [True: 0, False: 188]
  ------------------
  662|      0|        && (pctx->operation == EVP_PKEY_OP_VERIFYCTX
  ------------------
  |  | 1544|      0|#define EVP_PKEY_OP_VERIFYCTX (1 << 8)
  ------------------
  |  Branch (662:13): [True: 0, False: 0]
  ------------------
  663|      0|            || pctx->operation == EVP_PKEY_OP_SIGNCTX)
  ------------------
  |  | 1543|      0|#define EVP_PKEY_OP_SIGNCTX (1 << 7)
  ------------------
  |  Branch (663:16): [True: 0, False: 0]
  ------------------
  664|      0|        && pctx->op.sig.algctx != NULL
  ------------------
  |  Branch (664:12): [True: 0, False: 0]
  ------------------
  665|      0|        && pctx->op.sig.signature->get_ctx_md_params != NULL)
  ------------------
  |  Branch (665:12): [True: 0, False: 0]
  ------------------
  666|      0|        return pctx->op.sig.signature->get_ctx_md_params(pctx->op.sig.algctx,
  667|      0|            params);
  668|       |
  669|    188|    if (ctx->digest != NULL && ctx->digest->get_ctx_params != NULL)
  ------------------
  |  Branch (669:9): [True: 188, False: 0]
  |  Branch (669:32): [True: 188, False: 0]
  ------------------
  670|    188|        return ctx->digest->get_ctx_params(ctx->algctx, params);
  671|       |
  672|      0|    return 0;
  673|    188|}
EVP_MD_CTX_gettable_params:
  687|  9.59k|{
  688|  9.59k|    EVP_PKEY_CTX *pctx;
  689|  9.59k|    void *provctx;
  690|       |
  691|  9.59k|    if (ossl_unlikely(ctx == NULL))
  ------------------
  |  |   23|  9.59k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 9.59k]
  |  |  ------------------
  ------------------
  692|      0|        return NULL;
  693|       |
  694|       |    /* If we have a pctx then we should try that first */
  695|  9.59k|    pctx = ctx->pctx;
  696|  9.59k|    if (ossl_unlikely(pctx != NULL)
  ------------------
  |  |   23|  19.1k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 9.59k]
  |  |  ------------------
  ------------------
  697|      0|        && (pctx->operation == EVP_PKEY_OP_VERIFYCTX
  ------------------
  |  | 1544|      0|#define EVP_PKEY_OP_VERIFYCTX (1 << 8)
  ------------------
  |  Branch (697:13): [True: 0, False: 0]
  ------------------
  698|      0|            || pctx->operation == EVP_PKEY_OP_SIGNCTX)
  ------------------
  |  | 1543|      0|#define EVP_PKEY_OP_SIGNCTX (1 << 7)
  ------------------
  |  Branch (698:16): [True: 0, False: 0]
  ------------------
  699|      0|        && pctx->op.sig.signature != NULL
  ------------------
  |  Branch (699:12): [True: 0, False: 0]
  ------------------
  700|      0|        && pctx->op.sig.signature->gettable_ctx_md_params != NULL
  ------------------
  |  Branch (700:12): [True: 0, False: 0]
  ------------------
  701|      0|        && pctx->op.sig.algctx != NULL)
  ------------------
  |  Branch (701:12): [True: 0, False: 0]
  ------------------
  702|      0|        return pctx->op.sig.signature->gettable_ctx_md_params(
  703|      0|            pctx->op.sig.algctx);
  704|       |
  705|  9.59k|    if (ossl_unlikely(ctx->digest != NULL
  ------------------
  |  |   23|  19.1k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 188, False: 9.41k]
  |  |  |  Branch (23:46): [True: 9.59k, False: 0]
  |  |  |  Branch (23:46): [True: 188, False: 9.41k]
  |  |  ------------------
  ------------------
  706|  9.59k|            && ctx->digest->gettable_ctx_params != NULL)) {
  707|    188|        provctx = ossl_provider_ctx(EVP_MD_get0_provider(ctx->digest));
  708|    188|        return ctx->digest->gettable_ctx_params(ctx->algctx, provctx);
  709|    188|    }
  710|  9.41k|    return NULL;
  711|  9.59k|}
evp_md_new:
  760|     34|{
  761|     34|    EVP_MD *md = OPENSSL_zalloc(sizeof(*md));
  ------------------
  |  |  113|     34|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  762|       |
  763|     34|    if (md != NULL && !CRYPTO_NEW_REF(&md->refcnt, 1)) {
  ------------------
  |  Branch (763:9): [True: 34, False: 0]
  |  Branch (763:23): [True: 0, False: 34]
  ------------------
  764|      0|        OPENSSL_free(md);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  765|      0|        return NULL;
  766|      0|    }
  767|     34|    return md;
  768|     34|}
EVP_MD_fetch:
 1008|   793k|{
 1009|   793k|    EVP_MD *md = evp_generic_fetch(ctx, OSSL_OP_DIGEST, algorithm, properties,
  ------------------
  |  |  283|   793k|#define OSSL_OP_DIGEST 1
  ------------------
 1010|   793k|        evp_md_from_algorithm, evp_md_up_ref, evp_md_free);
 1011|       |
 1012|   793k|    return md;
 1013|   793k|}
EVP_MD_up_ref:
 1016|  9.59k|{
 1017|       |#ifdef OPENSSL_NO_CACHED_FETCH
 1018|       |    return evp_md_up_ref(md);
 1019|       |#else
 1020|  9.59k|    if (md->flags & EVP_MD_FLAG_NO_STORE)
  ------------------
  |  |  158|  9.59k|#define EVP_MD_FLAG_NO_STORE 0x0800
  ------------------
  |  Branch (1020:9): [True: 0, False: 9.59k]
  ------------------
 1021|      0|        return evp_md_up_ref(md);
 1022|  9.59k|    return 1;
 1023|  9.59k|#endif
 1024|  9.59k|}
EVP_MD_free:
 1027|   811k|{
 1028|       |#ifdef OPENSSL_NO_CACHED_FETCH
 1029|       |    evp_md_free(md);
 1030|       |#else
 1031|   811k|    if (md != NULL && (md->flags & EVP_MD_FLAG_NO_STORE))
  ------------------
  |  |  158|   802k|#define EVP_MD_FLAG_NO_STORE 0x0800
  ------------------
  |  Branch (1031:9): [True: 802k, False: 9.59k]
  |  Branch (1031:23): [True: 0, False: 802k]
  ------------------
 1032|      0|        evp_md_free(md);
 1033|   811k|    return;
 1034|   811k|#endif
 1035|   811k|}
digest.c:evp_md_ctx_reset_ex:
   55|  9.59k|{
   56|  9.59k|    if (ctx == NULL)
  ------------------
  |  Branch (56:9): [True: 0, False: 9.59k]
  ------------------
   57|      0|        return 1;
   58|       |
   59|       |    /*
   60|       |     * pctx should be freed by the user of EVP_MD_CTX
   61|       |     * if EVP_MD_CTX_FLAG_KEEP_PKEY_CTX is set
   62|       |     */
   63|  9.59k|    if (!EVP_MD_CTX_test_flags(ctx, EVP_MD_CTX_FLAG_KEEP_PKEY_CTX)) {
  ------------------
  |  |   32|  9.59k|#define EVP_MD_CTX_FLAG_KEEP_PKEY_CTX 0x0400
  ------------------
  |  Branch (63:9): [True: 9.59k, False: 0]
  ------------------
   64|  9.59k|        EVP_PKEY_CTX_free(ctx->pctx);
   65|  9.59k|        ctx->pctx = NULL;
   66|  9.59k|    }
   67|       |
   68|  9.59k|    evp_md_ctx_clear_digest(ctx, 0, keep_fetched);
   69|  9.59k|    if (!keep_fetched)
  ------------------
  |  Branch (69:9): [True: 9.59k, False: 0]
  ------------------
   70|  9.59k|        OPENSSL_cleanse(ctx, sizeof(*ctx));
   71|       |
   72|  9.59k|    return 1;
   73|  9.59k|}
digest.c:evp_md_init_internal:
  137|  19.1k|{
  138|  19.1k|#if !defined(FIPS_MODULE)
  139|  19.1k|    if (ctx->pctx != NULL
  ------------------
  |  Branch (139:9): [True: 0, False: 19.1k]
  ------------------
  140|      0|        && EVP_PKEY_CTX_IS_SIGNATURE_OP(ctx->pctx)
  ------------------
  |  |  475|  19.1k|    (((ctx)->operation & EVP_PKEY_OP_TYPE_SIG) != 0)
  |  |  ------------------
  |  |  |  | 1556|      0|    (EVP_PKEY_OP_SIGN | EVP_PKEY_OP_SIGNMSG          \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1540|      0|#define EVP_PKEY_OP_SIGN (1 << 4)
  |  |  |  |  ------------------
  |  |  |  |                   (EVP_PKEY_OP_SIGN | EVP_PKEY_OP_SIGNMSG          \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1550|      0|#define EVP_PKEY_OP_SIGNMSG (1 << 14)
  |  |  |  |  ------------------
  |  |  |  | 1557|      0|        | EVP_PKEY_OP_VERIFY | EVP_PKEY_OP_VERIFYMSG \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1541|      0|#define EVP_PKEY_OP_VERIFY (1 << 5)
  |  |  |  |  ------------------
  |  |  |  |                       | EVP_PKEY_OP_VERIFY | EVP_PKEY_OP_VERIFYMSG \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1551|      0|#define EVP_PKEY_OP_VERIFYMSG (1 << 15)
  |  |  |  |  ------------------
  |  |  |  | 1558|      0|        | EVP_PKEY_OP_VERIFYRECOVER                  \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1542|      0|#define EVP_PKEY_OP_VERIFYRECOVER (1 << 6)
  |  |  |  |  ------------------
  |  |  |  | 1559|      0|        | EVP_PKEY_OP_SIGNCTX | EVP_PKEY_OP_VERIFYCTX)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1543|      0|#define EVP_PKEY_OP_SIGNCTX (1 << 7)
  |  |  |  |  ------------------
  |  |  |  |                       | EVP_PKEY_OP_SIGNCTX | EVP_PKEY_OP_VERIFYCTX)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1544|      0|#define EVP_PKEY_OP_VERIFYCTX (1 << 8)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (475:5): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  141|      0|        && ctx->pctx->op.sig.algctx != NULL) {
  ------------------
  |  Branch (141:12): [True: 0, False: 0]
  ------------------
  142|       |        /*
  143|       |         * Prior to OpenSSL 3.0 calling EVP_DigestInit_ex() on an mdctx
  144|       |         * previously initialised with EVP_DigestSignInit() would retain
  145|       |         * information about the key, and re-initialise for another sign
  146|       |         * operation. So in that case we redirect to EVP_DigestSignInit()
  147|       |         */
  148|      0|        if (ctx->pctx->operation == EVP_PKEY_OP_SIGNCTX)
  ------------------
  |  | 1543|      0|#define EVP_PKEY_OP_SIGNCTX (1 << 7)
  ------------------
  |  Branch (148:13): [True: 0, False: 0]
  ------------------
  149|      0|            return EVP_DigestSignInit(ctx, NULL, type, NULL, NULL);
  150|      0|        if (ctx->pctx->operation == EVP_PKEY_OP_VERIFYCTX)
  ------------------
  |  | 1544|      0|#define EVP_PKEY_OP_VERIFYCTX (1 << 8)
  ------------------
  |  Branch (150:13): [True: 0, False: 0]
  ------------------
  151|      0|            return EVP_DigestVerifyInit(ctx, NULL, type, NULL, NULL);
  152|      0|        ERR_raise(ERR_LIB_EVP, EVP_R_UPDATE_ERROR);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  153|      0|        return 0;
  154|      0|    }
  155|  19.1k|#endif
  156|       |
  157|  19.1k|    EVP_MD_CTX_clear_flags(ctx, EVP_MD_CTX_FLAG_CLEANED | EVP_MD_CTX_FLAG_FINALISED);
  ------------------
  |  |  177|  19.1k|#define EVP_MD_CTX_FLAG_CLEANED 0x0002 /* context has already been \
  ------------------
                  EVP_MD_CTX_clear_flags(ctx, EVP_MD_CTX_FLAG_CLEANED | EVP_MD_CTX_FLAG_FINALISED);
  ------------------
  |  |   33|  19.1k|#define EVP_MD_CTX_FLAG_FINALISED 0x0800
  ------------------
  158|       |
  159|  19.1k|    if (type != NULL) {
  ------------------
  |  Branch (159:9): [True: 19.1k, False: 0]
  ------------------
  160|  19.1k|        ctx->reqdigest = type;
  161|  19.1k|    } else {
  162|      0|        if (ossl_unlikely(ctx->digest == NULL)) {
  ------------------
  |  |   23|      0|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  163|      0|            ERR_raise(ERR_LIB_EVP, EVP_R_NO_DIGEST_SET);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  164|      0|            return 0;
  165|      0|        }
  166|      0|        type = ctx->digest;
  167|      0|    }
  168|       |
  169|  19.1k|    if (ossl_likely(ctx->digest == type)) {
  ------------------
  |  |   22|  19.1k|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (22:24): [True: 9.59k, False: 9.59k]
  |  |  ------------------
  ------------------
  170|  9.59k|        if (ossl_unlikely(!ossl_assert(type->prov != NULL))) {
  ------------------
  |  |   23|  9.59k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 9.59k]
  |  |  ------------------
  ------------------
  171|      0|            ERR_raise(ERR_LIB_EVP, EVP_R_INITIALIZATION_ERROR);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  172|      0|            return 0;
  173|      0|        }
  174|  9.59k|    } else {
  175|  9.59k|        if (!evp_md_ctx_free_algctx(ctx))
  ------------------
  |  Branch (175:13): [True: 0, False: 9.59k]
  ------------------
  176|      0|            return 0;
  177|  9.59k|    }
  178|       |
  179|  19.1k|    if (ossl_unlikely(type->prov == NULL)) {
  ------------------
  |  |   23|  19.1k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 19.1k]
  |  |  ------------------
  ------------------
  180|       |#ifdef FIPS_MODULE
  181|       |        /* We only do explicit fetches inside the FIPS module */
  182|       |        ERR_raise(ERR_LIB_EVP, EVP_R_INITIALIZATION_ERROR);
  183|       |        return 0;
  184|       |#else
  185|       |        /* The NULL digest is a special case */
  186|      0|        EVP_MD *provmd = EVP_MD_fetch(NULL,
  187|      0|            type->type != NID_undef ? OBJ_nid2sn(type->type)
  ------------------
  |  |   19|      0|#define NID_undef                       0
  ------------------
  |  Branch (187:13): [True: 0, False: 0]
  ------------------
  188|      0|                                    : "NULL",
  189|      0|            "");
  190|       |
  191|      0|        if (provmd == NULL) {
  ------------------
  |  Branch (191:13): [True: 0, False: 0]
  ------------------
  192|      0|            ERR_raise(ERR_LIB_EVP, EVP_R_INITIALIZATION_ERROR);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  193|      0|            return 0;
  194|      0|        }
  195|      0|        type = provmd;
  196|      0|        EVP_MD_free(ctx->fetched_digest);
  197|      0|        ctx->fetched_digest = provmd;
  198|      0|#endif
  199|      0|    }
  200|       |
  201|  19.1k|    if (ossl_unlikely(type->prov != NULL && ctx->fetched_digest != type)) {
  ------------------
  |  |   23|  38.3k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 9.59k, False: 9.59k]
  |  |  |  Branch (23:46): [True: 19.1k, False: 0]
  |  |  |  Branch (23:46): [True: 9.59k, False: 9.59k]
  |  |  ------------------
  ------------------
  202|  9.59k|        if (ossl_unlikely(!EVP_MD_up_ref((EVP_MD *)type))) {
  ------------------
  |  |   23|  9.59k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 9.59k]
  |  |  ------------------
  ------------------
  203|      0|            ERR_raise(ERR_LIB_EVP, EVP_R_INITIALIZATION_ERROR);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  204|      0|            return 0;
  205|      0|        }
  206|  9.59k|        EVP_MD_free(ctx->fetched_digest);
  207|  9.59k|        ctx->fetched_digest = (EVP_MD *)type;
  208|  9.59k|    }
  209|  19.1k|    ctx->digest = type;
  210|  19.1k|    if (ctx->algctx == NULL) {
  ------------------
  |  Branch (210:9): [True: 9.59k, False: 9.59k]
  ------------------
  211|  9.59k|        ctx->algctx = ctx->digest->newctx(ossl_provider_ctx(type->prov));
  212|  9.59k|        if (ctx->algctx == NULL) {
  ------------------
  |  Branch (212:13): [True: 0, False: 9.59k]
  ------------------
  213|      0|            ERR_raise(ERR_LIB_EVP, EVP_R_INITIALIZATION_ERROR);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  214|      0|            return 0;
  215|      0|        }
  216|  9.59k|    }
  217|       |
  218|  19.1k|    if (ctx->digest->dinit == NULL) {
  ------------------
  |  Branch (218:9): [True: 0, False: 19.1k]
  ------------------
  219|      0|        ERR_raise(ERR_LIB_EVP, EVP_R_INITIALIZATION_ERROR);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  220|      0|        return 0;
  221|      0|    }
  222|       |
  223|  19.1k|    return ctx->digest->dinit(ctx->algctx, params);
  224|  19.1k|}
digest.c:evp_md_from_algorithm:
  836|     34|{
  837|     34|    const OSSL_DISPATCH *fns = algodef->implementation;
  838|     34|    EVP_MD *md = NULL;
  839|     34|    int fncnt = 0;
  840|       |
  841|       |    /* EVP_MD_fetch() will set the legacy NID if available */
  842|     34|    if ((md = evp_md_new()) == NULL) {
  ------------------
  |  Branch (842:9): [True: 0, False: 34]
  ------------------
  843|      0|        ERR_raise(ERR_LIB_EVP, ERR_R_EVP_LIB);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  844|      0|        return NULL;
  845|      0|    }
  846|       |
  847|     34|    if (no_store != 0)
  ------------------
  |  Branch (847:9): [True: 0, False: 34]
  ------------------
  848|      0|        md->flags |= EVP_MD_FLAG_NO_STORE;
  ------------------
  |  |  158|      0|#define EVP_MD_FLAG_NO_STORE 0x0800
  ------------------
  849|       |
  850|     34|#ifndef FIPS_MODULE
  851|     34|    md->type = NID_undef;
  ------------------
  |  |   19|     34|#define NID_undef                       0
  ------------------
  852|     34|    if (!evp_names_do_all(prov, name_id, set_legacy_nid, &md->type)
  ------------------
  |  Branch (852:9): [True: 0, False: 34]
  ------------------
  853|     34|        || md->type == -1) {
  ------------------
  |  Branch (853:12): [True: 0, False: 34]
  ------------------
  854|      0|        ERR_raise(ERR_LIB_EVP, ERR_R_INTERNAL_ERROR);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  855|      0|        goto err;
  856|      0|    }
  857|     34|#endif
  858|       |
  859|     34|    md->name_id = name_id;
  860|     34|    if ((md->type_name = ossl_algorithm_get1_first_name(algodef)) == NULL)
  ------------------
  |  Branch (860:9): [True: 0, False: 34]
  ------------------
  861|      0|        goto err;
  862|       |
  863|     34|    md->description = algodef->algorithm_description;
  864|       |
  865|    423|    for (; fns->function_id != 0; fns++) {
  ------------------
  |  Branch (865:12): [True: 389, False: 34]
  ------------------
  866|    389|        switch (fns->function_id) {
  ------------------
  |  Branch (866:17): [True: 389, False: 0]
  ------------------
  867|     34|        case OSSL_FUNC_DIGEST_NEWCTX:
  ------------------
  |  |  303|     34|#define OSSL_FUNC_DIGEST_NEWCTX 1
  ------------------
  |  Branch (867:9): [True: 34, False: 355]
  ------------------
  868|     34|            if (md->newctx == NULL) {
  ------------------
  |  Branch (868:17): [True: 34, False: 0]
  ------------------
  869|     34|                md->newctx = OSSL_FUNC_digest_newctx(fns);
  870|     34|                fncnt++;
  871|     34|            }
  872|     34|            break;
  873|     34|        case OSSL_FUNC_DIGEST_INIT:
  ------------------
  |  |  304|     34|#define OSSL_FUNC_DIGEST_INIT 2
  ------------------
  |  Branch (873:9): [True: 34, False: 355]
  ------------------
  874|     34|            if (md->dinit == NULL) {
  ------------------
  |  Branch (874:17): [True: 34, False: 0]
  ------------------
  875|     34|                md->dinit = OSSL_FUNC_digest_init(fns);
  876|     34|                fncnt++;
  877|     34|            }
  878|     34|            break;
  879|     34|        case OSSL_FUNC_DIGEST_UPDATE:
  ------------------
  |  |  305|     34|#define OSSL_FUNC_DIGEST_UPDATE 3
  ------------------
  |  Branch (879:9): [True: 34, False: 355]
  ------------------
  880|     34|            if (md->dupdate == NULL) {
  ------------------
  |  Branch (880:17): [True: 34, False: 0]
  ------------------
  881|     34|                md->dupdate = OSSL_FUNC_digest_update(fns);
  882|     34|                fncnt++;
  883|     34|            }
  884|     34|            break;
  885|     34|        case OSSL_FUNC_DIGEST_FINAL:
  ------------------
  |  |  306|     34|#define OSSL_FUNC_DIGEST_FINAL 4
  ------------------
  |  Branch (885:9): [True: 34, False: 355]
  ------------------
  886|     34|            if (md->dfinal == NULL) {
  ------------------
  |  Branch (886:17): [True: 34, False: 0]
  ------------------
  887|     34|                md->dfinal = OSSL_FUNC_digest_final(fns);
  888|     34|                fncnt++;
  889|     34|            }
  890|     34|            break;
  891|      6|        case OSSL_FUNC_DIGEST_SQUEEZE:
  ------------------
  |  |  316|      6|#define OSSL_FUNC_DIGEST_SQUEEZE 14
  ------------------
  |  Branch (891:9): [True: 6, False: 383]
  ------------------
  892|      6|            if (md->dsqueeze == NULL) {
  ------------------
  |  Branch (892:17): [True: 6, False: 0]
  ------------------
  893|      6|                md->dsqueeze = OSSL_FUNC_digest_squeeze(fns);
  894|      6|                fncnt++;
  895|      6|            }
  896|      6|            break;
  897|      0|        case OSSL_FUNC_DIGEST_DIGEST:
  ------------------
  |  |  307|      0|#define OSSL_FUNC_DIGEST_DIGEST 5
  ------------------
  |  Branch (897:9): [True: 0, False: 389]
  ------------------
  898|      0|            if (md->digest == NULL)
  ------------------
  |  Branch (898:17): [True: 0, False: 0]
  ------------------
  899|      0|                md->digest = OSSL_FUNC_digest_digest(fns);
  900|       |            /* We don't increment fnct for this as it is stand alone */
  901|      0|            break;
  902|     34|        case OSSL_FUNC_DIGEST_FREECTX:
  ------------------
  |  |  308|     34|#define OSSL_FUNC_DIGEST_FREECTX 6
  ------------------
  |  Branch (902:9): [True: 34, False: 355]
  ------------------
  903|     34|            if (md->freectx == NULL) {
  ------------------
  |  Branch (903:17): [True: 34, False: 0]
  ------------------
  904|     34|                md->freectx = OSSL_FUNC_digest_freectx(fns);
  905|     34|                fncnt++;
  906|     34|            }
  907|     34|            break;
  908|     34|        case OSSL_FUNC_DIGEST_DUPCTX:
  ------------------
  |  |  309|     34|#define OSSL_FUNC_DIGEST_DUPCTX 7
  ------------------
  |  Branch (908:9): [True: 34, False: 355]
  ------------------
  909|     34|            if (md->dupctx == NULL)
  ------------------
  |  Branch (909:17): [True: 34, False: 0]
  ------------------
  910|     34|                md->dupctx = OSSL_FUNC_digest_dupctx(fns);
  911|     34|            break;
  912|     34|        case OSSL_FUNC_DIGEST_GET_PARAMS:
  ------------------
  |  |  310|     34|#define OSSL_FUNC_DIGEST_GET_PARAMS 8
  ------------------
  |  Branch (912:9): [True: 34, False: 355]
  ------------------
  913|     34|            if (md->get_params == NULL)
  ------------------
  |  Branch (913:17): [True: 34, False: 0]
  ------------------
  914|     34|                md->get_params = OSSL_FUNC_digest_get_params(fns);
  915|     34|            break;
  916|     12|        case OSSL_FUNC_DIGEST_SET_CTX_PARAMS:
  ------------------
  |  |  311|     12|#define OSSL_FUNC_DIGEST_SET_CTX_PARAMS 9
  ------------------
  |  Branch (916:9): [True: 12, False: 377]
  ------------------
  917|     12|            if (md->set_ctx_params == NULL)
  ------------------
  |  Branch (917:17): [True: 12, False: 0]
  ------------------
  918|     12|                md->set_ctx_params = OSSL_FUNC_digest_set_ctx_params(fns);
  919|     12|            break;
  920|      9|        case OSSL_FUNC_DIGEST_GET_CTX_PARAMS:
  ------------------
  |  |  312|      9|#define OSSL_FUNC_DIGEST_GET_CTX_PARAMS 10
  ------------------
  |  Branch (920:9): [True: 9, False: 380]
  ------------------
  921|      9|            if (md->get_ctx_params == NULL)
  ------------------
  |  Branch (921:17): [True: 9, False: 0]
  ------------------
  922|      9|                md->get_ctx_params = OSSL_FUNC_digest_get_ctx_params(fns);
  923|      9|            break;
  924|     34|        case OSSL_FUNC_DIGEST_GETTABLE_PARAMS:
  ------------------
  |  |  313|     34|#define OSSL_FUNC_DIGEST_GETTABLE_PARAMS 11
  ------------------
  |  Branch (924:9): [True: 34, False: 355]
  ------------------
  925|     34|            if (md->gettable_params == NULL)
  ------------------
  |  Branch (925:17): [True: 34, False: 0]
  ------------------
  926|     34|                md->gettable_params = OSSL_FUNC_digest_gettable_params(fns);
  927|     34|            break;
  928|     12|        case OSSL_FUNC_DIGEST_SETTABLE_CTX_PARAMS:
  ------------------
  |  |  314|     12|#define OSSL_FUNC_DIGEST_SETTABLE_CTX_PARAMS 12
  ------------------
  |  Branch (928:9): [True: 12, False: 377]
  ------------------
  929|     12|            if (md->settable_ctx_params == NULL)
  ------------------
  |  Branch (929:17): [True: 12, False: 0]
  ------------------
  930|     12|                md->settable_ctx_params = OSSL_FUNC_digest_settable_ctx_params(fns);
  931|     12|            break;
  932|      9|        case OSSL_FUNC_DIGEST_GETTABLE_CTX_PARAMS:
  ------------------
  |  |  315|      9|#define OSSL_FUNC_DIGEST_GETTABLE_CTX_PARAMS 13
  ------------------
  |  Branch (932:9): [True: 9, False: 380]
  ------------------
  933|      9|            if (md->gettable_ctx_params == NULL)
  ------------------
  |  Branch (933:17): [True: 9, False: 0]
  ------------------
  934|      9|                md->gettable_ctx_params = OSSL_FUNC_digest_gettable_ctx_params(fns);
  935|      9|            break;
  936|     31|        case OSSL_FUNC_DIGEST_COPYCTX:
  ------------------
  |  |  317|     31|#define OSSL_FUNC_DIGEST_COPYCTX 15
  ------------------
  |  Branch (936:9): [True: 31, False: 358]
  ------------------
  937|     31|            if (md->copyctx == NULL)
  ------------------
  |  Branch (937:17): [True: 31, False: 0]
  ------------------
  938|     31|                md->copyctx = OSSL_FUNC_digest_copyctx(fns);
  939|     31|            break;
  940|     19|        case OSSL_FUNC_DIGEST_SERIALIZE:
  ------------------
  |  |  318|     19|#define OSSL_FUNC_DIGEST_SERIALIZE 16
  ------------------
  |  Branch (940:9): [True: 19, False: 370]
  ------------------
  941|     19|            if (md->serialize == NULL)
  ------------------
  |  Branch (941:17): [True: 19, False: 0]
  ------------------
  942|     19|                md->serialize = OSSL_FUNC_digest_serialize(fns);
  943|     19|            break;
  944|     19|        case OSSL_FUNC_DIGEST_DESERIALIZE:
  ------------------
  |  |  319|     19|#define OSSL_FUNC_DIGEST_DESERIALIZE 17
  ------------------
  |  Branch (944:9): [True: 19, False: 370]
  ------------------
  945|     19|            if (md->deserialize == NULL)
  ------------------
  |  Branch (945:17): [True: 19, False: 0]
  ------------------
  946|     19|                md->deserialize = OSSL_FUNC_digest_deserialize(fns);
  947|     19|            break;
  948|    389|        }
  949|    389|    }
  950|     34|    if ((fncnt != 0 && fncnt != 5 && fncnt != 6)
  ------------------
  |  Branch (950:10): [True: 34, False: 0]
  |  Branch (950:24): [True: 6, False: 28]
  |  Branch (950:38): [True: 0, False: 6]
  ------------------
  951|     34|        || (fncnt == 0 && md->digest == NULL)) {
  ------------------
  |  Branch (951:13): [True: 0, False: 34]
  |  Branch (951:27): [True: 0, False: 0]
  ------------------
  952|       |        /*
  953|       |         * In order to be a consistent set of functions we either need the
  954|       |         * whole set of init/update/final etc functions or none of them.
  955|       |         * The "digest" function can standalone. We at least need one way to
  956|       |         * generate digests.
  957|       |         */
  958|      0|        ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_PROVIDER_FUNCTIONS);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  959|      0|        goto err;
  960|      0|    }
  961|     34|    if (prov != NULL && !ossl_provider_up_ref(prov))
  ------------------
  |  Branch (961:9): [True: 34, False: 0]
  |  Branch (961:25): [True: 0, False: 34]
  ------------------
  962|      0|        goto err;
  963|       |
  964|     34|    md->prov = prov;
  965|       |
  966|     34|    if (!evp_md_cache_constants(md)) {
  ------------------
  |  Branch (966:9): [True: 0, False: 34]
  ------------------
  967|      0|        ERR_raise(ERR_LIB_EVP, EVP_R_CACHE_CONSTANTS_FAILED);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  968|      0|        goto err;
  969|      0|    }
  970|       |
  971|     34|    return md;
  972|       |
  973|      0|err:
  974|      0|    evp_md_free(md);
  975|       |    return NULL;
  976|     34|}
digest.c:set_legacy_nid:
  777|     89|{
  778|     89|    int nid;
  779|     89|    int *legacy_nid = vlegacy_nid;
  780|       |    /*
  781|       |     * We use lowest level function to get the associated method, because
  782|       |     * higher level functions such as EVP_get_digestbyname() have changed
  783|       |     * to look at providers too.
  784|       |     */
  785|     89|    const void *legacy_method = OBJ_NAME_get(name, OBJ_NAME_TYPE_MD_METH);
  ------------------
  |  |   25|     89|#define OBJ_NAME_TYPE_MD_METH 0x01
  ------------------
  786|       |
  787|     89|    if (*legacy_nid == -1) /* We found a clash already */
  ------------------
  |  Branch (787:9): [True: 0, False: 89]
  ------------------
  788|      0|        return;
  789|       |
  790|     89|    if (legacy_method == NULL)
  ------------------
  |  Branch (790:9): [True: 60, False: 29]
  ------------------
  791|     60|        return;
  792|     29|    nid = EVP_MD_nid(legacy_method);
  ------------------
  |  |  459|     29|#define EVP_MD_nid EVP_MD_get_type
  ------------------
  793|     29|    if (*legacy_nid != NID_undef && *legacy_nid != nid) {
  ------------------
  |  |   19|     58|#define NID_undef                       0
  ------------------
  |  Branch (793:9): [True: 6, False: 23]
  |  Branch (793:37): [True: 0, False: 6]
  ------------------
  794|      0|        *legacy_nid = -1;
  795|      0|        return;
  796|      0|    }
  797|     29|    *legacy_nid = nid;
  798|     29|}
digest.c:evp_md_cache_constants:
  802|     34|{
  803|     34|    int ok, xof = 0, algid_absent = 0;
  804|     34|    size_t blksz = 0;
  805|     34|    size_t mdsize = 0;
  806|     34|    OSSL_PARAM params[5];
  807|       |
  808|       |    /*
  809|       |     * Note that these parameters are 'constants' that are only set up
  810|       |     * during the EVP_MD_fetch(). For this reason the XOF functions set the
  811|       |     * md_size to 0, since the output size is unknown.
  812|       |     */
  813|     34|    params[0] = OSSL_PARAM_construct_size_t(OSSL_DIGEST_PARAM_BLOCK_SIZE, &blksz);
  ------------------
  |  |  224|     34|# define OSSL_DIGEST_PARAM_BLOCK_SIZE "blocksize"
  ------------------
  814|     34|    params[1] = OSSL_PARAM_construct_size_t(OSSL_DIGEST_PARAM_SIZE, &mdsize);
  ------------------
  |  |  234|     34|# define OSSL_DIGEST_PARAM_SIZE "size"
  ------------------
  815|     34|    params[2] = OSSL_PARAM_construct_int(OSSL_DIGEST_PARAM_XOF, &xof);
  ------------------
  |  |  236|     34|# define OSSL_DIGEST_PARAM_XOF "xof"
  ------------------
  816|     34|    params[3] = OSSL_PARAM_construct_int(OSSL_DIGEST_PARAM_ALGID_ABSENT,
  ------------------
  |  |  223|     34|# define OSSL_DIGEST_PARAM_ALGID_ABSENT "algid-absent"
  ------------------
  817|     34|        &algid_absent);
  818|     34|    params[4] = OSSL_PARAM_construct_end();
  819|     34|    ok = evp_do_md_getparams(md, params) > 0;
  820|     34|    if (mdsize > INT_MAX || blksz > INT_MAX)
  ------------------
  |  Branch (820:9): [True: 0, False: 34]
  |  Branch (820:29): [True: 0, False: 34]
  ------------------
  821|      0|        ok = 0;
  822|     34|    if (ok) {
  ------------------
  |  Branch (822:9): [True: 34, False: 0]
  ------------------
  823|     34|        md->block_size = (int)blksz;
  824|     34|        md->md_size = (int)mdsize;
  825|     34|        if (xof)
  ------------------
  |  Branch (825:13): [True: 6, False: 28]
  ------------------
  826|      6|            md->flags |= EVP_MD_FLAG_XOF;
  ------------------
  |  |  137|      6|#define EVP_MD_FLAG_XOF 0x0002
  ------------------
  827|     34|        if (algid_absent)
  ------------------
  |  Branch (827:13): [True: 21, False: 13]
  ------------------
  828|     21|            md->flags |= EVP_MD_FLAG_DIGALGID_ABSENT;
  ------------------
  |  |  149|     21|#define EVP_MD_FLAG_DIGALGID_ABSENT 0x0008
  ------------------
  829|     34|    }
  830|     34|    return ok;
  831|     34|}
digest.c:evp_md_up_ref:
  979|     84|{
  980|     84|    EVP_MD *md = (EVP_MD *)m;
  981|     84|    int ref = 0;
  982|       |
  983|     84|    if (md->origin == EVP_ORIG_DYNAMIC)
  ------------------
  |  |  188|     84|#define EVP_ORIG_DYNAMIC 0
  ------------------
  |  Branch (983:9): [True: 84, False: 0]
  ------------------
  984|     84|        CRYPTO_UP_REF(&md->refcnt, &ref);
  985|     84|    return 1;
  986|     84|}
digest.c:evp_md_free:
  989|     34|{
  990|     34|    EVP_MD *md = (EVP_MD *)m;
  991|     34|    int i;
  992|       |
  993|     34|    if (md == NULL || md->origin != EVP_ORIG_DYNAMIC)
  ------------------
  |  |  188|     34|#define EVP_ORIG_DYNAMIC 0
  ------------------
  |  Branch (993:9): [True: 0, False: 34]
  |  Branch (993:23): [True: 0, False: 34]
  ------------------
  994|      0|        return;
  995|       |
  996|     34|    CRYPTO_DOWN_REF(&md->refcnt, &i);
  997|     34|    if (i > 0)
  ------------------
  |  Branch (997:9): [True: 34, False: 0]
  ------------------
  998|     34|        return;
  999|       |
 1000|      0|    OPENSSL_free(md->type_name);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
 1001|      0|    ossl_provider_free(md->prov);
 1002|      0|    CRYPTO_FREE_REF(&md->refcnt);
 1003|      0|    OPENSSL_free(md);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
 1004|      0|}

EVP_aes_128_cbc:
   22|      1|    {                                                                                 \
   23|      1|        return &aes_##keylen##_##mode;                                                \
   24|      1|    }
EVP_aes_128_ecb:
   22|      1|    {                                                                                 \
   23|      1|        return &aes_##keylen##_##mode;                                                \
   24|      1|    }
EVP_aes_128_ofb:
   22|      1|    {                                                                                 \
   23|      1|        return &aes_##keylen##_##mode;                                                \
   24|      1|    }
EVP_aes_128_cfb128:
   22|      1|    {                                                                                 \
   23|      1|        return &aes_##keylen##_##mode;                                                \
   24|      1|    }
EVP_aes_128_cfb1:
   22|      1|    {                                                                                 \
   23|      1|        return &aes_##keylen##_##mode;                                                \
   24|      1|    }
EVP_aes_128_cfb8:
   22|      1|    {                                                                                 \
   23|      1|        return &aes_##keylen##_##mode;                                                \
   24|      1|    }
EVP_aes_128_ctr:
   22|      1|    {                                                                                 \
   23|      1|        return &aes_##keylen##_##mode;                                                \
   24|      1|    }
EVP_aes_192_cbc:
   22|      1|    {                                                                                 \
   23|      1|        return &aes_##keylen##_##mode;                                                \
   24|      1|    }
EVP_aes_192_ecb:
   22|      1|    {                                                                                 \
   23|      1|        return &aes_##keylen##_##mode;                                                \
   24|      1|    }
EVP_aes_192_ofb:
   22|      1|    {                                                                                 \
   23|      1|        return &aes_##keylen##_##mode;                                                \
   24|      1|    }
EVP_aes_192_cfb128:
   22|      1|    {                                                                                 \
   23|      1|        return &aes_##keylen##_##mode;                                                \
   24|      1|    }
EVP_aes_192_cfb1:
   22|      1|    {                                                                                 \
   23|      1|        return &aes_##keylen##_##mode;                                                \
   24|      1|    }
EVP_aes_192_cfb8:
   22|      1|    {                                                                                 \
   23|      1|        return &aes_##keylen##_##mode;                                                \
   24|      1|    }
EVP_aes_192_ctr:
   22|      1|    {                                                                                 \
   23|      1|        return &aes_##keylen##_##mode;                                                \
   24|      1|    }
EVP_aes_256_cbc:
   22|      1|    {                                                                                 \
   23|      1|        return &aes_##keylen##_##mode;                                                \
   24|      1|    }
EVP_aes_256_ecb:
   22|      1|    {                                                                                 \
   23|      1|        return &aes_##keylen##_##mode;                                                \
   24|      1|    }
EVP_aes_256_ofb:
   22|      1|    {                                                                                 \
   23|      1|        return &aes_##keylen##_##mode;                                                \
   24|      1|    }
EVP_aes_256_cfb128:
   22|      1|    {                                                                                 \
   23|      1|        return &aes_##keylen##_##mode;                                                \
   24|      1|    }
EVP_aes_256_cfb1:
   22|      1|    {                                                                                 \
   23|      1|        return &aes_##keylen##_##mode;                                                \
   24|      1|    }
EVP_aes_256_cfb8:
   22|      1|    {                                                                                 \
   23|      1|        return &aes_##keylen##_##mode;                                                \
   24|      1|    }
EVP_aes_256_ctr:
   22|      1|    {                                                                                 \
   23|      1|        return &aes_##keylen##_##mode;                                                \
   24|      1|    }
EVP_aes_128_gcm:
   36|      1|    {                                                                                                                      \
   37|      1|        return &aes_##keylen##_##mode;                                                                                     \
   38|      1|    }
EVP_aes_192_gcm:
   36|      1|    {                                                                                                                      \
   37|      1|        return &aes_##keylen##_##mode;                                                                                     \
   38|      1|    }
EVP_aes_256_gcm:
   36|      1|    {                                                                                                                      \
   37|      1|        return &aes_##keylen##_##mode;                                                                                     \
   38|      1|    }
EVP_aes_128_xts:
   36|      1|    {                                                                                                                      \
   37|      1|        return &aes_##keylen##_##mode;                                                                                     \
   38|      1|    }
EVP_aes_256_xts:
   36|      1|    {                                                                                                                      \
   37|      1|        return &aes_##keylen##_##mode;                                                                                     \
   38|      1|    }
EVP_aes_128_ccm:
   36|      1|    {                                                                                                                      \
   37|      1|        return &aes_##keylen##_##mode;                                                                                     \
   38|      1|    }
EVP_aes_192_ccm:
   36|      1|    {                                                                                                                      \
   37|      1|        return &aes_##keylen##_##mode;                                                                                     \
   38|      1|    }
EVP_aes_256_ccm:
   36|      1|    {                                                                                                                      \
   37|      1|        return &aes_##keylen##_##mode;                                                                                     \
   38|      1|    }
EVP_aes_128_wrap:
   89|      1|{
   90|      1|    return &aes_128_wrap;
   91|      1|}
EVP_aes_192_wrap:
   99|      1|{
  100|      1|    return &aes_192_wrap;
  101|      1|}
EVP_aes_256_wrap:
  109|      1|{
  110|      1|    return &aes_256_wrap;
  111|      1|}
EVP_aes_128_wrap_pad:
  119|      1|{
  120|      1|    return &aes_128_wrap_pad;
  121|      1|}
EVP_aes_192_wrap_pad:
  129|      1|{
  130|      1|    return &aes_192_wrap_pad;
  131|      1|}
EVP_aes_256_wrap_pad:
  139|      1|{
  140|      1|    return &aes_256_wrap_pad;
  141|      1|}
EVP_aes_128_ocb:
   36|      1|    {                                                                                                                      \
   37|      1|        return &aes_##keylen##_##mode;                                                                                     \
   38|      1|    }
EVP_aes_192_ocb:
   36|      1|    {                                                                                                                      \
   37|      1|        return &aes_##keylen##_##mode;                                                                                     \
   38|      1|    }
EVP_aes_256_ocb:
   36|      1|    {                                                                                                                      \
   37|      1|        return &aes_##keylen##_##mode;                                                                                     \
   38|      1|    }

EVP_aes_128_cbc_hmac_sha1:
   51|      1|{
   52|       |    return NULL;
   53|      1|}
EVP_aes_256_cbc_hmac_sha1:
   56|      1|{
   57|       |    return NULL;
   58|      1|}

EVP_aes_128_cbc_hmac_sha256:
   63|      1|{
   64|       |    return NULL;
   65|      1|}
EVP_aes_256_cbc_hmac_sha256:
   68|      1|{
   69|       |    return NULL;
   70|      1|}

EVP_aria_128_ctr:
   42|      1|    {                                                                                 \
   43|      1|        return &aria_##keylen##_##mode;                                               \
   44|      1|    }
EVP_aria_192_ctr:
   42|      1|    {                                                                                 \
   43|      1|        return &aria_##keylen##_##mode;                                               \
   44|      1|    }
EVP_aria_256_ctr:
   42|      1|    {                                                                                 \
   43|      1|        return &aria_##keylen##_##mode;                                               \
   44|      1|    }
EVP_aria_128_gcm:
   64|      1|    {                                                  \
   65|      1|        return (EVP_CIPHER *)&aria_##keylen##_##mode;  \
   66|      1|    }
EVP_aria_192_gcm:
   64|      1|    {                                                  \
   65|      1|        return (EVP_CIPHER *)&aria_##keylen##_##mode;  \
   66|      1|    }
EVP_aria_256_gcm:
   64|      1|    {                                                  \
   65|      1|        return (EVP_CIPHER *)&aria_##keylen##_##mode;  \
   66|      1|    }
EVP_aria_128_ccm:
   64|      1|    {                                                  \
   65|      1|        return (EVP_CIPHER *)&aria_##keylen##_##mode;  \
   66|      1|    }
EVP_aria_192_ccm:
   64|      1|    {                                                  \
   65|      1|        return (EVP_CIPHER *)&aria_##keylen##_##mode;  \
   66|      1|    }
EVP_aria_256_ccm:
   64|      1|    {                                                  \
   65|      1|        return (EVP_CIPHER *)&aria_##keylen##_##mode;  \
   66|      1|    }

EVP_camellia_128_cbc:
   22|      1|    {                                                                                 \
   23|      1|        return &camellia_##keylen##_##mode;                                           \
   24|      1|    }
EVP_camellia_128_ecb:
   22|      1|    {                                                                                 \
   23|      1|        return &camellia_##keylen##_##mode;                                           \
   24|      1|    }
EVP_camellia_128_ofb:
   22|      1|    {                                                                                 \
   23|      1|        return &camellia_##keylen##_##mode;                                           \
   24|      1|    }
EVP_camellia_128_cfb128:
   22|      1|    {                                                                                 \
   23|      1|        return &camellia_##keylen##_##mode;                                           \
   24|      1|    }
EVP_camellia_128_cfb1:
   22|      1|    {                                                                                 \
   23|      1|        return &camellia_##keylen##_##mode;                                           \
   24|      1|    }
EVP_camellia_128_cfb8:
   22|      1|    {                                                                                 \
   23|      1|        return &camellia_##keylen##_##mode;                                           \
   24|      1|    }
EVP_camellia_128_ctr:
   22|      1|    {                                                                                 \
   23|      1|        return &camellia_##keylen##_##mode;                                           \
   24|      1|    }
EVP_camellia_192_cbc:
   22|      1|    {                                                                                 \
   23|      1|        return &camellia_##keylen##_##mode;                                           \
   24|      1|    }
EVP_camellia_192_ecb:
   22|      1|    {                                                                                 \
   23|      1|        return &camellia_##keylen##_##mode;                                           \
   24|      1|    }
EVP_camellia_192_ofb:
   22|      1|    {                                                                                 \
   23|      1|        return &camellia_##keylen##_##mode;                                           \
   24|      1|    }
EVP_camellia_192_cfb128:
   22|      1|    {                                                                                 \
   23|      1|        return &camellia_##keylen##_##mode;                                           \
   24|      1|    }
EVP_camellia_192_cfb1:
   22|      1|    {                                                                                 \
   23|      1|        return &camellia_##keylen##_##mode;                                           \
   24|      1|    }
EVP_camellia_192_cfb8:
   22|      1|    {                                                                                 \
   23|      1|        return &camellia_##keylen##_##mode;                                           \
   24|      1|    }
EVP_camellia_192_ctr:
   22|      1|    {                                                                                 \
   23|      1|        return &camellia_##keylen##_##mode;                                           \
   24|      1|    }
EVP_camellia_256_cbc:
   22|      1|    {                                                                                 \
   23|      1|        return &camellia_##keylen##_##mode;                                           \
   24|      1|    }
EVP_camellia_256_ecb:
   22|      1|    {                                                                                 \
   23|      1|        return &camellia_##keylen##_##mode;                                           \
   24|      1|    }
EVP_camellia_256_ofb:
   22|      1|    {                                                                                 \
   23|      1|        return &camellia_##keylen##_##mode;                                           \
   24|      1|    }
EVP_camellia_256_cfb128:
   22|      1|    {                                                                                 \
   23|      1|        return &camellia_##keylen##_##mode;                                           \
   24|      1|    }
EVP_camellia_256_cfb1:
   22|      1|    {                                                                                 \
   23|      1|        return &camellia_##keylen##_##mode;                                           \
   24|      1|    }
EVP_camellia_256_cfb8:
   22|      1|    {                                                                                 \
   23|      1|        return &camellia_##keylen##_##mode;                                           \
   24|      1|    }
EVP_camellia_256_ctr:
   22|      1|    {                                                                                 \
   23|      1|        return &camellia_##keylen##_##mode;                                           \
   24|      1|    }

EVP_chacha20:
   27|      1|{
   28|      1|    return &chacha20;
   29|      1|}
EVP_chacha20_poly1305:
   43|      1|{
   44|      1|    return &chacha20_poly1305;
   45|      1|}

EVP_des_ede:
   28|      1|{
   29|      1|    return &des_ede_ecb;
   30|      1|}
EVP_des_ede3:
   33|      1|{
   34|      1|    return &des_ede3_ecb;
   35|      1|}
EVP_des_ede3_wrap:
   46|      1|{
   47|      1|    return &des3_wrap;
   48|      1|}

EVP_rc2_64_cbc:
   35|      1|{
   36|      1|    return &r2_64_cbc_cipher;
   37|      1|}
EVP_rc2_40_cbc:
   40|      1|{
   41|      1|    return &r2_40_cbc_cipher;
   42|      1|}

EVP_rc4:
   30|      1|{
   31|      1|    return &r4_cipher;
   32|      1|}
EVP_rc4_40:
   35|      1|{
   36|      1|    return &r4_40_cipher;
   37|      1|}

EVP_rc4_hmac_md5:
   27|      1|{
   28|      1|    return &r4_hmac_md5_cipher;
   29|      1|}

EVP_sm4_cbc:
   24|      1|    {                                                                         \
   25|      1|        return &sm4_##mode;                                                   \
   26|      1|    }
EVP_sm4_ecb:
   24|      1|    {                                                                         \
   25|      1|        return &sm4_##mode;                                                   \
   26|      1|    }
EVP_sm4_ofb:
   24|      1|    {                                                                         \
   25|      1|        return &sm4_##mode;                                                   \
   26|      1|    }
EVP_sm4_cfb128:
   24|      1|    {                                                                         \
   25|      1|        return &sm4_##mode;                                                   \
   26|      1|    }
EVP_sm4_ctr:
   24|      1|    {                                                                         \
   25|      1|        return &sm4_##mode;                                                   \
   26|      1|    }

EVP_desx_cbc:
   23|      1|{
   24|      1|    return &d_xcbc_cipher;
   25|      1|}

ossl_err_load_EVP_strings:
  230|      1|{
  231|      1|#ifndef OPENSSL_NO_ERR
  232|      1|    if (ERR_reason_error_string(EVP_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (232:9): [True: 1, False: 0]
  ------------------
  233|      1|        ERR_load_strings_const(EVP_str_reasons);
  234|      1|#endif
  235|      1|    return 1;
  236|      1|}

evp_generic_fetch:
  468|   793k|{
  469|   793k|    struct evp_method_data_st methdata;
  470|   793k|    void *method;
  471|       |
  472|   793k|    methdata.libctx = libctx;
  473|   793k|    methdata.tmp_store = NULL;
  474|       |    method = inner_evp_generic_fetch(&methdata, NULL, operation_id,
  475|   793k|        name, properties,
  476|   793k|        new_method, up_ref_method, free_method);
  477|   793k|    dealloc_tmp_evp_method_store(methdata.tmp_store);
  478|   793k|    return method;
  479|   793k|}
evp_method_store_cache_flush:
  508|      4|{
  509|      4|    OSSL_METHOD_STORE *store = get_evp_method_store(libctx);
  510|       |
  511|      4|    if (store != NULL)
  ------------------
  |  Branch (511:9): [True: 4, False: 0]
  ------------------
  512|      4|        return ossl_method_store_cache_flush_all(store);
  513|      0|    return 1;
  514|      4|}
evp_set_default_properties_int:
  583|      1|{
  584|      1|    OSSL_PROPERTY_LIST *pl = NULL;
  585|       |
  586|      1|    if (propq != NULL && (pl = ossl_parse_query(libctx, propq, 1)) == NULL) {
  ------------------
  |  Branch (586:9): [True: 1, False: 0]
  |  Branch (586:26): [True: 0, False: 1]
  ------------------
  587|      0|        ERR_raise(ERR_LIB_EVP, EVP_R_DEFAULT_QUERY_PARSE_ERROR);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  588|      0|        return 0;
  589|      0|    }
  590|      1|    if (!evp_set_parsed_default_properties(libctx, pl, loadconfig, mirrored)) {
  ------------------
  |  Branch (590:9): [True: 0, False: 1]
  ------------------
  591|      0|        ossl_property_free(pl);
  592|      0|        return 0;
  593|      0|    }
  594|      1|    return 1;
  595|      1|}
evp_get_global_properties_str:
  656|      1|{
  657|      1|    OSSL_PROPERTY_LIST **plp = ossl_ctx_global_properties(libctx, loadconfig);
  658|      1|    char *propstr = NULL;
  659|      1|    size_t sz;
  660|       |
  661|      1|    if (plp == NULL)
  ------------------
  |  Branch (661:9): [True: 0, False: 1]
  ------------------
  662|      0|        return OPENSSL_strdup("");
  ------------------
  |  |  140|      0|    CRYPTO_strdup(str, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_strdup(str, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  663|       |
  664|      1|    sz = ossl_property_list_to_string(libctx, *plp, NULL, 0);
  665|      1|    if (sz == 0) {
  ------------------
  |  Branch (665:9): [True: 0, False: 1]
  ------------------
  666|      0|        ERR_raise(ERR_LIB_EVP, ERR_R_INTERNAL_ERROR);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  667|      0|        return NULL;
  668|      0|    }
  669|       |
  670|      1|    propstr = OPENSSL_malloc(sz);
  ------------------
  |  |  111|      1|    CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  671|      1|    if (propstr == NULL)
  ------------------
  |  Branch (671:9): [True: 0, False: 1]
  ------------------
  672|      0|        return NULL;
  673|      1|    if (ossl_property_list_to_string(libctx, *plp, propstr, sz) == 0) {
  ------------------
  |  Branch (673:9): [True: 0, False: 1]
  ------------------
  674|      0|        ERR_raise(ERR_LIB_EVP, ERR_R_INTERNAL_ERROR);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  675|      0|        OPENSSL_free(propstr);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  676|      0|        return NULL;
  677|      0|    }
  678|      1|    return propstr;
  679|      1|}
evp_names_do_all:
  745|     34|{
  746|     34|    OSSL_LIB_CTX *libctx = ossl_provider_libctx(prov);
  747|     34|    OSSL_NAMEMAP *namemap = ossl_namemap_stored(libctx);
  748|       |
  749|     34|    return ossl_namemap_doall_names(namemap, number, fn, data);
  750|     34|}
evp_fetch.c:inner_evp_generic_fetch:
  260|   793k|{
  261|   793k|    OSSL_METHOD_STORE *store = get_evp_method_store(methdata->libctx);
  262|   793k|    OSSL_NAMEMAP *namemap = ossl_namemap_stored(methdata->libctx);
  263|       |#ifdef FIPS_MODULE
  264|       |    /*
  265|       |     * The FIPS provider has its own internal library context where only it
  266|       |     * is loaded.  Consequently, property queries aren't relevant because
  267|       |     * there is only one fetchable algorithm and it is assumed that the
  268|       |     * FIPS-ness is handled by the using algorithm.
  269|       |     */
  270|       |    const char *const propq = "";
  271|       |#else
  272|   793k|    const char *const propq = properties != NULL ? properties : "";
  ------------------
  |  Branch (272:31): [True: 0, False: 793k]
  ------------------
  273|   793k|#endif /* FIPS_MODULE */
  274|   793k|    uint32_t meth_id = 0;
  275|   793k|    void *method = NULL;
  276|   793k|    int unsupported, name_id;
  277|       |
  278|   793k|    if (store == NULL || namemap == NULL) {
  ------------------
  |  Branch (278:9): [True: 0, False: 793k]
  |  Branch (278:26): [True: 0, False: 793k]
  ------------------
  279|      0|        ERR_raise(ERR_LIB_EVP, ERR_R_PASSED_INVALID_ARGUMENT);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  280|      0|        return NULL;
  281|      0|    }
  282|       |
  283|       |    /*
  284|       |     * If there's ever an operation_id == 0 passed, we have an internal
  285|       |     * programming error.
  286|       |     */
  287|   793k|    if (!ossl_assert(operation_id > 0)) {
  ------------------
  |  |   44|   793k|#define ossl_assert(x) ossl_likely((x) != 0)
  |  |  ------------------
  |  |  |  |   22|   793k|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  ------------------
  |  Branch (287:9): [True: 0, False: 793k]
  ------------------
  288|      0|        ERR_raise(ERR_LIB_EVP, ERR_R_INTERNAL_ERROR);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  289|      0|        return NULL;
  290|      0|    }
  291|       |
  292|       |    /* If we haven't received a name id yet, try to get one for the name */
  293|   793k|    name_id = ossl_namemap_name2num(namemap, name);
  294|       |
  295|       |    /*
  296|       |     * If we have a name id, calculate a method id with evp_method_id().
  297|       |     *
  298|       |     * evp_method_id returns 0 if we have too many operations (more than
  299|       |     * about 2^8) or too many names (more than about 2^24).  In that case,
  300|       |     * we can't create any new method.
  301|       |     * For all intents and purposes, this is an internal error.
  302|       |     */
  303|   793k|    if (name_id != 0 && (meth_id = evp_method_id(name_id, operation_id)) == 0) {
  ------------------
  |  Branch (303:9): [True: 792k, False: 477]
  |  Branch (303:25): [True: 0, False: 792k]
  ------------------
  304|      0|        ERR_raise(ERR_LIB_EVP, ERR_R_INTERNAL_ERROR);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  305|      0|        return NULL;
  306|      0|    }
  307|       |
  308|       |    /*
  309|       |     * If we haven't found the name yet, chances are that the algorithm to
  310|       |     * be fetched is unsupported.
  311|       |     */
  312|   793k|    unsupported = name_id == 0;
  313|       |
  314|   793k|    if (meth_id == 0
  ------------------
  |  Branch (314:9): [True: 477, False: 792k]
  ------------------
  315|   792k|        || !ossl_method_store_cache_get(store, prov, meth_id, propq, &method)) {
  ------------------
  |  Branch (315:12): [True: 34, False: 792k]
  ------------------
  316|    511|        OSSL_METHOD_CONSTRUCT_METHOD mcm = {
  317|    511|            get_tmp_evp_method_store,
  318|    511|            reserve_evp_method_store,
  319|    511|            unreserve_evp_method_store,
  320|    511|            get_evp_method_from_store,
  321|    511|            put_evp_method_in_store,
  322|    511|            construct_evp_method,
  323|    511|            destruct_evp_method
  324|    511|        };
  325|       |
  326|    511|        methdata->operation_id = operation_id;
  327|    511|        methdata->name_id = name_id;
  328|    511|        methdata->names = name;
  329|    511|        methdata->propquery = propq;
  330|    511|        methdata->method_from_algorithm = new_method;
  331|    511|        methdata->refcnt_up_method = up_ref_method;
  332|    511|        methdata->destruct_method = free_method;
  333|    511|        methdata->flag_construct_error_occurred = 0;
  334|    511|        if ((method = ossl_method_construct(methdata->libctx, operation_id,
  ------------------
  |  Branch (334:13): [True: 211, False: 300]
  ------------------
  335|    511|                 &prov, 0 /* !force_cache */,
  336|    511|                 &mcm, methdata))
  337|    511|            != NULL) {
  338|       |            /*
  339|       |             * If construction did create a method for us, we know that
  340|       |             * there is a correct name_id and meth_id, since those have
  341|       |             * already been calculated in get_evp_method_from_store() and
  342|       |             * put_evp_method_in_store() above.
  343|       |             * Note that there is a corner case here, in which, if a user
  344|       |             * passes a name of the form name1:name2:..., then the construction
  345|       |             * will create a method against all names, but the lookup will fail
  346|       |             * as ossl_namemap_name2num treats the name string as a single name
  347|       |             * rather than introducing new features where in the EVP_<obj>_fetch
  348|       |             * parses the string and queries for each, return an error.
  349|       |             */
  350|    211|            if (name_id == 0)
  ------------------
  |  Branch (350:17): [True: 186, False: 25]
  ------------------
  351|    186|                name_id = ossl_namemap_name2num(namemap, name);
  352|    211|            if (name_id == 0) {
  ------------------
  |  Branch (352:17): [True: 186, False: 25]
  ------------------
  353|    186|                ERR_raise_data(ERR_LIB_EVP, ERR_R_FETCH_FAILED,
  ------------------
  |  |  359|    186|    (ERR_new(),                                                  \
  |  |  360|    186|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  368|    186|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|    186|        ERR_set_error)
  ------------------
                              ERR_raise_data(ERR_LIB_EVP, ERR_R_FETCH_FAILED,
  ------------------
  |  |   59|    186|#define ERR_LIB_EVP 6
  ------------------
                              ERR_raise_data(ERR_LIB_EVP, ERR_R_FETCH_FAILED,
  ------------------
  |  |  318|    186|#define ERR_R_FETCH_FAILED (269 | ERR_RFLAG_COMMON)
  |  |  ------------------
  |  |  |  |  220|    186|#define ERR_RFLAG_COMMON (0x2 << ERR_RFLAGS_OFFSET)
  |  |  |  |  ------------------
  |  |  |  |  |  |  211|    186|#define ERR_RFLAGS_OFFSET 18L
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  354|    186|                    "Algorithm %s cannot be found", name != NULL ? name : "<null>");
  ------------------
  |  Branch (354:53): [True: 186, False: 0]
  ------------------
  355|       |#ifdef OPENSSL_NO_CACHED_FETCH
  356|       |                free_method(method);
  357|       |#endif
  358|    186|                method = NULL;
  359|    186|            } else {
  360|     25|                meth_id = evp_method_id(name_id, operation_id);
  361|       |                /*
  362|       |                 * do not insert method to method store cache when provider
  363|       |                 * did ask for not caching it. methods which are not to be
  364|       |                 * cached end up in ->tmp_store when provider asks not
  365|       |                 * to cache the result (see ossl_method_construct_reserve_store())
  366|       |                 */
  367|     25|                if (meth_id != 0 && methdata->tmp_store == NULL) {
  ------------------
  |  Branch (367:21): [True: 25, False: 0]
  |  Branch (367:37): [True: 25, False: 0]
  ------------------
  368|     25|                    ossl_method_store_cache_set(store, prov, meth_id, propq,
  369|     25|                        method, up_ref_method, free_method);
  370|     25|                } else {
  371|      0|#ifndef OPENSSL_NO_CACHED_FETCH
  372|       |                    /*
  373|       |                     * There is a corner case we need to handle here.  IF:
  374|       |                     * 1) we are fetching an algorithm and plan to return it to the caller
  375|       |                     * 2) The provider we fetched from requested no_cache
  376|       |                     * Then we are in a situation in which this method that was constructed
  377|       |                     * only lives in the tmp_store, and has a reference count of 1.
  378|       |                     * On return from this function, that tmp_store is going to be deallocated,
  379|       |                     * Which will drop the methods ref count to 0 and free it, after which the
  380|       |                     * method will be returned to the called, as an already freed object.
  381|       |                     *
  382|       |                     * That's bad.  We need to grab an extra ref count on the method before returning
  383|       |                     * so that the requestor via EVP_*_fetch has ownership.
  384|       |                     *
  385|       |                     * BUT we only want to do this in the event that the algorithm is uncached.
  386|       |                     * Unfortunately, we don't know that here, because it was the provider that
  387|       |                     * made that request.  However, each algorithm type does store that information
  388|       |                     * so we have a path forward.  Based on the operation id, call the appropriate
  389|       |                     * up_ref method.  That implementation knows how to query its algorithm type and
  390|       |                     * decide if a reference needs to be taken here
  391|       |                     */
  392|      0|                    switch (operation_id) {
  393|      0|                    case OSSL_OP_DIGEST:
  ------------------
  |  |  283|      0|#define OSSL_OP_DIGEST 1
  ------------------
  |  Branch (393:21): [True: 0, False: 0]
  ------------------
  394|      0|                        EVP_MD_up_ref((EVP_MD *)method);
  395|      0|                        break;
  396|      0|                    case OSSL_OP_CIPHER:
  ------------------
  |  |  284|      0|#define OSSL_OP_CIPHER 2 /* Symmetric Ciphers */
  ------------------
  |  Branch (396:21): [True: 0, False: 0]
  ------------------
  397|      0|                        EVP_CIPHER_up_ref((EVP_CIPHER *)method);
  398|      0|                        break;
  399|      0|                    case OSSL_OP_MAC:
  ------------------
  |  |  285|      0|#define OSSL_OP_MAC 3
  ------------------
  |  Branch (399:21): [True: 0, False: 0]
  ------------------
  400|      0|                        EVP_MAC_up_ref((EVP_MAC *)method);
  401|      0|                        break;
  402|      0|                    case OSSL_OP_KDF:
  ------------------
  |  |  286|      0|#define OSSL_OP_KDF 4
  ------------------
  |  Branch (402:21): [True: 0, False: 0]
  ------------------
  403|      0|                        EVP_KDF_up_ref((EVP_KDF *)method);
  404|      0|                        break;
  405|      0|                    case OSSL_OP_RAND:
  ------------------
  |  |  287|      0|#define OSSL_OP_RAND 5
  ------------------
  |  Branch (405:21): [True: 0, False: 0]
  ------------------
  406|      0|                        EVP_RAND_up_ref((EVP_RAND *)method);
  407|      0|                        break;
  408|      0|                    case OSSL_OP_KEYMGMT:
  ------------------
  |  |  288|      0|#define OSSL_OP_KEYMGMT 10
  ------------------
  |  Branch (408:21): [True: 0, False: 0]
  ------------------
  409|      0|                        EVP_KEYMGMT_up_ref((EVP_KEYMGMT *)method);
  410|      0|                        break;
  411|      0|                    case OSSL_OP_KEYEXCH:
  ------------------
  |  |  289|      0|#define OSSL_OP_KEYEXCH 11
  ------------------
  |  Branch (411:21): [True: 0, False: 0]
  ------------------
  412|      0|                        EVP_KEYEXCH_up_ref((EVP_KEYEXCH *)method);
  413|      0|                        break;
  414|      0|                    case OSSL_OP_SIGNATURE:
  ------------------
  |  |  290|      0|#define OSSL_OP_SIGNATURE 12
  ------------------
  |  Branch (414:21): [True: 0, False: 0]
  ------------------
  415|      0|                        EVP_SIGNATURE_up_ref((EVP_SIGNATURE *)method);
  416|      0|                        break;
  417|      0|                    case OSSL_OP_ASYM_CIPHER:
  ------------------
  |  |  291|      0|#define OSSL_OP_ASYM_CIPHER 13
  ------------------
  |  Branch (417:21): [True: 0, False: 0]
  ------------------
  418|      0|                        EVP_ASYM_CIPHER_up_ref((EVP_ASYM_CIPHER *)method);
  419|      0|                        break;
  420|      0|                    case OSSL_OP_KEM:
  ------------------
  |  |  292|      0|#define OSSL_OP_KEM 14
  ------------------
  |  Branch (420:21): [True: 0, False: 0]
  ------------------
  421|      0|                        EVP_KEM_up_ref((EVP_KEM *)method);
  422|      0|                        break;
  423|      0|                    case OSSL_OP_SKEYMGMT:
  ------------------
  |  |  293|      0|#define OSSL_OP_SKEYMGMT 15
  ------------------
  |  Branch (423:21): [True: 0, False: 0]
  ------------------
  424|      0|                        EVP_SKEYMGMT_up_ref((EVP_SKEYMGMT *)method);
  425|      0|                        break;
  426|      0|                    default:
  ------------------
  |  Branch (426:21): [True: 0, False: 0]
  ------------------
  427|      0|                        break;
  428|      0|                    }
  429|      0|#endif
  430|      0|                }
  431|     25|            }
  432|    211|        }
  433|       |
  434|       |        /*
  435|       |         * If we never were in the constructor, the algorithm to be fetched
  436|       |         * is unsupported.
  437|       |         */
  438|    511|        unsupported = !methdata->flag_construct_error_occurred;
  439|    511|    }
  440|       |
  441|   793k|    if ((name_id != 0 || name != NULL) && method == NULL) {
  ------------------
  |  Branch (441:10): [True: 792k, False: 477]
  |  Branch (441:26): [True: 477, False: 0]
  |  Branch (441:43): [True: 486, False: 792k]
  ------------------
  442|    486|        int code = unsupported ? ERR_R_UNSUPPORTED : ERR_R_FETCH_FAILED;
  ------------------
  |  |  317|    486|#define ERR_R_UNSUPPORTED (268 | ERR_RFLAG_COMMON)
  |  |  ------------------
  |  |  |  |  220|    486|#define ERR_RFLAG_COMMON (0x2 << ERR_RFLAGS_OFFSET)
  |  |  |  |  ------------------
  |  |  |  |  |  |  211|    486|#define ERR_RFLAGS_OFFSET 18L
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      int code = unsupported ? ERR_R_UNSUPPORTED : ERR_R_FETCH_FAILED;
  ------------------
  |  |  318|      0|#define ERR_R_FETCH_FAILED (269 | ERR_RFLAG_COMMON)
  |  |  ------------------
  |  |  |  |  220|      0|#define ERR_RFLAG_COMMON (0x2 << ERR_RFLAGS_OFFSET)
  |  |  |  |  ------------------
  |  |  |  |  |  |  211|      0|#define ERR_RFLAGS_OFFSET 18L
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (442:20): [True: 486, False: 0]
  ------------------
  443|       |
  444|    486|        if (name == NULL)
  ------------------
  |  Branch (444:13): [True: 0, False: 486]
  ------------------
  445|      0|            name = ossl_namemap_num2name(namemap, name_id, 0);
  446|    486|        ERR_raise_data(ERR_LIB_EVP, code,
  ------------------
  |  |  359|    486|    (ERR_new(),                                                  \
  |  |  360|    486|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  368|    486|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|    486|        ERR_set_error)
  ------------------
                      ERR_raise_data(ERR_LIB_EVP, code,
  ------------------
  |  |   59|    486|#define ERR_LIB_EVP 6
  ------------------
  447|    486|            "%s, Algorithm (%s : %d), Properties (%s)",
  448|    486|            ossl_lib_ctx_get_descriptor(methdata->libctx),
  449|    486|            name == NULL ? "<null>" : name, name_id,
  ------------------
  |  Branch (449:13): [True: 0, False: 486]
  ------------------
  450|    486|            properties == NULL ? "<null>" : properties);
  ------------------
  |  Branch (450:13): [True: 486, False: 0]
  ------------------
  451|   792k|    } else {
  452|   792k|        OSSL_TRACE4(QUERY, "%s, Algorithm (%s : %d), Properties (%s)\n",
  ------------------
  |  |  297|   792k|    OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4))
  |  |  ------------------
  |  |  |  |  283|   792k|#define OSSL_TRACEV(category, args) ((void)0)
  |  |  ------------------
  ------------------
  453|   792k|            ossl_lib_ctx_get_descriptor(methdata->libctx),
  454|   792k|            name == NULL ? "<null>" : name, name_id,
  455|   792k|            properties == NULL ? "<null>" : properties);
  456|   792k|    }
  457|       |
  458|   793k|    return method;
  459|   793k|}
evp_fetch.c:evp_method_id:
  118|   792k|{
  119|   792k|    if (!ossl_assert(name_id > 0 && name_id <= METHOD_ID_NAME_MAX)
  ------------------
  |  |   44|   792k|#define ossl_assert(x) ossl_likely((x) != 0)
  |  |  ------------------
  |  |  |  |   22|  1.58M|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (22:44): [True: 792k, False: 0]
  |  |  |  |  |  Branch (22:44): [True: 792k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (119:9): [True: 0, False: 792k]
  ------------------
  120|   792k|        || !ossl_assert(operation_id > 0
  ------------------
  |  |   44|   792k|#define ossl_assert(x) ossl_likely((x) != 0)
  |  |  ------------------
  |  |  |  |   22|  1.58M|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (22:44): [True: 792k, False: 0]
  |  |  |  |  |  Branch (22:44): [True: 792k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (120:12): [True: 0, False: 792k]
  ------------------
  121|   792k|            && operation_id <= METHOD_ID_OPERATION_MAX))
  122|      0|        return 0;
  123|   792k|    return (((name_id << METHOD_ID_NAME_OFFSET) & METHOD_ID_NAME_MASK)
  ------------------
  |  |  115|   792k|#define METHOD_ID_NAME_OFFSET 8
  ------------------
                  return (((name_id << METHOD_ID_NAME_OFFSET) & METHOD_ID_NAME_MASK)
  ------------------
  |  |  114|   792k|#define METHOD_ID_NAME_MASK 0x7FFFFF00
  ------------------
  124|   792k|        | (operation_id & METHOD_ID_OPERATION_MASK));
  ------------------
  |  |  112|   792k|#define METHOD_ID_OPERATION_MASK 0x000000FF
  ------------------
  125|   792k|}
evp_fetch.c:reserve_evp_method_store:
   74|  1.02k|{
   75|  1.02k|    struct evp_method_data_st *methdata = data;
   76|       |
   77|  1.02k|    if (store == NULL
  ------------------
  |  Branch (77:9): [True: 1.02k, False: 0]
  ------------------
   78|  1.02k|        && (store = get_evp_method_store(methdata->libctx)) == NULL)
  ------------------
  |  Branch (78:12): [True: 0, False: 1.02k]
  ------------------
   79|      0|        return 0;
   80|       |
   81|  1.02k|    return ossl_method_lock_store(store);
   82|  1.02k|}
evp_fetch.c:unreserve_evp_method_store:
   85|  1.02k|{
   86|  1.02k|    struct evp_method_data_st *methdata = data;
   87|       |
   88|  1.02k|    if (store == NULL
  ------------------
  |  Branch (88:9): [True: 1.02k, False: 0]
  ------------------
   89|  1.02k|        && (store = get_evp_method_store(methdata->libctx)) == NULL)
  ------------------
  |  Branch (89:12): [True: 0, False: 1.02k]
  ------------------
   90|      0|        return 0;
   91|       |
   92|  1.02k|    return ossl_method_unlock_store(store);
   93|  1.02k|}
evp_fetch.c:get_evp_method_from_store:
  129|    511|{
  130|    511|    struct evp_method_data_st *methdata = data;
  131|    511|    void *method = NULL;
  132|    511|    int name_id;
  133|    511|    uint32_t meth_id;
  134|       |
  135|       |    /*
  136|       |     * get_evp_method_from_store() is only called to try and get the method
  137|       |     * that evp_generic_fetch() is asking for, and the operation id as well
  138|       |     * as the name or name id are passed via methdata.
  139|       |     */
  140|    511|    if ((name_id = methdata->name_id) == 0 && methdata->names != NULL) {
  ------------------
  |  Branch (140:9): [True: 477, False: 34]
  |  Branch (140:47): [True: 477, False: 0]
  ------------------
  141|    477|        OSSL_NAMEMAP *namemap = ossl_namemap_stored(methdata->libctx);
  142|    477|        const char *names = methdata->names;
  143|    477|        const char *q = strchr(names, NAME_SEPARATOR);
  ------------------
  |  |   25|    477|#define NAME_SEPARATOR ':'
  ------------------
  144|    477|        size_t l = (q == NULL ? strlen(names) : (size_t)(q - names));
  ------------------
  |  Branch (144:21): [True: 262, False: 215]
  ------------------
  145|       |
  146|    477|        if (namemap == 0)
  ------------------
  |  Branch (146:13): [True: 0, False: 477]
  ------------------
  147|      0|            return NULL;
  148|    477|        name_id = ossl_namemap_name2num_n(namemap, names, l);
  149|    477|    }
  150|       |
  151|    511|    if (name_id == 0
  ------------------
  |  Branch (151:9): [True: 290, False: 221]
  ------------------
  152|    221|        || (meth_id = evp_method_id(name_id, methdata->operation_id)) == 0)
  ------------------
  |  Branch (152:12): [True: 0, False: 221]
  ------------------
  153|    290|        return NULL;
  154|       |
  155|    221|    if (store == NULL
  ------------------
  |  Branch (155:9): [True: 221, False: 0]
  ------------------
  156|    221|        && (store = get_evp_method_store(methdata->libctx)) == NULL)
  ------------------
  |  Branch (156:12): [True: 0, False: 221]
  ------------------
  157|      0|        return NULL;
  158|       |
  159|    221|    if (!ossl_method_store_fetch(store, meth_id, methdata->propquery, prov,
  ------------------
  |  Branch (159:9): [True: 10, False: 211]
  ------------------
  160|    221|            &method))
  161|     10|        return NULL;
  162|    211|    return method;
  163|    221|}
evp_fetch.c:put_evp_method_in_store:
  169|     34|{
  170|     34|    struct evp_method_data_st *methdata = data;
  171|     34|    OSSL_NAMEMAP *namemap;
  172|     34|    int name_id;
  173|     34|    uint32_t meth_id;
  174|     34|    size_t l = 0;
  175|       |
  176|       |    /*
  177|       |     * put_evp_method_in_store() is only called with an EVP method that was
  178|       |     * successfully created by construct_method() below, which means that
  179|       |     * all the names should already be stored in the namemap with the same
  180|       |     * numeric identity, so just use the first to get that identity.
  181|       |     */
  182|     34|    if (names != NULL) {
  ------------------
  |  Branch (182:9): [True: 34, False: 0]
  ------------------
  183|     34|        const char *q = strchr(names, NAME_SEPARATOR);
  ------------------
  |  |   25|     34|#define NAME_SEPARATOR ':'
  ------------------
  184|       |
  185|     34|        l = (q == NULL ? strlen(names) : (size_t)(q - names));
  ------------------
  |  Branch (185:14): [True: 7, False: 27]
  ------------------
  186|     34|    }
  187|       |
  188|     34|    if ((namemap = ossl_namemap_stored(methdata->libctx)) == NULL
  ------------------
  |  Branch (188:9): [True: 0, False: 34]
  ------------------
  189|     34|        || (name_id = ossl_namemap_name2num_n(namemap, names, l)) == 0
  ------------------
  |  Branch (189:12): [True: 0, False: 34]
  ------------------
  190|     34|        || (meth_id = evp_method_id(name_id, methdata->operation_id)) == 0)
  ------------------
  |  Branch (190:12): [True: 0, False: 34]
  ------------------
  191|      0|        return 0;
  192|       |
  193|     34|    OSSL_TRACE1(QUERY, "put_evp_method_in_store: original store: %p\n", store);
  ------------------
  |  |  291|     34|    OSSL_TRACEV(category, (trc_out, format, arg1))
  |  |  ------------------
  |  |  |  |  283|     34|#define OSSL_TRACEV(category, args) ((void)0)
  |  |  ------------------
  ------------------
  194|     34|    if (store == NULL
  ------------------
  |  Branch (194:9): [True: 34, False: 0]
  ------------------
  195|     34|        && (store = get_evp_method_store(methdata->libctx)) == NULL)
  ------------------
  |  Branch (195:12): [True: 0, False: 34]
  ------------------
  196|      0|        return 0;
  197|       |
  198|     34|    OSSL_TRACE5(QUERY,
  ------------------
  |  |  299|     34|    OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4, arg5))
  |  |  ------------------
  |  |  |  |  283|     34|#define OSSL_TRACEV(category, args) ((void)0)
  |  |  ------------------
  ------------------
  199|     34|        "put_evp_method_in_store: "
  200|     34|        "store: %p, names: %s, operation_id %d, method_id: %d, properties: %s\n",
  201|     34|        store, names, methdata->operation_id, meth_id, propdef ? propdef : "<null>");
  202|     34|    return ossl_method_store_add(store, prov, meth_id, propdef, method,
  203|     34|        methdata->refcnt_up_method,
  204|     34|        methdata->destruct_method);
  205|     34|}
evp_fetch.c:construct_evp_method:
  213|     34|{
  214|       |    /*
  215|       |     * This function is only called if get_evp_method_from_store() returned
  216|       |     * NULL, so it's safe to say that of all the spots to create a new
  217|       |     * namemap entry, this is it.  Should the name already exist there, we
  218|       |     * know that ossl_namemap_add_name() will return its corresponding
  219|       |     * number.
  220|       |     */
  221|     34|    struct evp_method_data_st *methdata = data;
  222|     34|    OSSL_LIB_CTX *libctx = ossl_provider_libctx(prov);
  223|     34|    OSSL_NAMEMAP *namemap = ossl_namemap_stored(libctx);
  224|     34|    const char *names = algodef->algorithm_names;
  225|     34|    int name_id = ossl_namemap_add_names(namemap, 0, names, NAME_SEPARATOR);
  ------------------
  |  |   25|     34|#define NAME_SEPARATOR ':'
  ------------------
  226|     34|    void *method;
  227|       |
  228|     34|    if (name_id == 0)
  ------------------
  |  Branch (228:9): [True: 0, False: 34]
  ------------------
  229|      0|        return NULL;
  230|       |
  231|     34|    method = methdata->method_from_algorithm(name_id, algodef, prov, no_store);
  232|       |
  233|       |    /*
  234|       |     * Flag to indicate that there was actual construction errors.  This
  235|       |     * helps inner_evp_generic_fetch() determine what error it should
  236|       |     * record on inaccessible algorithms.
  237|       |     */
  238|     34|    if (method == NULL)
  ------------------
  |  Branch (238:9): [True: 0, False: 34]
  ------------------
  239|      0|        methdata->flag_construct_error_occurred = 1;
  240|       |
  241|     34|    return method;
  242|     34|}
evp_fetch.c:destruct_evp_method:
  245|     34|{
  246|     34|    struct evp_method_data_st *methdata = data;
  247|       |
  248|     34|    methdata->destruct_method(method);
  249|     34|}
evp_fetch.c:dealloc_tmp_evp_method_store:
   62|   793k|{
   63|   793k|    OSSL_TRACE1(QUERY, "Deallocating the tmp_store %p\n", store);
  ------------------
  |  |  291|   793k|    OSSL_TRACEV(category, (trc_out, format, arg1))
  |  |  ------------------
  |  |  |  |  283|   793k|#define OSSL_TRACEV(category, args) ((void)0)
  |  |  ------------------
  ------------------
   64|   793k|    if (store != NULL)
  ------------------
  |  Branch (64:9): [True: 0, False: 793k]
  ------------------
   65|      0|        ossl_method_store_free(store);
   66|   793k|}
evp_fetch.c:get_evp_method_store:
   69|   795k|{
   70|   795k|    return ossl_lib_ctx_get_data(libctx, OSSL_LIB_CTX_EVP_METHOD_STORE_INDEX);
  ------------------
  |  |   95|   795k|#define OSSL_LIB_CTX_EVP_METHOD_STORE_INDEX 0
  ------------------
   71|   795k|}
evp_fetch.c:evp_set_parsed_default_properties:
  530|      1|{
  531|      1|    OSSL_METHOD_STORE *store = get_evp_method_store(libctx);
  532|      1|    OSSL_PROPERTY_LIST **plp = ossl_ctx_global_properties(libctx, loadconfig);
  533|       |
  534|      1|    if (plp != NULL && store != NULL) {
  ------------------
  |  Branch (534:9): [True: 1, False: 0]
  |  Branch (534:24): [True: 1, False: 0]
  ------------------
  535|      1|        int ret;
  536|      1|#ifndef FIPS_MODULE
  537|      1|        char *propstr = NULL;
  538|      1|        size_t strsz;
  539|       |
  540|      1|        if (mirrored) {
  ------------------
  |  Branch (540:13): [True: 1, False: 0]
  ------------------
  541|      1|            if (ossl_global_properties_no_mirrored(libctx))
  ------------------
  |  Branch (541:17): [True: 0, False: 1]
  ------------------
  542|      0|                return 0;
  543|      1|        } else {
  544|       |            /*
  545|       |             * These properties have been explicitly set on this libctx, so
  546|       |             * don't allow any mirroring from a parent libctx.
  547|       |             */
  548|      0|            ossl_global_properties_stop_mirroring(libctx);
  549|      0|        }
  550|       |
  551|      1|        strsz = ossl_property_list_to_string(libctx, def_prop, NULL, 0);
  552|      1|        if (strsz > 0)
  ------------------
  |  Branch (552:13): [True: 1, False: 0]
  ------------------
  553|      1|            propstr = OPENSSL_malloc(strsz);
  ------------------
  |  |  111|      1|    CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  554|      1|        if (propstr == NULL) {
  ------------------
  |  Branch (554:13): [True: 0, False: 1]
  ------------------
  555|      0|            ERR_raise(ERR_LIB_EVP, ERR_R_INTERNAL_ERROR);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  556|      0|            return 0;
  557|      0|        }
  558|      1|        if (ossl_property_list_to_string(libctx, def_prop, propstr,
  ------------------
  |  Branch (558:13): [True: 0, False: 1]
  ------------------
  559|      1|                strsz)
  560|      1|            == 0) {
  561|      0|            OPENSSL_free(propstr);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  562|      0|            ERR_raise(ERR_LIB_EVP, ERR_R_INTERNAL_ERROR);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  563|      0|            return 0;
  564|      0|        }
  565|      1|        ossl_provider_default_props_update(libctx, propstr);
  566|      1|        OPENSSL_free(propstr);
  ------------------
  |  |  136|      1|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  567|      1|#endif
  568|      1|        ossl_property_free(*plp);
  569|      1|        *plp = def_prop;
  570|       |
  571|      1|        ret = ossl_method_store_cache_flush_all(store);
  572|      1|#ifndef FIPS_MODULE
  573|      1|        ossl_decoder_cache_flush(libctx);
  574|      1|#endif
  575|      1|        return ret;
  576|      1|    }
  577|      1|    ERR_raise(ERR_LIB_EVP, ERR_R_INTERNAL_ERROR);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  578|      0|    return 0;
  579|      1|}

EVP_CIPHER_get_type:
  241|    174|{
  242|    174|    int nid;
  243|    174|    nid = EVP_CIPHER_get_nid(cipher);
  244|       |
  245|    174|    switch (nid) {
  246|       |
  247|      3|    case NID_rc2_cbc:
  ------------------
  |  | 1308|      3|#define NID_rc2_cbc             37
  ------------------
  |  Branch (247:5): [True: 3, False: 171]
  ------------------
  248|      5|    case NID_rc2_64_cbc:
  ------------------
  |  | 1329|      5|#define NID_rc2_64_cbc          166
  ------------------
  |  Branch (248:5): [True: 2, False: 172]
  ------------------
  249|      7|    case NID_rc2_40_cbc:
  ------------------
  |  | 1325|      7|#define NID_rc2_40_cbc          98
  ------------------
  |  Branch (249:5): [True: 2, False: 172]
  ------------------
  250|       |
  251|      7|        return NID_rc2_cbc;
  ------------------
  |  | 1308|      7|#define NID_rc2_cbc             37
  ------------------
  252|       |
  253|      1|    case NID_rc4:
  ------------------
  |  | 1333|      1|#define NID_rc4         5
  ------------------
  |  Branch (253:5): [True: 1, False: 173]
  ------------------
  254|      2|    case NID_rc4_40:
  ------------------
  |  | 1338|      2|#define NID_rc4_40              97
  ------------------
  |  Branch (254:5): [True: 1, False: 173]
  ------------------
  255|       |
  256|      2|        return NID_rc4;
  ------------------
  |  | 1333|      2|#define NID_rc4         5
  ------------------
  257|       |
  258|      1|    case NID_aes_128_cfb128:
  ------------------
  |  | 3117|      1|#define NID_aes_128_cfb128              421
  ------------------
  |  Branch (258:5): [True: 1, False: 173]
  ------------------
  259|      2|    case NID_aes_128_cfb8:
  ------------------
  |  | 3238|      2|#define NID_aes_128_cfb8                653
  ------------------
  |  Branch (259:5): [True: 1, False: 173]
  ------------------
  260|      3|    case NID_aes_128_cfb1:
  ------------------
  |  | 3226|      3|#define NID_aes_128_cfb1                650
  ------------------
  |  Branch (260:5): [True: 1, False: 173]
  ------------------
  261|       |
  262|      3|        return NID_aes_128_cfb128;
  ------------------
  |  | 3117|      3|#define NID_aes_128_cfb128              421
  ------------------
  263|       |
  264|      1|    case NID_aes_192_cfb128:
  ------------------
  |  | 3155|      1|#define NID_aes_192_cfb128              425
  ------------------
  |  Branch (264:5): [True: 1, False: 173]
  ------------------
  265|      2|    case NID_aes_192_cfb8:
  ------------------
  |  | 3242|      2|#define NID_aes_192_cfb8                654
  ------------------
  |  Branch (265:5): [True: 1, False: 173]
  ------------------
  266|      3|    case NID_aes_192_cfb1:
  ------------------
  |  | 3230|      3|#define NID_aes_192_cfb1                651
  ------------------
  |  Branch (266:5): [True: 1, False: 173]
  ------------------
  267|       |
  268|      3|        return NID_aes_192_cfb128;
  ------------------
  |  | 3155|      3|#define NID_aes_192_cfb128              425
  ------------------
  269|       |
  270|      1|    case NID_aes_256_cfb128:
  ------------------
  |  | 3193|      1|#define NID_aes_256_cfb128              429
  ------------------
  |  Branch (270:5): [True: 1, False: 173]
  ------------------
  271|      2|    case NID_aes_256_cfb8:
  ------------------
  |  | 3246|      2|#define NID_aes_256_cfb8                655
  ------------------
  |  Branch (271:5): [True: 1, False: 173]
  ------------------
  272|      3|    case NID_aes_256_cfb1:
  ------------------
  |  | 3234|      3|#define NID_aes_256_cfb1                652
  ------------------
  |  Branch (272:5): [True: 1, False: 173]
  ------------------
  273|       |
  274|      3|        return NID_aes_256_cfb128;
  ------------------
  |  | 3193|      3|#define NID_aes_256_cfb128              429
  ------------------
  275|       |
  276|      1|    case NID_des_cfb64:
  ------------------
  |  | 2287|      1|#define NID_des_cfb64           30
  ------------------
  |  Branch (276:5): [True: 1, False: 173]
  ------------------
  277|      2|    case NID_des_cfb8:
  ------------------
  |  | 3278|      2|#define NID_des_cfb8            657
  ------------------
  |  Branch (277:5): [True: 1, False: 173]
  ------------------
  278|      3|    case NID_des_cfb1:
  ------------------
  |  | 3274|      3|#define NID_des_cfb1            656
  ------------------
  |  Branch (278:5): [True: 1, False: 173]
  ------------------
  279|       |
  280|      3|        return NID_des_cfb64;
  ------------------
  |  | 2287|      3|#define NID_des_cfb64           30
  ------------------
  281|       |
  282|      1|    case NID_des_ede3_cfb64:
  ------------------
  |  | 2328|      1|#define NID_des_ede3_cfb64              61
  ------------------
  |  Branch (282:5): [True: 1, False: 173]
  ------------------
  283|      2|    case NID_des_ede3_cfb8:
  ------------------
  |  | 3286|      2|#define NID_des_ede3_cfb8               659
  ------------------
  |  Branch (283:5): [True: 1, False: 173]
  ------------------
  284|      3|    case NID_des_ede3_cfb1:
  ------------------
  |  | 3282|      3|#define NID_des_ede3_cfb1               658
  ------------------
  |  Branch (284:5): [True: 1, False: 173]
  ------------------
  285|       |
  286|      3|        return NID_des_ede3_cfb64;
  ------------------
  |  | 2328|      3|#define NID_des_ede3_cfb64              61
  ------------------
  287|       |
  288|    150|    default:
  ------------------
  |  Branch (288:5): [True: 150, False: 24]
  ------------------
  289|       |#ifdef FIPS_MODULE
  290|       |        return NID_undef;
  291|       |#else
  292|    150|    {
  293|       |        /* Check it has an OID and it is valid */
  294|    150|        ASN1_OBJECT *otmp = OBJ_nid2obj(nid);
  295|       |
  296|    150|        if (OBJ_get0_data(otmp) == NULL)
  ------------------
  |  Branch (296:13): [True: 41, False: 109]
  ------------------
  297|     41|            nid = NID_undef;
  ------------------
  |  |   19|     41|#define NID_undef                       0
  ------------------
  298|    150|        ASN1_OBJECT_free(otmp);
  299|    150|        return nid;
  300|      2|    }
  301|    174|#endif
  302|    174|    }
  303|    174|}
EVP_CIPHER_get_nid:
  657|    174|{
  658|    174|    return (cipher == NULL) ? NID_undef : cipher->nid;
  ------------------
  |  |   19|      0|#define NID_undef                       0
  ------------------
  |  Branch (658:12): [True: 0, False: 174]
  ------------------
  659|    174|}
EVP_MD_get0_provider:
  771|    188|{
  772|    188|    return md->prov;
  773|    188|}
EVP_MD_get_type:
  776|     88|{
  777|     88|    return md->type;
  778|     88|}
EVP_MD_get_size:
  795|   802k|{
  796|   802k|    if (md == NULL) {
  ------------------
  |  Branch (796:9): [True: 0, False: 802k]
  ------------------
  797|      0|        ERR_raise(ERR_LIB_EVP, EVP_R_MESSAGE_DIGEST_IS_NULL);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  798|      0|        return -1;
  799|      0|    }
  800|   802k|    return md->md_size;
  801|   802k|}
EVP_MD_CTX_get0_md:
  823|  9.41k|{
  824|  9.41k|    if (ctx == NULL)
  ------------------
  |  Branch (824:9): [True: 0, False: 9.41k]
  ------------------
  825|      0|        return NULL;
  826|  9.41k|    return ctx->reqdigest;
  827|  9.41k|}
EVP_MD_CTX_get_size_ex:
  842|  9.59k|{
  843|  9.59k|    EVP_MD_CTX *c = (EVP_MD_CTX *)ctx;
  844|  9.59k|    const OSSL_PARAM *gettables;
  845|       |
  846|  9.59k|    gettables = EVP_MD_CTX_gettable_params(c);
  847|  9.59k|    if (gettables != NULL
  ------------------
  |  Branch (847:9): [True: 188, False: 9.41k]
  ------------------
  848|    188|        && OSSL_PARAM_locate_const(gettables,
  ------------------
  |  Branch (848:12): [True: 188, False: 0]
  ------------------
  849|    188|               OSSL_DIGEST_PARAM_SIZE)
  ------------------
  |  |  234|    188|# define OSSL_DIGEST_PARAM_SIZE "size"
  ------------------
  850|    188|            != NULL) {
  851|    188|        OSSL_PARAM params[2] = { OSSL_PARAM_END, OSSL_PARAM_END };
  ------------------
  |  |   25|    188|    { NULL, 0, NULL, 0, 0 }
  ------------------
                      OSSL_PARAM params[2] = { OSSL_PARAM_END, OSSL_PARAM_END };
  ------------------
  |  |   25|    188|    { NULL, 0, NULL, 0, 0 }
  ------------------
  852|    188|        size_t sz = 0;
  853|       |
  854|       |        /*
  855|       |         * For XOF's EVP_MD_get_size() returns 0
  856|       |         * So try to get the xoflen instead. This will return -1 if the
  857|       |         * xof length has not been set.
  858|       |         */
  859|    188|        params[0] = OSSL_PARAM_construct_size_t(OSSL_DIGEST_PARAM_SIZE, &sz);
  ------------------
  |  |  234|    188|# define OSSL_DIGEST_PARAM_SIZE "size"
  ------------------
  860|    188|        if (EVP_MD_CTX_get_params(c, params) != 1
  ------------------
  |  Branch (860:13): [True: 0, False: 188]
  ------------------
  861|    188|            || sz > INT_MAX
  ------------------
  |  Branch (861:16): [True: 0, False: 188]
  ------------------
  862|    188|            || sz == 0)
  ------------------
  |  Branch (862:16): [True: 0, False: 188]
  ------------------
  863|      0|            return -1;
  864|    188|        return (int)sz;
  865|    188|    }
  866|       |    /* Normal digests have a constant fixed size output */
  867|  9.41k|    return EVP_MD_get_size(EVP_MD_CTX_get0_md(ctx));
  868|  9.59k|}
EVP_MD_CTX_set_flags:
  904|  9.59k|{
  905|  9.59k|    ctx->flags |= flags;
  906|  9.59k|}
EVP_MD_CTX_clear_flags:
  909|  19.1k|{
  910|  19.1k|    ctx->flags &= ~flags;
  911|  19.1k|}
EVP_MD_CTX_test_flags:
  914|  9.59k|{
  915|  9.59k|    return (ctx->flags & flags);
  916|  9.59k|}

EVP_blake2b512:
   23|      1|{
   24|      1|    return &blake2b_md;
   25|      1|}
EVP_blake2s256:
   37|      1|{
   38|      1|    return &blake2s_md;
   39|      1|}

EVP_md4:
   29|      1|{
   30|      1|    return &md4_md;
   31|      1|}

EVP_md5:
   29|      1|{
   30|      1|    return &md5_md;
   31|      1|}

EVP_md5_sha1:
   30|      1|{
   31|      1|    return &md5_sha1_md;
   32|      1|}

EVP_mdc2:
   29|      1|{
   30|      1|    return &mdc2_md;
   31|      1|}

EVP_ripemd160:
   29|      1|{
   30|      1|    return &ripemd160_md;
   31|      1|}

EVP_sha1:
   30|      1|{
   31|      1|    return &sha1_md;
   32|      1|}
EVP_sha224:
   44|      1|{
   45|      1|    return &sha224_md;
   46|      1|}
EVP_sha256:
   58|      1|{
   59|      1|    return &sha256_md;
   60|      1|}
EVP_sha512_224:
   72|      1|{
   73|      1|    return &sha512_224_md;
   74|      1|}
EVP_sha512_256:
   86|      1|{
   87|      1|    return &sha512_256_md;
   88|      1|}
EVP_sha384:
  100|      1|{
  101|      1|    return &sha384_md;
  102|      1|}
EVP_sha512:
  114|      1|{
  115|      1|    return &sha512_md;
  116|      1|}
EVP_sha3_224:
  120|      1|    {                                              \
  121|      1|        static const EVP_MD sha3_##bitlen##_md = { \
  122|      1|            NID_sha3_##bitlen,                     \
  ------------------
  |  | 3322|      1|#define NID_sha3_224            1096
  ------------------
  123|      1|            NID_RSA_SHA3_##bitlen,                 \
  ------------------
  |  | 3444|      1|#define NID_RSA_SHA3_224                1116
  ------------------
  124|      1|            bitlen / 8,                            \
  125|      1|            EVP_MD_FLAG_DIGALGID_ABSENT,           \
  ------------------
  |  |  149|      1|#define EVP_MD_FLAG_DIGALGID_ABSENT 0x0008
  ------------------
  126|      1|            EVP_ORIG_GLOBAL,                       \
  ------------------
  |  |  189|      1|#define EVP_ORIG_GLOBAL 1
  ------------------
  127|      1|            (KECCAK1600_WIDTH - bitlen * 2) / 8    \
  ------------------
  |  |   18|      1|#define KECCAK1600_WIDTH 1600
  ------------------
  128|      1|        };                                         \
  129|      1|        return &sha3_##bitlen##_md;                \
  130|      1|    }
EVP_sha3_256:
  120|      1|    {                                              \
  121|      1|        static const EVP_MD sha3_##bitlen##_md = { \
  122|      1|            NID_sha3_##bitlen,                     \
  ------------------
  |  | 3327|      1|#define NID_sha3_256            1097
  ------------------
  123|      1|            NID_RSA_SHA3_##bitlen,                 \
  ------------------
  |  | 3449|      1|#define NID_RSA_SHA3_256                1117
  ------------------
  124|      1|            bitlen / 8,                            \
  125|      1|            EVP_MD_FLAG_DIGALGID_ABSENT,           \
  ------------------
  |  |  149|      1|#define EVP_MD_FLAG_DIGALGID_ABSENT 0x0008
  ------------------
  126|      1|            EVP_ORIG_GLOBAL,                       \
  ------------------
  |  |  189|      1|#define EVP_ORIG_GLOBAL 1
  ------------------
  127|      1|            (KECCAK1600_WIDTH - bitlen * 2) / 8    \
  ------------------
  |  |   18|      1|#define KECCAK1600_WIDTH 1600
  ------------------
  128|      1|        };                                         \
  129|      1|        return &sha3_##bitlen##_md;                \
  130|      1|    }
EVP_sha3_384:
  120|      1|    {                                              \
  121|      1|        static const EVP_MD sha3_##bitlen##_md = { \
  122|      1|            NID_sha3_##bitlen,                     \
  ------------------
  |  | 3332|      1|#define NID_sha3_384            1098
  ------------------
  123|      1|            NID_RSA_SHA3_##bitlen,                 \
  ------------------
  |  | 3454|      1|#define NID_RSA_SHA3_384                1118
  ------------------
  124|      1|            bitlen / 8,                            \
  125|      1|            EVP_MD_FLAG_DIGALGID_ABSENT,           \
  ------------------
  |  |  149|      1|#define EVP_MD_FLAG_DIGALGID_ABSENT 0x0008
  ------------------
  126|      1|            EVP_ORIG_GLOBAL,                       \
  ------------------
  |  |  189|      1|#define EVP_ORIG_GLOBAL 1
  ------------------
  127|      1|            (KECCAK1600_WIDTH - bitlen * 2) / 8    \
  ------------------
  |  |   18|      1|#define KECCAK1600_WIDTH 1600
  ------------------
  128|      1|        };                                         \
  129|      1|        return &sha3_##bitlen##_md;                \
  130|      1|    }
EVP_sha3_512:
  120|      1|    {                                              \
  121|      1|        static const EVP_MD sha3_##bitlen##_md = { \
  122|      1|            NID_sha3_##bitlen,                     \
  ------------------
  |  | 3337|      1|#define NID_sha3_512            1099
  ------------------
  123|      1|            NID_RSA_SHA3_##bitlen,                 \
  ------------------
  |  | 3459|      1|#define NID_RSA_SHA3_512                1119
  ------------------
  124|      1|            bitlen / 8,                            \
  125|      1|            EVP_MD_FLAG_DIGALGID_ABSENT,           \
  ------------------
  |  |  149|      1|#define EVP_MD_FLAG_DIGALGID_ABSENT 0x0008
  ------------------
  126|      1|            EVP_ORIG_GLOBAL,                       \
  ------------------
  |  |  189|      1|#define EVP_ORIG_GLOBAL 1
  ------------------
  127|      1|            (KECCAK1600_WIDTH - bitlen * 2) / 8    \
  ------------------
  |  |   18|      1|#define KECCAK1600_WIDTH 1600
  ------------------
  128|      1|        };                                         \
  129|      1|        return &sha3_##bitlen##_md;                \
  130|      1|    }
EVP_shake128:
  133|      1|    {                                                      \
  134|      1|        static const EVP_MD shake##bitlen##_md = {         \
  135|      1|            NID_shake##bitlen,                             \
  ------------------
  |  | 3342|      1|#define NID_shake128            1100
  ------------------
  136|      1|            0,                                             \
  137|      1|            bitlen / 8,                                    \
  138|      1|            EVP_MD_FLAG_XOF | EVP_MD_FLAG_DIGALGID_ABSENT, \
  ------------------
  |  |  137|      1|#define EVP_MD_FLAG_XOF 0x0002
  ------------------
                          EVP_MD_FLAG_XOF | EVP_MD_FLAG_DIGALGID_ABSENT, \
  ------------------
  |  |  149|      1|#define EVP_MD_FLAG_DIGALGID_ABSENT 0x0008
  ------------------
  139|      1|            EVP_ORIG_GLOBAL,                               \
  ------------------
  |  |  189|      1|#define EVP_ORIG_GLOBAL 1
  ------------------
  140|      1|            (KECCAK1600_WIDTH - bitlen * 2) / 8            \
  ------------------
  |  |   18|      1|#define KECCAK1600_WIDTH 1600
  ------------------
  141|      1|        };                                                 \
  142|      1|        return &shake##bitlen##_md;                        \
  143|      1|    }
EVP_shake256:
  133|      1|    {                                                      \
  134|      1|        static const EVP_MD shake##bitlen##_md = {         \
  135|      1|            NID_shake##bitlen,                             \
  ------------------
  |  | 3347|      1|#define NID_shake256            1101
  ------------------
  136|      1|            0,                                             \
  137|      1|            bitlen / 8,                                    \
  138|      1|            EVP_MD_FLAG_XOF | EVP_MD_FLAG_DIGALGID_ABSENT, \
  ------------------
  |  |  137|      1|#define EVP_MD_FLAG_XOF 0x0002
  ------------------
                          EVP_MD_FLAG_XOF | EVP_MD_FLAG_DIGALGID_ABSENT, \
  ------------------
  |  |  149|      1|#define EVP_MD_FLAG_DIGALGID_ABSENT 0x0008
  ------------------
  139|      1|            EVP_ORIG_GLOBAL,                               \
  ------------------
  |  |  189|      1|#define EVP_ORIG_GLOBAL 1
  ------------------
  140|      1|            (KECCAK1600_WIDTH - bitlen * 2) / 8            \
  ------------------
  |  |   18|      1|#define KECCAK1600_WIDTH 1600
  ------------------
  141|      1|        };                                                 \
  142|      1|        return &shake##bitlen##_md;                        \
  143|      1|    }

EVP_whirlpool:
   29|      1|{
   30|      1|    return &whirlpool_md;
   31|      1|}

EVP_add_cipher:
   20|    140|{
   21|    140|    int r;
   22|       |
   23|    140|    if (c == NULL)
  ------------------
  |  Branch (23:9): [True: 4, False: 136]
  ------------------
   24|      4|        return 0;
   25|       |
   26|    136|    r = OBJ_NAME_add(OBJ_nid2sn(c->nid), OBJ_NAME_TYPE_CIPHER_METH,
  ------------------
  |  |   26|    136|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  ------------------
   27|    136|        (const char *)c);
   28|    136|    if (r == 0)
  ------------------
  |  Branch (28:9): [True: 0, False: 136]
  ------------------
   29|      0|        return 0;
   30|    136|    r = OBJ_NAME_add(OBJ_nid2ln(c->nid), OBJ_NAME_TYPE_CIPHER_METH,
  ------------------
  |  |   26|    136|#define OBJ_NAME_TYPE_CIPHER_METH 0x02
  ------------------
   31|    136|        (const char *)c);
   32|    136|    return r;
   33|    136|}
EVP_add_digest:
   36|     22|{
   37|     22|    int r;
   38|     22|    const char *name;
   39|       |
   40|     22|    name = OBJ_nid2sn(md->type);
   41|     22|    r = OBJ_NAME_add(name, OBJ_NAME_TYPE_MD_METH, (const char *)md);
  ------------------
  |  |   25|     22|#define OBJ_NAME_TYPE_MD_METH 0x01
  ------------------
   42|     22|    if (r == 0)
  ------------------
  |  Branch (42:9): [True: 0, False: 22]
  ------------------
   43|      0|        return 0;
   44|     22|    r = OBJ_NAME_add(OBJ_nid2ln(md->type), OBJ_NAME_TYPE_MD_METH,
  ------------------
  |  |   25|     22|#define OBJ_NAME_TYPE_MD_METH 0x01
  ------------------
   45|     22|        (const char *)md);
   46|     22|    if (r == 0)
  ------------------
  |  Branch (46:9): [True: 0, False: 22]
  ------------------
   47|      0|        return 0;
   48|       |
   49|     22|    if (md->pkey_type && md->type != md->pkey_type) {
  ------------------
  |  Branch (49:9): [True: 17, False: 5]
  |  Branch (49:26): [True: 16, False: 1]
  ------------------
   50|     16|        r = OBJ_NAME_add(OBJ_nid2sn(md->pkey_type),
   51|     16|            OBJ_NAME_TYPE_MD_METH | OBJ_NAME_ALIAS, name);
  ------------------
  |  |   25|     16|#define OBJ_NAME_TYPE_MD_METH 0x01
  ------------------
                          OBJ_NAME_TYPE_MD_METH | OBJ_NAME_ALIAS, name);
  ------------------
  |  |   33|     16|#define OBJ_NAME_ALIAS 0x8000
  ------------------
   52|     16|        if (r == 0)
  ------------------
  |  Branch (52:13): [True: 0, False: 16]
  ------------------
   53|      0|            return 0;
   54|     16|        r = OBJ_NAME_add(OBJ_nid2ln(md->pkey_type),
   55|     16|            OBJ_NAME_TYPE_MD_METH | OBJ_NAME_ALIAS, name);
  ------------------
  |  |   25|     16|#define OBJ_NAME_TYPE_MD_METH 0x01
  ------------------
                          OBJ_NAME_TYPE_MD_METH | OBJ_NAME_ALIAS, name);
  ------------------
  |  |   33|     16|#define OBJ_NAME_ALIAS 0x8000
  ------------------
   56|     16|    }
   57|     22|    return r;
   58|     22|}

EVP_PKEY_CTX_free:
  237|  9.59k|{
  238|  9.59k|    if (ctx == NULL)
  ------------------
  |  Branch (238:9): [True: 9.59k, False: 0]
  ------------------
  239|  9.59k|        return;
  240|       |
  241|      0|    evp_pkey_ctx_free_old_ops(ctx);
  242|      0|#ifndef FIPS_MODULE
  243|      0|    evp_pkey_ctx_free_all_cached_data(ctx);
  244|      0|#endif
  245|      0|    EVP_KEYMGMT_free(ctx->keymgmt);
  246|       |
  247|      0|    OPENSSL_free(ctx->propquery);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  248|      0|    EVP_PKEY_free(ctx->pkey);
  249|      0|    EVP_PKEY_free(ctx->peerkey);
  250|      0|    BN_free(ctx->rsa_pubexp);
  251|      0|    OPENSSL_free(ctx);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  252|      0|}

ossl_do_ex_data_init:
   15|      3|{
   16|      3|    OSSL_EX_DATA_GLOBAL *global = ossl_lib_ctx_get_ex_data_global(ctx);
   17|       |
   18|      3|    if (global == NULL)
  ------------------
  |  Branch (18:9): [True: 0, False: 3]
  ------------------
   19|      0|        return 0;
   20|       |
   21|      3|    global->ex_data_lock = CRYPTO_THREAD_lock_new();
   22|       |    return global->ex_data_lock != NULL;
   23|      3|}

ossl_fnv1a_hash:
   14|   794k|{
   15|   794k|    uint64_t hash = 0xcbf29ce484222325ULL;
   16|   794k|    size_t i;
   17|       |
   18|  5.62M|    for (i = 0; i < len; i++) {
  ------------------
  |  Branch (18:17): [True: 4.83M, False: 794k]
  ------------------
   19|  4.83M|        hash ^= key[i];
   20|  4.83M|        hash *= 0x00000100000001B3ULL;
   21|  4.83M|    }
   22|   794k|    return hash;
   23|   794k|}

ossl_ht_new:
  185|      3|{
  186|      3|    HT *new = OPENSSL_zalloc(sizeof(*new));
  ------------------
  |  |  113|      3|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  187|       |
  188|      3|    if (new == NULL)
  ------------------
  |  Branch (188:9): [True: 0, False: 3]
  ------------------
  189|      0|        return NULL;
  190|       |
  191|      3|    if (conf->lockless_reads && conf->no_rcu)
  ------------------
  |  Branch (191:9): [True: 3, False: 0]
  |  Branch (191:33): [True: 0, False: 3]
  ------------------
  192|      0|        goto err;
  193|       |
  194|      3|    if (!conf->no_rcu) {
  ------------------
  |  Branch (194:9): [True: 3, False: 0]
  ------------------
  195|      3|        new->atomic_lock = CRYPTO_THREAD_lock_new();
  196|      3|        if (new->atomic_lock == NULL)
  ------------------
  |  Branch (196:13): [True: 0, False: 3]
  ------------------
  197|      0|            goto err;
  198|      3|    }
  199|      3|    memcpy(&new->config, conf, sizeof(*conf));
  200|       |
  201|      3|    if (new->config.init_neighborhoods != 0) {
  ------------------
  |  Branch (201:9): [True: 3, False: 0]
  ------------------
  202|      3|        new->wpd.neighborhood_len = new->config.init_neighborhoods;
  203|       |        /* round up to the next power of 2 */
  204|      3|        new->wpd.neighborhood_len--;
  205|      3|        new->wpd.neighborhood_len |= new->wpd.neighborhood_len >> 1;
  206|      3|        new->wpd.neighborhood_len |= new->wpd.neighborhood_len >> 2;
  207|      3|        new->wpd.neighborhood_len |= new->wpd.neighborhood_len >> 4;
  208|      3|        new->wpd.neighborhood_len |= new->wpd.neighborhood_len >> 8;
  209|      3|        new->wpd.neighborhood_len |= new->wpd.neighborhood_len >> 16;
  210|      3|        new->wpd.neighborhood_len++;
  211|      3|    } else {
  212|      0|        new->wpd.neighborhood_len = DEFAULT_NEIGH_LEN;
  ------------------
  |  |   96|      0|#define DEFAULT_NEIGH_LEN (1 << DEFAULT_NEIGH_LEN_LOG)
  |  |  ------------------
  |  |  |  |   95|      0|#define DEFAULT_NEIGH_LEN_LOG 4
  |  |  ------------------
  ------------------
  213|      0|    }
  214|       |
  215|      3|    if (new->config.ht_free_fn == NULL)
  ------------------
  |  Branch (215:9): [True: 3, False: 0]
  ------------------
  216|      3|        new->config.ht_free_fn = internal_free_nop;
  217|       |
  218|      3|    new->md = OPENSSL_zalloc(sizeof(*new->md));
  ------------------
  |  |  113|      3|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  219|      3|    if (new->md == NULL)
  ------------------
  |  Branch (219:9): [True: 0, False: 3]
  ------------------
  220|      0|        goto err;
  221|       |
  222|      3|    new->md->neighborhoods = alloc_new_neighborhood_list(new->wpd.neighborhood_len,
  223|      3|        &new->md->neighborhood_ptr_to_free);
  224|      3|    if (new->md->neighborhoods == NULL)
  ------------------
  |  Branch (224:9): [True: 0, False: 3]
  ------------------
  225|      0|        goto err;
  226|      3|    new->md->neighborhood_mask = new->wpd.neighborhood_len - 1;
  227|       |
  228|      3|    if (!conf->no_rcu) {
  ------------------
  |  Branch (228:9): [True: 3, False: 0]
  ------------------
  229|      3|        new->lock = ossl_rcu_lock_new(1, conf->ctx);
  230|      3|        if (new->lock == NULL)
  ------------------
  |  Branch (230:13): [True: 0, False: 3]
  ------------------
  231|      0|            goto err;
  232|      3|    }
  233|      3|    if (new->config.ht_hash_fn == NULL)
  ------------------
  |  Branch (233:9): [True: 3, False: 0]
  ------------------
  234|      3|        new->config.ht_hash_fn = internal_ht_hash_fn;
  235|       |
  236|      3|    return new;
  237|       |
  238|      0|err:
  239|      0|    if (!conf->no_rcu) {
  ------------------
  |  Branch (239:9): [True: 0, False: 0]
  ------------------
  240|      0|        CRYPTO_THREAD_lock_free(new->atomic_lock);
  241|      0|        ossl_rcu_lock_free(new->lock);
  242|      0|    }
  243|      0|    if (new->md != NULL)
  ------------------
  |  Branch (243:9): [True: 0, False: 0]
  ------------------
  244|      0|        OPENSSL_free(new->md->neighborhood_ptr_to_free);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  245|      0|    OPENSSL_free(new->md);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  246|      0|    OPENSSL_free(new);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  247|       |    return NULL;
  248|      3|}
ossl_ht_insert:
  720|    299|{
  721|    299|    struct ht_internal_value_st *newval = NULL;
  722|    299|    uint64_t hash;
  723|    299|    int rc = 0;
  724|    299|    int i;
  725|       |
  726|    299|    if (data->value == NULL)
  ------------------
  |  Branch (726:9): [True: 0, False: 299]
  ------------------
  727|      0|        goto out;
  728|       |
  729|    299|    rc = -1;
  730|    299|    newval = alloc_new_value(h, key, data->value, data->type_id);
  731|    299|    if (newval == NULL)
  ------------------
  |  Branch (731:9): [True: 0, False: 299]
  ------------------
  732|      0|        goto out;
  733|       |
  734|    299|    if (key->cached_hash)
  ------------------
  |  Branch (734:9): [True: 0, False: 299]
  ------------------
  735|      0|        hash = key->cached_hash;
  736|    299|    else
  737|    299|        hash = key->cached_hash = newval->value.key.cached_hash = h->config.ht_hash_fn(key);
  738|       |
  739|       |    /*
  740|       |     * we have to take our lock here to prevent other changes
  741|       |     * to the bucket list
  742|       |     */
  743|    299|    for (i = 0;
  744|    299|        (rc = ossl_ht_insert_locked(h, hash, newval, olddata)) == -1
  ------------------
  |  Branch (744:9): [True: 0, False: 299]
  ------------------
  745|      0|        && i <= (int)NEIGHBORHOOD_LEN;
  ------------------
  |  |  104|      0|#define NEIGHBORHOOD_LEN (CACHE_LINE_BYTES / sizeof(struct ht_neighborhood_entry_st))
  |  |  ------------------
  |  |  |  |  101|      0|#define CACHE_LINE_BYTES 64
  |  |  ------------------
  ------------------
  |  Branch (745:12): [True: 0, False: 0]
  ------------------
  746|    299|        ++i)
  747|      0|        if (!grow_hashtable(h, h->wpd.neighborhood_len)) {
  ------------------
  |  Branch (747:13): [True: 0, False: 0]
  ------------------
  748|      0|            rc = -1;
  749|      0|            break;
  750|      0|        }
  751|       |
  752|    299|    if (rc <= 0)
  ------------------
  |  Branch (752:9): [True: 0, False: 299]
  ------------------
  753|      0|        free_value(newval);
  754|       |
  755|    299|out:
  756|    299|    return rc;
  757|    299|}
ossl_ht_get:
  760|   794k|{
  761|   794k|    struct ht_mutable_data_st *md;
  762|   794k|    uint64_t hash;
  763|   794k|    uint64_t neigh_idx_start;
  764|   794k|    uint64_t neigh_idx;
  765|   794k|    struct ht_internal_value_st *ival = NULL;
  766|   794k|    size_t j;
  767|   794k|    uint64_t ehash;
  768|   794k|    int lockless_reads = h->config.lockless_reads;
  769|       |
  770|   794k|    if (key->cached_hash)
  ------------------
  |  Branch (770:9): [True: 0, False: 794k]
  ------------------
  771|      0|        hash = key->cached_hash;
  772|   794k|    else
  773|   794k|        hash = key->cached_hash = h->config.ht_hash_fn(key);
  774|       |
  775|   794k|    if (!h->config.no_rcu)
  ------------------
  |  Branch (775:9): [True: 794k, False: 0]
  ------------------
  776|   794k|        md = ossl_rcu_deref(&h->md);
  ------------------
  |  |   35|   794k|#define ossl_rcu_deref(p) ossl_rcu_uptr_deref((void **)p)
  ------------------
  777|      0|    else
  778|      0|        md = h->md;
  779|   794k|    neigh_idx = neigh_idx_start = hash & md->neighborhood_mask;
  780|   794k|    do {
  781|   794k|        PREFETCH_NEIGHBORHOOD(md->neighborhoods[neigh_idx]);
  ------------------
  |  |   82|   794k|#define PREFETCH_NEIGHBORHOOD(x) __builtin_prefetch(x.entries)
  ------------------
  782|  1.87M|        for (j = 0; j < NEIGHBORHOOD_LEN; j++) {
  ------------------
  |  |  104|  1.87M|#define NEIGHBORHOOD_LEN (CACHE_LINE_BYTES / sizeof(struct ht_neighborhood_entry_st))
  |  |  ------------------
  |  |  |  |  101|  1.87M|#define CACHE_LINE_BYTES 64
  |  |  ------------------
  ------------------
  |  Branch (782:21): [True: 1.87M, False: 0]
  ------------------
  783|  1.87M|            if (!h->config.no_rcu)
  ------------------
  |  Branch (783:17): [True: 1.87M, False: 0]
  ------------------
  784|  1.87M|                ival = ossl_rcu_deref(&md->neighborhoods[neigh_idx].entries[j].value);
  ------------------
  |  |   35|  1.87M|#define ossl_rcu_deref(p) ossl_rcu_uptr_deref((void **)p)
  ------------------
  785|      0|            else
  786|      0|                ival = md->neighborhoods[neigh_idx].entries[j].value;
  787|  1.87M|            if (ival == NULL) {
  ------------------
  |  Branch (787:17): [True: 1.29k, False: 1.87M]
  ------------------
  788|  1.29k|                if (lockless_reads)
  ------------------
  |  Branch (788:21): [True: 1.29k, False: 0]
  ------------------
  789|       |                    /* lockless_reads implies no deletion, we can break out */
  790|  1.29k|                    return NULL;
  791|      0|                continue;
  792|  1.29k|            }
  793|  1.87M|            if (!h->config.no_rcu) {
  ------------------
  |  Branch (793:17): [True: 1.87M, False: 0]
  ------------------
  794|  1.87M|                if (!CRYPTO_atomic_load(&md->neighborhoods[neigh_idx].entries[j].hash,
  ------------------
  |  Branch (794:21): [True: 0, False: 1.87M]
  ------------------
  795|  1.87M|                        &ehash, h->atomic_lock))
  796|      0|                    return NULL;
  797|  1.87M|            } else {
  798|      0|                ehash = md->neighborhoods[neigh_idx].entries[j].hash;
  799|      0|            }
  800|  1.87M|            if (compare_hash(hash, ehash) && match_key(&ival->value.key, key))
  ------------------
  |  Branch (800:17): [True: 793k, False: 1.08M]
  |  Branch (800:46): [True: 793k, False: 0]
  ------------------
  801|   793k|                return (HT_VALUE *)ival;
  802|  1.87M|        }
  803|      0|        if (!lockless_reads)
  ------------------
  |  Branch (803:13): [True: 0, False: 0]
  ------------------
  804|      0|            break;
  805|       |        /* Continue search in subsequent neighborhoods */
  806|      0|        neigh_idx = (neigh_idx + 1) & md->neighborhood_mask;
  807|      0|    } while (neigh_idx != neigh_idx_start);
  ------------------
  |  Branch (807:14): [True: 0, False: 0]
  ------------------
  808|       |
  809|      0|    return NULL;
  810|   794k|}
hashtable.c:alloc_new_neighborhood_list:
  155|      3|{
  156|      3|    struct ht_neighborhood_st *ret;
  157|       |
  158|      3|#if !defined(OPENSSL_SMALL_FOOTPRINT)
  159|      3|    ret = OPENSSL_aligned_alloc_array(len, sizeof(struct ht_neighborhood_st),
  ------------------
  |  |  122|      3|    CRYPTO_aligned_alloc_array(num, size, alignment, freeptr,      \
  |  |  123|      3|        OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  160|      3|        CACHE_LINE_BYTES, freeptr);
  161|       |
  162|       |    /* fall back to regular malloc */
  163|      3|    if (ret == NULL)
  ------------------
  |  Branch (163:9): [True: 0, False: 3]
  ------------------
  164|      0|#endif
  165|      0|    {
  166|      0|        ret = *freeptr = OPENSSL_malloc_array(len, sizeof(struct ht_neighborhood_st));
  ------------------
  |  |  115|      0|    CRYPTO_malloc_array(num, size, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_malloc_array(num, size, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  167|      0|        if (ret == NULL)
  ------------------
  |  Branch (167:13): [True: 0, False: 0]
  ------------------
  168|      0|            return NULL;
  169|      0|    }
  170|      3|    memset(ret, 0, sizeof(struct ht_neighborhood_st) * len);
  171|      3|    return ret;
  172|      3|}
hashtable.c:internal_ht_hash_fn:
  180|   794k|{
  181|   794k|    return ossl_fnv1a_hash(key->keybuf, key->keysize);
  182|   794k|}
hashtable.c:alloc_new_value:
  689|    299|{
  690|    299|    struct ht_internal_value_st *tmp;
  691|    299|    size_t nvsize = sizeof(*tmp);
  692|       |
  693|    299|    if (h->config.collision_check == 1)
  ------------------
  |  Branch (693:9): [True: 299, False: 0]
  ------------------
  694|    299|        nvsize += key->keysize;
  695|       |
  696|    299|    tmp = OPENSSL_malloc(nvsize);
  ------------------
  |  |  111|    299|    CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  697|       |
  698|    299|    if (tmp == NULL)
  ------------------
  |  Branch (698:9): [True: 0, False: 299]
  ------------------
  699|      0|        return NULL;
  700|       |
  701|    299|    tmp->ht = h;
  702|    299|    tmp->value.value = data;
  703|    299|    tmp->value.type_id = type;
  704|    299|    tmp->value.key.keybuf = NULL;
  705|    299|    if (h->config.collision_check) {
  ------------------
  |  Branch (705:9): [True: 299, False: 0]
  ------------------
  706|    299|        tmp->value.key.keybuf = (uint8_t *)(tmp + 1);
  707|    299|        tmp->value.key.keysize = key->keysize;
  708|    299|        memcpy(tmp->value.key.keybuf, key->keybuf, key->keysize);
  709|    299|    }
  710|       |
  711|    299|    return tmp;
  712|    299|}
hashtable.c:ossl_ht_insert_locked:
  602|    299|{
  603|    299|    struct ht_mutable_data_st *md = h->md;
  604|    299|    uint64_t neigh_idx_start = hash & md->neighborhood_mask;
  605|    299|    uint64_t neigh_idx = neigh_idx_start;
  606|    299|    size_t j;
  607|    299|    uint64_t ihash;
  608|    299|    HT_VALUE *ival;
  609|    299|    size_t empty_idx = SIZE_MAX;
  610|    299|    int lockless_reads = h->config.lockless_reads;
  611|       |
  612|    299|    do {
  613|    299|        PREFETCH_NEIGHBORHOOD(md->neighborhoods[neigh_idx]);
  ------------------
  |  |   82|    299|#define PREFETCH_NEIGHBORHOOD(x) __builtin_prefetch(x.entries)
  ------------------
  614|       |
  615|    380|        for (j = 0; j < NEIGHBORHOOD_LEN; j++) {
  ------------------
  |  |  104|    380|#define NEIGHBORHOOD_LEN (CACHE_LINE_BYTES / sizeof(struct ht_neighborhood_entry_st))
  |  |  ------------------
  |  |  |  |  101|    380|#define CACHE_LINE_BYTES 64
  |  |  ------------------
  ------------------
  |  Branch (615:21): [True: 380, False: 0]
  ------------------
  616|    380|            if (!h->config.no_rcu)
  ------------------
  |  Branch (616:17): [True: 380, False: 0]
  ------------------
  617|    380|                ival = ossl_rcu_deref(&md->neighborhoods[neigh_idx].entries[j].value);
  ------------------
  |  |   35|    380|#define ossl_rcu_deref(p) ossl_rcu_uptr_deref((void **)p)
  ------------------
  618|      0|            else
  619|      0|                ival = (HT_VALUE *)md->neighborhoods[neigh_idx].entries[j].value;
  620|    380|            if (ival == NULL) {
  ------------------
  |  Branch (620:17): [True: 299, False: 81]
  ------------------
  621|    299|                empty_idx = j;
  622|       |                /* lockless_reads implies no deletion, we can break out */
  623|    299|                if (lockless_reads)
  ------------------
  |  Branch (623:21): [True: 299, False: 0]
  ------------------
  624|    299|                    goto not_found;
  625|      0|                continue;
  626|    299|            }
  627|     81|            if (!h->config.no_rcu) {
  ------------------
  |  Branch (627:17): [True: 81, False: 0]
  ------------------
  628|     81|                if (!CRYPTO_atomic_load(&md->neighborhoods[neigh_idx].entries[j].hash,
  ------------------
  |  Branch (628:21): [True: 0, False: 81]
  ------------------
  629|     81|                        &ihash, h->atomic_lock))
  630|      0|                    return 0;
  631|     81|            } else {
  632|      0|                ihash = md->neighborhoods[neigh_idx].entries[j].hash;
  633|      0|            }
  634|     81|            if (compare_hash(hash, ihash) && match_key(&newval->value.key, &ival->key)) {
  ------------------
  |  Branch (634:17): [True: 0, False: 81]
  |  Branch (634:46): [True: 0, False: 0]
  ------------------
  635|      0|                if (olddata == NULL) {
  ------------------
  |  Branch (635:21): [True: 0, False: 0]
  ------------------
  636|       |                    /* This would insert a duplicate -> fail */
  637|      0|                    return 0;
  638|      0|                }
  639|       |                /* Do a replacement */
  640|      0|                if (!h->config.no_rcu) {
  ------------------
  |  Branch (640:21): [True: 0, False: 0]
  ------------------
  641|      0|                    CRYPTO_RCU_CB_ITEM *cbi = ossl_rcu_cb_item_new();
  642|      0|                    if (cbi == NULL)
  ------------------
  |  Branch (642:25): [True: 0, False: 0]
  ------------------
  643|      0|                        return 0;
  644|      0|                    if (!CRYPTO_atomic_store(&md->neighborhoods[neigh_idx].entries[j].hash,
  ------------------
  |  Branch (644:25): [True: 0, False: 0]
  ------------------
  645|      0|                            hash, h->atomic_lock)) {
  646|      0|                        ossl_rcu_cb_item_free(cbi);
  647|      0|                        return 0;
  648|      0|                    }
  649|      0|                    *olddata = (HT_VALUE *)md->neighborhoods[neigh_idx].entries[j].value;
  650|      0|                    ossl_rcu_assign_ptr(&md->neighborhoods[neigh_idx].entries[j].value,
  ------------------
  |  |   36|      0|#define ossl_rcu_assign_ptr(p, v) ossl_rcu_assign_uptr((void **)p, (void **)v)
  ------------------
  651|      0|                        &newval);
  652|      0|                    ossl_rcu_call(h->lock, cbi, free_old_ht_value, *olddata);
  653|      0|                } else {
  654|      0|                    md->neighborhoods[neigh_idx].entries[j].hash = hash;
  655|      0|                    *olddata = (HT_VALUE *)md->neighborhoods[neigh_idx].entries[j].value;
  656|      0|                    md->neighborhoods[neigh_idx].entries[j].value = newval;
  657|      0|                }
  658|      0|                h->wpd.need_sync = 1;
  659|      0|                return 1;
  660|      0|            }
  661|     81|        }
  662|      0|        if (!lockless_reads)
  ------------------
  |  Branch (662:13): [True: 0, False: 0]
  ------------------
  663|      0|            break;
  664|       |        /* Continue search in subsequent neighborhoods */
  665|      0|        neigh_idx = (neigh_idx + 1) & md->neighborhood_mask;
  666|      0|    } while (neigh_idx != neigh_idx_start);
  ------------------
  |  Branch (666:14): [True: 0, False: 0]
  ------------------
  667|       |
  668|    299|not_found:
  669|       |    /* If we get to here, its just an insert */
  670|    299|    if (empty_idx == SIZE_MAX)
  ------------------
  |  Branch (670:9): [True: 0, False: 299]
  ------------------
  671|      0|        return -1; /* out of space */
  672|    299|    if (!h->config.no_rcu) {
  ------------------
  |  Branch (672:9): [True: 299, False: 0]
  ------------------
  673|    299|        if (!CRYPTO_atomic_store(&md->neighborhoods[neigh_idx].entries[empty_idx].hash,
  ------------------
  |  Branch (673:13): [True: 0, False: 299]
  ------------------
  674|    299|                hash, h->atomic_lock))
  675|      0|            return 0;
  676|    299|        ossl_rcu_assign_ptr(&md->neighborhoods[neigh_idx].entries[empty_idx].value,
  ------------------
  |  |   36|    299|#define ossl_rcu_assign_ptr(p, v) ossl_rcu_assign_uptr((void **)p, (void **)v)
  ------------------
  677|    299|            &newval);
  678|    299|    } else {
  679|      0|        md->neighborhoods[neigh_idx].entries[empty_idx].hash = hash;
  680|      0|        md->neighborhoods[neigh_idx].entries[empty_idx].value = newval;
  681|      0|    }
  682|    299|    h->wpd.value_count++;
  683|    299|    return 1;
  684|    299|}
hashtable.c:compare_hash:
  459|  1.87M|{
  460|  1.87M|    return (hash1 == hash2);
  461|  1.87M|}
hashtable.c:match_key:
  586|   793k|{
  587|       |    /*
  588|       |     * keys match if they are both present, the same size
  589|       |     * and compare equal in memory
  590|       |     */
  591|   793k|    PREFETCH(a->keybuf);
  ------------------
  |  |   83|   793k|#define PREFETCH(x) __builtin_prefetch(x)
  ------------------
  592|   793k|    PREFETCH(b->keybuf);
  ------------------
  |  |   83|   793k|#define PREFETCH(x) __builtin_prefetch(x)
  ------------------
  593|   793k|    if (a->keybuf != NULL && b->keybuf != NULL && a->keysize == b->keysize)
  ------------------
  |  Branch (593:9): [True: 793k, False: 0]
  |  Branch (593:30): [True: 793k, False: 0]
  |  Branch (593:51): [True: 793k, False: 0]
  ------------------
  594|   793k|        return !memcmp(a->keybuf, b->keybuf, a->keysize);
  595|       |
  596|      0|    return 1;
  597|   793k|}

ossl_err_load_HTTP_strings:
   82|      1|{
   83|      1|#ifndef OPENSSL_NO_ERR
   84|      1|    if (ERR_reason_error_string(HTTP_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (84:9): [True: 1, False: 0]
  ------------------
   85|      1|        ERR_load_strings_const(HTTP_str_reasons);
   86|      1|#endif
   87|      1|    return 1;
   88|      1|}

ossl_indicator_set_callback_new:
   21|      3|{
   22|      3|    INDICATOR_CB *cb;
   23|       |
   24|      3|    cb = OPENSSL_zalloc(sizeof(*cb));
  ------------------
  |  |  113|      3|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   25|      3|    return cb;
   26|      3|}

OPENSSL_init_crypto:
  349|  2.02k|{
  350|  2.02k|    uint64_t tmp;
  351|  2.02k|    int aloaddone = 0;
  352|       |
  353|       |    /* Applications depend on 0 being returned when cleanup was already done */
  354|  2.02k|    if (ossl_unlikely(stopped)) {
  ------------------
  |  |   23|  2.02k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 2.02k]
  |  |  ------------------
  ------------------
  355|      0|        if (!(opts & OPENSSL_INIT_BASE_ONLY))
  ------------------
  |  |   31|      0|#define OPENSSL_INIT_BASE_ONLY 0x00040000L
  ------------------
  |  Branch (355:13): [True: 0, False: 0]
  ------------------
  356|      0|            ERR_raise(ERR_LIB_CRYPTO, ERR_R_INIT_FAIL);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  357|      0|        return 0;
  358|      0|    }
  359|       |
  360|       |    /*
  361|       |     * We ignore failures from this function. It is probably because we are
  362|       |     * on a platform that doesn't support lockless atomic loads (we may not
  363|       |     * have created optsdone_lock yet so we can't use it). This is just an
  364|       |     * optimisation to skip the full checks in this function if we don't need
  365|       |     * to, so we carry on regardless in the event of failure.
  366|       |     *
  367|       |     * There could be a race here with other threads, so that optsdone has not
  368|       |     * been updated yet, even though the options have in fact been initialised.
  369|       |     * This doesn't matter - it just means we will run the full function
  370|       |     * unnecessarily - but all the critical code is contained in RUN_ONCE
  371|       |     * functions anyway so we are safe.
  372|       |     */
  373|  2.02k|    if (ossl_likely(CRYPTO_atomic_load(&optsdone, &tmp, NULL))) {
  ------------------
  |  |   22|  2.02k|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (22:24): [True: 2.02k, False: 0]
  |  |  ------------------
  ------------------
  374|  2.02k|        if ((tmp & opts) == opts)
  ------------------
  |  Branch (374:13): [True: 0, False: 2.02k]
  ------------------
  375|      0|            return 1;
  376|  2.02k|        aloaddone = 1;
  377|  2.02k|    }
  378|       |
  379|       |    /*
  380|       |     * At some point we should look at this function with a view to moving
  381|       |     * most/all of this into OSSL_LIB_CTX.
  382|       |     *
  383|       |     * When the caller specifies OPENSSL_INIT_BASE_ONLY, that should be the
  384|       |     * *only* option specified.  With that option we return immediately after
  385|       |     * doing the requested limited initialization.
  386|       |     *
  387|       |     * If we remain the only caller of err_shelve_state() the recursion should
  388|       |     * perhaps be removed, but if in doubt, it can be left in place.
  389|       |     */
  390|  2.02k|    if (ossl_unlikely(!RUN_ONCE(&base, ossl_init_base)))
  ------------------
  |  |   23|  4.04k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 2.02k]
  |  |  |  Branch (23:46): [True: 2.02k, False: 0]
  |  |  ------------------
  ------------------
  391|      0|        return 0;
  392|       |
  393|  2.02k|    if (opts & OPENSSL_INIT_BASE_ONLY)
  ------------------
  |  |   31|  2.02k|#define OPENSSL_INIT_BASE_ONLY 0x00040000L
  ------------------
  |  Branch (393:9): [True: 2.02k, False: 2]
  ------------------
  394|  2.02k|        return 1;
  395|       |
  396|       |    /*
  397|       |     * optsdone_lock should definitely be set up now, so we can now repeat the
  398|       |     * same check from above but be sure that it will work even on platforms
  399|       |     * without lockless CRYPTO_atomic_load
  400|       |     */
  401|      2|    if (!aloaddone) {
  ------------------
  |  Branch (401:9): [True: 0, False: 2]
  ------------------
  402|      0|        if (!CRYPTO_atomic_load(&optsdone, &tmp, optsdone_lock))
  ------------------
  |  Branch (402:13): [True: 0, False: 0]
  ------------------
  403|      0|            return 0;
  404|      0|        if ((tmp & opts) == opts)
  ------------------
  |  Branch (404:13): [True: 0, False: 0]
  ------------------
  405|      0|            return 1;
  406|      0|    }
  407|       |
  408|      2|    if ((opts & OPENSSL_INIT_NO_LOAD_CRYPTO_STRINGS)
  ------------------
  |  |  547|      2|#define OPENSSL_INIT_NO_LOAD_CRYPTO_STRINGS 0x00000001L
  ------------------
  |  Branch (408:9): [True: 0, False: 2]
  ------------------
  409|      0|        && !RUN_ONCE_ALT(&load_crypto_strings,
  ------------------
  |  |  148|      0|    (CRYPTO_THREAD_run_once(once, initalt##_ossl_) ? init##_ossl_ret_ : 0)
  |  |  ------------------
  |  |  |  Branch (148:6): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (409:12): [True: 0, False: 0]
  ------------------
  410|      2|            ossl_init_no_load_crypto_strings,
  411|      2|            ossl_init_load_crypto_strings))
  412|      0|        return 0;
  413|       |
  414|      2|    if ((opts & OPENSSL_INIT_LOAD_CRYPTO_STRINGS)
  ------------------
  |  |  548|      2|#define OPENSSL_INIT_LOAD_CRYPTO_STRINGS 0x00000002L
  ------------------
  |  Branch (414:9): [True: 1, False: 1]
  ------------------
  415|      1|        && !RUN_ONCE(&load_crypto_strings, ossl_init_load_crypto_strings))
  ------------------
  |  |  130|      1|    (CRYPTO_THREAD_run_once(once, init##_ossl_) ? init##_ossl_ret_ : 0)
  |  |  ------------------
  |  |  |  Branch (130:6): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (415:12): [True: 0, False: 1]
  ------------------
  416|      0|        return 0;
  417|       |
  418|      2|    if ((opts & OPENSSL_INIT_NO_LOAD_SSL_STRINGS)
  ------------------
  |  | 2901|      2|#define OPENSSL_INIT_NO_LOAD_SSL_STRINGS 0x00100000L
  ------------------
  |  Branch (418:9): [True: 0, False: 2]
  ------------------
  419|      0|        && !RUN_ONCE_ALT(&ssl_strings, ossl_init_no_load_ssl_strings,
  ------------------
  |  |  148|      0|    (CRYPTO_THREAD_run_once(once, initalt##_ossl_) ? init##_ossl_ret_ : 0)
  |  |  ------------------
  |  |  |  Branch (148:6): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (419:12): [True: 0, False: 0]
  ------------------
  420|      2|            ossl_init_load_ssl_strings))
  421|      0|        return 0;
  422|       |
  423|      2|    if ((opts & OPENSSL_INIT_LOAD_SSL_STRINGS)
  ------------------
  |  | 2902|      2|#define OPENSSL_INIT_LOAD_SSL_STRINGS 0x00200000L
  ------------------
  |  Branch (423:9): [True: 0, False: 2]
  ------------------
  424|      0|        && !RUN_ONCE(&ssl_strings, ossl_init_load_ssl_strings))
  ------------------
  |  |  130|      0|    (CRYPTO_THREAD_run_once(once, init##_ossl_) ? init##_ossl_ret_ : 0)
  |  |  ------------------
  |  |  |  Branch (130:6): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (424:12): [True: 0, False: 0]
  ------------------
  425|      0|        return 0;
  426|       |
  427|      2|    if ((opts & OPENSSL_INIT_NO_ADD_ALL_CIPHERS)
  ------------------
  |  |  551|      2|#define OPENSSL_INIT_NO_ADD_ALL_CIPHERS 0x00000010L
  ------------------
  |  Branch (427:9): [True: 0, False: 2]
  ------------------
  428|      0|        && !RUN_ONCE_ALT(&add_all_ciphers, ossl_init_no_add_all_ciphers,
  ------------------
  |  |  148|      0|    (CRYPTO_THREAD_run_once(once, initalt##_ossl_) ? init##_ossl_ret_ : 0)
  |  |  ------------------
  |  |  |  Branch (148:6): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (428:12): [True: 0, False: 0]
  ------------------
  429|      2|            ossl_init_add_all_ciphers))
  430|      0|        return 0;
  431|       |
  432|      2|    if ((opts & OPENSSL_INIT_ADD_ALL_CIPHERS)
  ------------------
  |  |  549|      2|#define OPENSSL_INIT_ADD_ALL_CIPHERS 0x00000004L
  ------------------
  |  Branch (432:9): [True: 1, False: 1]
  ------------------
  433|      1|        && !RUN_ONCE(&add_all_ciphers, ossl_init_add_all_ciphers))
  ------------------
  |  |  130|      1|    (CRYPTO_THREAD_run_once(once, init##_ossl_) ? init##_ossl_ret_ : 0)
  |  |  ------------------
  |  |  |  Branch (130:6): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (433:12): [True: 0, False: 1]
  ------------------
  434|      0|        return 0;
  435|       |
  436|      2|    if ((opts & OPENSSL_INIT_NO_ADD_ALL_DIGESTS)
  ------------------
  |  |  552|      2|#define OPENSSL_INIT_NO_ADD_ALL_DIGESTS 0x00000020L
  ------------------
  |  Branch (436:9): [True: 0, False: 2]
  ------------------
  437|      0|        && !RUN_ONCE_ALT(&add_all_digests, ossl_init_no_add_all_digests,
  ------------------
  |  |  148|      0|    (CRYPTO_THREAD_run_once(once, initalt##_ossl_) ? init##_ossl_ret_ : 0)
  |  |  ------------------
  |  |  |  Branch (148:6): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (437:12): [True: 0, False: 0]
  ------------------
  438|      2|            ossl_init_add_all_digests))
  439|      0|        return 0;
  440|       |
  441|      2|    if ((opts & OPENSSL_INIT_ADD_ALL_DIGESTS)
  ------------------
  |  |  550|      2|#define OPENSSL_INIT_ADD_ALL_DIGESTS 0x00000008L
  ------------------
  |  Branch (441:9): [True: 1, False: 1]
  ------------------
  442|      1|        && !RUN_ONCE(&add_all_digests, ossl_init_add_all_digests))
  ------------------
  |  |  130|      1|    (CRYPTO_THREAD_run_once(once, init##_ossl_) ? init##_ossl_ret_ : 0)
  |  |  ------------------
  |  |  |  Branch (130:6): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (442:12): [True: 0, False: 1]
  ------------------
  443|      0|        return 0;
  444|       |
  445|      2|    if ((opts & OPENSSL_INIT_ATFORK)
  ------------------
  |  |  557|      2|#define OPENSSL_INIT_ATFORK 0x00020000L
  ------------------
  |  Branch (445:9): [True: 0, False: 2]
  ------------------
  446|      0|        && !openssl_init_fork_handlers())
  ------------------
  |  Branch (446:12): [True: 0, False: 0]
  ------------------
  447|      0|        return 0;
  448|       |
  449|      2|    if ((opts & OPENSSL_INIT_NO_LOAD_CONFIG)
  ------------------
  |  |  554|      2|#define OPENSSL_INIT_NO_LOAD_CONFIG 0x00000080L
  ------------------
  |  Branch (449:9): [True: 0, False: 2]
  ------------------
  450|      0|        && !RUN_ONCE_ALT(&config, ossl_init_no_config, ossl_init_config))
  ------------------
  |  |  148|      0|    (CRYPTO_THREAD_run_once(once, initalt##_ossl_) ? init##_ossl_ret_ : 0)
  |  |  ------------------
  |  |  |  Branch (148:6): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (450:12): [True: 0, False: 0]
  ------------------
  451|      0|        return 0;
  452|       |
  453|      2|    if (opts & OPENSSL_INIT_LOAD_CONFIG) {
  ------------------
  |  |  553|      2|#define OPENSSL_INIT_LOAD_CONFIG 0x00000040L
  ------------------
  |  Branch (453:9): [True: 0, False: 2]
  ------------------
  454|      0|        int loading = CRYPTO_THREAD_get_local(&in_init_config_local) != NULL;
  455|       |
  456|       |        /* If called recursively from OBJ_ calls, just skip it. */
  457|      0|        if (!loading) {
  ------------------
  |  Branch (457:13): [True: 0, False: 0]
  ------------------
  458|      0|            int ret;
  459|       |
  460|      0|            if (!CRYPTO_THREAD_set_local(&in_init_config_local, (void *)-1))
  ------------------
  |  Branch (460:17): [True: 0, False: 0]
  ------------------
  461|      0|                return 0;
  462|      0|            if (settings == NULL) {
  ------------------
  |  Branch (462:17): [True: 0, False: 0]
  ------------------
  463|      0|                ret = RUN_ONCE(&config, ossl_init_config);
  ------------------
  |  |  130|      0|    (CRYPTO_THREAD_run_once(once, init##_ossl_) ? init##_ossl_ret_ : 0)
  |  |  ------------------
  |  |  |  Branch (130:6): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  464|      0|            } else {
  465|      0|                if (!CRYPTO_THREAD_write_lock(init_lock))
  ------------------
  |  Branch (465:21): [True: 0, False: 0]
  ------------------
  466|      0|                    return 0;
  467|      0|                conf_settings = settings;
  468|      0|                ret = RUN_ONCE_ALT(&config, ossl_init_config_settings,
  ------------------
  |  |  148|      0|    (CRYPTO_THREAD_run_once(once, initalt##_ossl_) ? init##_ossl_ret_ : 0)
  |  |  ------------------
  |  |  |  Branch (148:6): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  469|      0|                    ossl_init_config);
  470|      0|                conf_settings = NULL;
  471|      0|                CRYPTO_THREAD_unlock(init_lock);
  472|      0|            }
  473|       |
  474|      0|            if (ret <= 0)
  ------------------
  |  Branch (474:17): [True: 0, False: 0]
  ------------------
  475|      0|                return 0;
  476|      0|        }
  477|      0|    }
  478|       |
  479|      2|    if ((opts & OPENSSL_INIT_ASYNC)
  ------------------
  |  |  555|      2|#define OPENSSL_INIT_ASYNC 0x00000100L
  ------------------
  |  Branch (479:9): [True: 0, False: 2]
  ------------------
  480|      0|        && !RUN_ONCE(&async, ossl_init_async))
  ------------------
  |  |  130|      0|    (CRYPTO_THREAD_run_once(once, init##_ossl_) ? init##_ossl_ret_ : 0)
  |  |  ------------------
  |  |  |  Branch (130:6): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (480:12): [True: 0, False: 0]
  ------------------
  481|      0|        return 0;
  482|       |
  483|      2|    if (!CRYPTO_atomic_or(&optsdone, opts, &tmp, optsdone_lock))
  ------------------
  |  Branch (483:9): [True: 0, False: 2]
  ------------------
  484|      0|        return 0;
  485|       |
  486|      2|    return 1;
  487|      2|}
init.c:ossl_init_base:
   53|      1|{
   54|       |    /* no need to init trace */
   55|       |
   56|      1|    OSSL_TRACE(INIT, "ossl_init_base: setting up stop handlers\n");
  ------------------
  |  |  288|      1|    OSSL_TRACEV(category, (trc_out, "%s", text))
  |  |  ------------------
  |  |  |  |  283|      1|#define OSSL_TRACEV(category, args) ((void)0)
  |  |  ------------------
  ------------------
   57|       |#ifndef OPENSSL_NO_CRYPTO_MDEBUG
   58|       |    ossl_malloc_setup_failures();
   59|       |#endif
   60|       |
   61|      1|    if ((optsdone_lock = CRYPTO_THREAD_lock_new()) == NULL
  ------------------
  |  Branch (61:9): [True: 0, False: 1]
  ------------------
   62|      1|        || (init_lock = CRYPTO_THREAD_lock_new()) == NULL)
  ------------------
  |  Branch (62:12): [True: 0, False: 1]
  ------------------
   63|      0|        goto err;
   64|       |
   65|      1|    OPENSSL_cpuid_setup();
   66|       |
   67|      1|    if (!ossl_init_thread())
  ------------------
  |  Branch (67:9): [True: 0, False: 1]
  ------------------
   68|      0|        goto err;
   69|       |
   70|      1|    if (!CRYPTO_THREAD_init_local(&in_init_config_local, NULL))
  ------------------
  |  Branch (70:9): [True: 0, False: 1]
  ------------------
   71|      0|        goto err;
   72|       |
   73|      1|    base_inited = 1;
   74|      1|    return 1;
   75|       |
   76|      0|err:
   77|      0|    OSSL_TRACE(INIT, "ossl_init_base failed!\n");
  ------------------
  |  |  288|      0|    OSSL_TRACEV(category, (trc_out, "%s", text))
  |  |  ------------------
  |  |  |  |  283|      0|#define OSSL_TRACEV(category, args) ((void)0)
  |  |  ------------------
  ------------------
   78|      0|    CRYPTO_THREAD_lock_free(optsdone_lock);
   79|      0|    optsdone_lock = NULL;
   80|      0|    CRYPTO_THREAD_lock_free(init_lock);
   81|      0|    init_lock = NULL;
   82|       |
   83|      0|    return 0;
   84|      1|}
init.c:ossl_init_load_crypto_strings:
   89|      1|{
   90|      1|    int ret = 1;
   91|       |    /*
   92|       |     * OPENSSL_NO_AUTOERRINIT is provided here to prevent at compile time
   93|       |     * pulling in all the error strings during static linking
   94|       |     */
   95|      1|#if !defined(OPENSSL_NO_ERR) && !defined(OPENSSL_NO_AUTOERRINIT)
   96|      1|    void *err;
   97|       |
   98|      1|    if (!err_shelve_state(&err))
  ------------------
  |  Branch (98:9): [True: 0, False: 1]
  ------------------
   99|      0|        return 0;
  100|       |
  101|      1|    OSSL_TRACE(INIT, "ossl_err_load_crypto_strings()\n");
  ------------------
  |  |  288|      1|    OSSL_TRACEV(category, (trc_out, "%s", text))
  |  |  ------------------
  |  |  |  |  283|      1|#define OSSL_TRACEV(category, args) ((void)0)
  |  |  ------------------
  ------------------
  102|      1|    ret = ossl_err_load_crypto_strings();
  103|       |
  104|      1|    err_unshelve_state(err);
  105|      1|#endif
  106|      1|    return ret;
  107|      1|}
init.c:ossl_init_add_all_ciphers:
  140|      1|{
  141|       |    /*
  142|       |     * OPENSSL_NO_AUTOALGINIT is provided here to prevent at compile time
  143|       |     * pulling in all the ciphers during static linking
  144|       |     */
  145|      1|#ifndef OPENSSL_NO_AUTOALGINIT
  146|      1|    OSSL_TRACE(INIT, "openssl_add_all_ciphers_int()\n");
  ------------------
  |  |  288|      1|    OSSL_TRACEV(category, (trc_out, "%s", text))
  |  |  ------------------
  |  |  |  |  283|      1|#define OSSL_TRACEV(category, args) ((void)0)
  |  |  ------------------
  ------------------
  147|      1|    openssl_add_all_ciphers_int();
  148|      1|#endif
  149|      1|    return 1;
  150|      1|}
init.c:ossl_init_add_all_digests:
  161|      1|{
  162|       |    /*
  163|       |     * OPENSSL_NO_AUTOALGINIT is provided here to prevent at compile time
  164|       |     * pulling in all the ciphers during static linking
  165|       |     */
  166|      1|#ifndef OPENSSL_NO_AUTOALGINIT
  167|      1|    OSSL_TRACE(INIT, "openssl_add_all_digests()\n");
  ------------------
  |  |  288|      1|    OSSL_TRACEV(category, (trc_out, "%s", text))
  |  |  ------------------
  |  |  |  |  283|      1|#define OSSL_TRACEV(category, args) ((void)0)
  |  |  ------------------
  ------------------
  168|      1|    openssl_add_all_digests_int();
  169|      1|#endif
  170|      1|    return 1;
  171|      1|}

ossl_init_thread:
  240|      1|{
  241|      1|    if (!CRYPTO_THREAD_init_local(&destructor_key.value,
  ------------------
  |  Branch (241:9): [True: 0, False: 1]
  ------------------
  242|      1|            init_thread_destructor))
  243|      0|        return 0;
  244|       |
  245|      1|    return 1;
  246|      1|}
ossl_init_thread_start:
  392|      1|{
  393|      1|    THREAD_EVENT_HANDLER **hands;
  394|      1|    THREAD_EVENT_HANDLER *hand;
  395|      1|    OSSL_LIB_CTX *ctx = NULL;
  396|       |#ifdef FIPS_MODULE
  397|       |    /*
  398|       |     * In FIPS mode the list of THREAD_EVENT_HANDLERs is unique per combination
  399|       |     * of OSSL_LIB_CTX and thread. This is because in FIPS mode each
  400|       |     * OSSL_LIB_CTX gets informed about thread stop events individually.
  401|       |     */
  402|       |
  403|       |    ctx = arg;
  404|       |#endif
  405|       |
  406|      1|    hands = alloc_thread_local(ctx);
  407|       |
  408|      1|    if (hands == NULL)
  ------------------
  |  Branch (408:9): [True: 0, False: 1]
  ------------------
  409|      0|        return 0;
  410|       |
  411|       |#ifdef FIPS_MODULE
  412|       |    if (*hands == NULL) {
  413|       |        /*
  414|       |         * We've not yet registered any handlers for this thread. We need to get
  415|       |         * libcrypto to tell us about later thread stop events. c_thread_start
  416|       |         * is a callback to libcrypto defined in fipsprov.c
  417|       |         */
  418|       |        if (!ossl_thread_register_fips(ctx))
  419|       |            return 0;
  420|       |    }
  421|       |#endif
  422|       |
  423|      1|    hand = OPENSSL_malloc(sizeof(*hand));
  ------------------
  |  |  111|      1|    CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  424|      1|    if (hand == NULL)
  ------------------
  |  Branch (424:9): [True: 0, False: 1]
  ------------------
  425|      0|        return 0;
  426|       |
  427|      1|    hand->handfn = handfn;
  428|      1|    hand->arg = arg;
  429|      1|#ifndef FIPS_MODULE
  430|      1|    hand->index = index;
  431|      1|#endif
  432|      1|    hand->next = *hands;
  433|      1|    *hands = hand;
  434|       |
  435|      1|    return 1;
  436|      1|}
initthread.c:manage_thread_local:
  137|      1|{
  138|      1|    THREAD_EVENT_HANDLER **hands = get_thread_event_handler(ctx);
  139|       |
  140|      1|    if (alloc) {
  ------------------
  |  Branch (140:9): [True: 1, False: 0]
  ------------------
  141|      1|        if (hands == NULL) {
  ------------------
  |  Branch (141:13): [True: 1, False: 0]
  ------------------
  142|       |
  143|      1|            if ((hands = OPENSSL_zalloc(sizeof(*hands))) == NULL)
  ------------------
  |  |  113|      1|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  |  Branch (143:17): [True: 0, False: 1]
  ------------------
  144|      0|                return NULL;
  145|       |
  146|      1|            if (!set_thread_event_handler(ctx, hands)) {
  ------------------
  |  Branch (146:17): [True: 0, False: 1]
  ------------------
  147|      0|                OPENSSL_free(hands);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  148|      0|                return NULL;
  149|      0|            }
  150|      1|#ifndef FIPS_MODULE
  151|      1|            if (!init_thread_push_handlers(hands)) {
  ------------------
  |  Branch (151:17): [True: 0, False: 1]
  ------------------
  152|      0|                set_thread_event_handler(ctx, NULL);
  153|      0|                OPENSSL_free(hands);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  154|      0|                return NULL;
  155|      0|            }
  156|      1|#endif
  157|      1|        }
  158|      1|    } else if (!keep) {
  ------------------
  |  Branch (158:16): [True: 0, False: 0]
  ------------------
  159|      0|        set_thread_event_handler(ctx, NULL);
  160|      0|    }
  161|       |
  162|      1|    return hands;
  163|      1|}
initthread.c:get_thread_event_handler:
  114|      1|{
  115|       |#ifdef FIPS_MODULE
  116|       |    return CRYPTO_THREAD_get_local_ex(CRYPTO_THREAD_LOCAL_TEVENT_KEY, ctx);
  117|       |#else
  118|      1|    if (destructor_key.sane != -1)
  ------------------
  |  Branch (118:9): [True: 1, False: 0]
  ------------------
  119|      1|        return CRYPTO_THREAD_get_local(&destructor_key.value);
  120|      0|    return NULL;
  121|      1|#endif
  122|      1|}
initthread.c:set_thread_event_handler:
  125|      1|{
  126|       |#ifdef FIPS_MODULE
  127|       |    return CRYPTO_THREAD_set_local_ex(CRYPTO_THREAD_LOCAL_TEVENT_KEY, ctx, hands);
  128|       |#else
  129|      1|    if (destructor_key.sane != -1)
  ------------------
  |  Branch (129:9): [True: 1, False: 0]
  ------------------
  130|      1|        return CRYPTO_THREAD_set_local(&destructor_key.value, hands);
  131|      0|    return 0;
  132|      1|#endif
  133|      1|}
initthread.c:init_thread_push_handlers:
  192|      1|{
  193|      1|    int ret;
  194|      1|    GLOBAL_TEVENT_REGISTER *gtr;
  195|       |
  196|      1|    gtr = get_global_tevent_register();
  197|      1|    if (gtr == NULL)
  ------------------
  |  Branch (197:9): [True: 0, False: 1]
  ------------------
  198|      0|        return 0;
  199|       |
  200|      1|    if (!CRYPTO_THREAD_write_lock(gtr->lock))
  ------------------
  |  Branch (200:9): [True: 0, False: 1]
  ------------------
  201|      0|        return 0;
  202|      1|    ret = (sk_THREAD_EVENT_HANDLER_PTR_push(gtr->skhands, hands) != 0);
  203|      1|    CRYPTO_THREAD_unlock(gtr->lock);
  204|       |
  205|      1|    return ret;
  206|      1|}
initthread.c:get_global_tevent_register:
   79|      1|{
   80|      1|    if (!RUN_ONCE(&tevent_register_runonce, create_global_tevent_register))
  ------------------
  |  |  130|      1|    (CRYPTO_THREAD_run_once(once, init##_ossl_) ? init##_ossl_ret_ : 0)
  |  |  ------------------
  |  |  |  Branch (130:6): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (80:9): [True: 0, False: 1]
  ------------------
   81|      0|        return NULL;
   82|      1|    return glob_tevent_reg;
   83|      1|}
initthread.c:create_global_tevent_register:
   60|      1|{
   61|      1|    glob_tevent_reg = OPENSSL_zalloc(sizeof(*glob_tevent_reg));
  ------------------
  |  |  113|      1|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   62|      1|    if (glob_tevent_reg == NULL)
  ------------------
  |  Branch (62:9): [True: 0, False: 1]
  ------------------
   63|      0|        return 0;
   64|       |
   65|      1|    glob_tevent_reg->skhands = sk_THREAD_EVENT_HANDLER_PTR_new_null();
   66|      1|    glob_tevent_reg->lock = CRYPTO_THREAD_lock_new();
   67|      1|    if (glob_tevent_reg->skhands == NULL || glob_tevent_reg->lock == NULL) {
  ------------------
  |  Branch (67:9): [True: 0, False: 1]
  |  Branch (67:45): [True: 0, False: 1]
  ------------------
   68|      0|        sk_THREAD_EVENT_HANDLER_PTR_free(glob_tevent_reg->skhands);
   69|      0|        CRYPTO_THREAD_lock_free(glob_tevent_reg->lock);
   70|      0|        OPENSSL_free(glob_tevent_reg);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   71|      0|        glob_tevent_reg = NULL;
   72|      0|        return 0;
   73|      0|    }
   74|       |
   75|      1|    return 1;
   76|      1|}
initthread.c:alloc_thread_local:
  176|      1|{
  177|      1|    return manage_thread_local(ctx, 1, 0);
  178|      1|}

OPENSSL_LH_set_thunks:
   52|     14|{
   53|       |
   54|     14|    if (lh == NULL)
  ------------------
  |  Branch (54:9): [True: 0, False: 14]
  ------------------
   55|      0|        return NULL;
   56|     14|    lh->compw = cw;
   57|     14|    lh->hashw = hw;
   58|     14|    lh->daw = daw;
   59|     14|    lh->daaw = daaw;
   60|     14|    return lh;
   61|     14|}
OPENSSL_LH_new:
   64|     14|{
   65|     14|    OPENSSL_LHASH *ret;
   66|       |
   67|     14|    if ((ret = OPENSSL_zalloc(sizeof(*ret))) == NULL)
  ------------------
  |  |  113|     14|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  |  Branch (67:9): [True: 0, False: 14]
  ------------------
   68|      0|        return NULL;
   69|     14|    if ((ret->b = OPENSSL_calloc(MIN_NODES, sizeof(*ret->b))) == NULL)
  ------------------
  |  |  117|     14|    CRYPTO_calloc(num, size, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_calloc(num, size, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  |  Branch (69:9): [True: 0, False: 14]
  ------------------
   70|      0|        goto err;
   71|     14|    ret->comp = ((c == NULL) ? (OPENSSL_LH_COMPFUNC)strcmp : c);
  ------------------
  |  Branch (71:18): [True: 0, False: 14]
  ------------------
   72|     14|    ret->hash = ((h == NULL) ? (OPENSSL_LH_HASHFUNC)OPENSSL_LH_strhash : h);
  ------------------
  |  Branch (72:18): [True: 0, False: 14]
  ------------------
   73|     14|    ret->num_nodes = MIN_NODES / 2;
  ------------------
  |  |   39|     14|#define MIN_NODES 16
  ------------------
   74|     14|    ret->num_alloc_nodes = MIN_NODES;
  ------------------
  |  |   39|     14|#define MIN_NODES 16
  ------------------
   75|     14|    ret->pmax = MIN_NODES / 2;
  ------------------
  |  |   39|     14|#define MIN_NODES 16
  ------------------
   76|     14|    ret->up_load = UP_LOAD;
  ------------------
  |  |   40|     14|#define UP_LOAD (2 * LH_LOAD_MULT) /* load times 256 (default 2) */
  |  |  ------------------
  |  |  |  |   92|     14|#define LH_LOAD_MULT 256
  |  |  ------------------
  ------------------
   77|     14|    ret->down_load = DOWN_LOAD;
  ------------------
  |  |   41|     14|#define DOWN_LOAD (LH_LOAD_MULT) /* load times 256 (default 1) */
  |  |  ------------------
  |  |  |  |   92|     14|#define LH_LOAD_MULT 256
  |  |  ------------------
  ------------------
   78|     14|    return ret;
   79|       |
   80|      0|err:
   81|      0|    OPENSSL_free(ret->b);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   82|      0|    OPENSSL_free(ret);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   83|       |    return NULL;
   84|     14|}
OPENSSL_LH_flush:
   97|      5|{
   98|      5|    unsigned int i;
   99|      5|    OPENSSL_LH_NODE *n, *nn;
  100|       |
  101|      5|    if (lh == NULL)
  ------------------
  |  Branch (101:9): [True: 0, False: 5]
  ------------------
  102|      0|        return;
  103|       |
  104|     45|    for (i = 0; i < lh->num_nodes; i++) {
  ------------------
  |  Branch (104:17): [True: 40, False: 5]
  ------------------
  105|     40|        n = lh->b[i];
  106|     40|        while (n != NULL) {
  ------------------
  |  Branch (106:16): [True: 0, False: 40]
  ------------------
  107|      0|            nn = n->next;
  108|      0|            OPENSSL_free(n);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  109|      0|            n = nn;
  110|      0|        }
  111|     40|        lh->b[i] = NULL;
  112|     40|    }
  113|       |
  114|      5|    lh->num_items = 0;
  115|      5|}
OPENSSL_LH_insert:
  118|  4.75k|{
  119|  4.75k|    unsigned long hash;
  120|  4.75k|    OPENSSL_LH_NODE *nn, **rn;
  121|  4.75k|    void *ret;
  122|       |
  123|  4.75k|    lh->error = 0;
  124|  4.75k|    if ((lh->up_load <= (lh->num_items * LH_LOAD_MULT / lh->num_nodes)) && !expand(lh))
  ------------------
  |  |   92|  4.75k|#define LH_LOAD_MULT 256
  ------------------
  |  Branch (124:9): [True: 865, False: 3.88k]
  |  Branch (124:76): [True: 0, False: 865]
  ------------------
  125|      0|        return NULL; /* 'lh->error++' already done in 'expand' */
  126|       |
  127|  4.75k|    rn = getrn(lh, data, &hash);
  128|       |
  129|  4.75k|    if (*rn == NULL) {
  ------------------
  |  Branch (129:9): [True: 1.78k, False: 2.96k]
  ------------------
  130|  1.78k|        if ((nn = OPENSSL_malloc(sizeof(*nn))) == NULL) {
  ------------------
  |  |  111|  1.78k|    CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  |  Branch (130:13): [True: 0, False: 1.78k]
  ------------------
  131|      0|            lh->error++;
  132|      0|            return NULL;
  133|      0|        }
  134|  1.78k|        nn->data = data;
  135|  1.78k|        nn->next = NULL;
  136|  1.78k|        nn->hash = hash;
  137|  1.78k|        *rn = nn;
  138|  1.78k|        ret = NULL;
  139|  1.78k|        lh->num_items++;
  140|  2.96k|    } else { /* replace same key */
  141|  2.96k|        ret = (*rn)->data;
  142|  2.96k|        (*rn)->data = data;
  143|  2.96k|    }
  144|  4.75k|    return ret;
  145|  4.75k|}
OPENSSL_LH_retrieve:
  173|    556|{
  174|    556|    unsigned long hash;
  175|    556|    OPENSSL_LH_NODE **rn;
  176|       |
  177|    556|    if (lh->error != 0)
  ------------------
  |  Branch (177:9): [True: 0, False: 556]
  ------------------
  178|      0|        lh->error = 0;
  179|       |
  180|    556|    rn = getrn(lh, data, &hash);
  181|       |
  182|    556|    return *rn == NULL ? NULL : (*rn)->data;
  ------------------
  |  Branch (182:12): [True: 184, False: 372]
  ------------------
  183|    556|}
OPENSSL_LH_doall:
  216|      5|{
  217|      5|    if (lh == NULL)
  ------------------
  |  Branch (217:9): [True: 0, False: 5]
  ------------------
  218|      0|        return;
  219|       |
  220|      5|    doall_util_fn(lh, 0, lh->daw, func, (OPENSSL_LH_DOALL_FUNCARG)NULL,
  221|      5|        (OPENSSL_LH_DOALL_FUNCARG_THUNK)NULL, NULL);
  222|      5|}
OPENSSL_LH_doall_arg_thunk:
  237|      2|{
  238|      2|    doall_util_fn(lh, 1, (OPENSSL_LH_DOALL_FUNC_THUNK)NULL,
  239|       |        (OPENSSL_LH_DOALL_FUNC)NULL, fn, daaw, arg);
  240|      2|}
OPENSSL_LH_strhash:
  360|    118|{
  361|    118|    unsigned long ret = 0;
  362|    118|    long n;
  363|    118|    unsigned long v;
  364|    118|    int r;
  365|       |
  366|    118|    if ((c == NULL) || (*c == '\0'))
  ------------------
  |  Branch (366:9): [True: 0, False: 118]
  |  Branch (366:24): [True: 0, False: 118]
  ------------------
  367|      0|        return ret;
  368|       |
  369|    118|    n = 0x100;
  370|  1.17k|    while (*c) {
  ------------------
  |  Branch (370:12): [True: 1.05k, False: 118]
  ------------------
  371|  1.05k|        v = n | (*c);
  372|  1.05k|        n += 0x100;
  373|  1.05k|        r = (int)((v >> 2) ^ v) & 0x0f;
  374|       |        /* cast to uint64_t to avoid 32 bit shift of 32 bit value */
  375|  1.05k|        ret = (ret << r) | (unsigned long)((uint64_t)ret >> (32 - r));
  376|  1.05k|        ret &= 0xFFFFFFFFL;
  377|  1.05k|        ret ^= v * v;
  378|  1.05k|        c++;
  379|  1.05k|    }
  380|    118|    return (ret >> 16) ^ ret;
  381|    118|}
ossl_lh_strcasehash:
  398|    804|{
  399|    804|    unsigned long ret = 0;
  400|    804|    long n;
  401|    804|    unsigned long v;
  402|    804|    int r;
  403|       |#if defined(CHARSET_EBCDIC) && !defined(CHARSET_EBCDIC_TEST)
  404|       |    const long int case_adjust = ~0x40;
  405|       |#else
  406|    804|    const long int case_adjust = ~0x20;
  407|    804|#endif
  408|       |
  409|    804|    if (c == NULL || *c == '\0')
  ------------------
  |  Branch (409:9): [True: 0, False: 804]
  |  Branch (409:22): [True: 0, False: 804]
  ------------------
  410|      0|        return ret;
  411|       |
  412|  9.55k|    for (n = 0x100; *c != '\0'; n += 0x100) {
  ------------------
  |  Branch (412:21): [True: 8.74k, False: 804]
  ------------------
  413|  8.74k|        v = n | (case_adjust & *c);
  414|  8.74k|        r = (int)((v >> 2) ^ v) & 0x0f;
  415|       |        /* cast to uint64_t to avoid 32 bit shift of 32 bit value */
  416|  8.74k|        ret = (ret << r) | (unsigned long)((uint64_t)ret >> (32 - r));
  417|  8.74k|        ret &= 0xFFFFFFFFL;
  418|  8.74k|        ret ^= v * v;
  419|  8.74k|        c++;
  420|  8.74k|    }
  421|    804|    return (ret >> 16) ^ ret;
  422|    804|}
OPENSSL_LH_error:
  440|    261|{
  441|    261|    return lh->error;
  442|    261|}
lhash.c:doall_util_fn:
  191|      7|{
  192|      7|    int i;
  193|      7|    OPENSSL_LH_NODE *a, *n;
  194|       |
  195|      7|    if (lh == NULL)
  ------------------
  |  Branch (195:9): [True: 0, False: 7]
  ------------------
  196|      0|        return;
  197|       |
  198|       |    /*
  199|       |     * reverse the order so we search from 'top to bottom' We were having
  200|       |     * memory leaks otherwise
  201|       |     */
  202|    281|    for (i = lh->num_nodes - 1; i >= 0; i--) {
  ------------------
  |  Branch (202:33): [True: 274, False: 7]
  ------------------
  203|    274|        a = lh->b[i];
  204|    740|        while (a != NULL) {
  ------------------
  |  Branch (204:16): [True: 466, False: 274]
  ------------------
  205|    466|            n = a->next;
  206|    466|            if (use_arg)
  ------------------
  |  Branch (206:17): [True: 466, False: 0]
  ------------------
  207|    466|                wfunc_arg(a->data, arg, func_arg);
  208|      0|            else
  209|      0|                wfunc(a->data, func);
  210|    466|            a = n;
  211|    466|        }
  212|    274|    }
  213|      7|}
lhash.c:expand:
  243|    865|{
  244|    865|    OPENSSL_LH_NODE **n, **n1, **n2, *np;
  245|    865|    unsigned int p, pmax, nni, j;
  246|    865|    unsigned long hash;
  247|       |
  248|    865|    nni = lh->num_alloc_nodes;
  249|    865|    p = lh->p;
  250|    865|    pmax = lh->pmax;
  251|    865|    if (p + 1 >= pmax) {
  ------------------
  |  Branch (251:9): [True: 9, False: 856]
  ------------------
  252|      9|        j = nni * 2;
  253|      9|        n = OPENSSL_realloc_array(lh->b, j, sizeof(OPENSSL_LH_NODE *));
  ------------------
  |  |  129|      9|    CRYPTO_realloc_array(addr, num, size, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_realloc_array(addr, num, size, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  254|      9|        if (n == NULL) {
  ------------------
  |  Branch (254:13): [True: 0, False: 9]
  ------------------
  255|      0|            lh->error++;
  256|      0|            return 0;
  257|      0|        }
  258|      9|        lh->b = n;
  259|      9|        memset(n + nni, 0, sizeof(*n) * (j - nni));
  260|      9|        lh->pmax = nni;
  261|      9|        lh->num_alloc_nodes = j;
  262|      9|        lh->p = 0;
  263|    856|    } else {
  264|    856|        lh->p++;
  265|    856|    }
  266|       |
  267|    865|    lh->num_nodes++;
  268|    865|    n1 = &(lh->b[p]);
  269|    865|    n2 = &(lh->b[p + pmax]);
  270|    865|    *n2 = NULL;
  271|       |
  272|  3.94k|    for (np = *n1; np != NULL;) {
  ------------------
  |  Branch (272:20): [True: 3.07k, False: 865]
  ------------------
  273|  3.07k|        hash = np->hash;
  274|  3.07k|        if ((hash % nni) != p) { /* move it */
  ------------------
  |  Branch (274:13): [True: 543, False: 2.53k]
  ------------------
  275|    543|            *n1 = (*n1)->next;
  276|    543|            np->next = *n2;
  277|    543|            *n2 = np;
  278|    543|        } else
  279|  2.53k|            n1 = &((*n1)->next);
  280|  3.07k|        np = *n1;
  281|  3.07k|    }
  282|       |
  283|    865|    return 1;
  284|    865|}
lhash.c:getrn:
  320|  5.30k|{
  321|  5.30k|    OPENSSL_LH_NODE **ret, *n1;
  322|  5.30k|    unsigned long hash, nn;
  323|       |
  324|  5.30k|    if (lh->hashw != NULL)
  ------------------
  |  Branch (324:9): [True: 5.30k, False: 0]
  ------------------
  325|  5.30k|        hash = lh->hashw(data, lh->hash);
  326|      0|    else
  327|      0|        hash = lh->hash(data);
  328|       |
  329|  5.30k|    *rhash = hash;
  330|       |
  331|  5.30k|    nn = hash % lh->pmax;
  332|  5.30k|    if (nn < lh->p)
  ------------------
  |  Branch (332:9): [True: 2.57k, False: 2.72k]
  ------------------
  333|  2.57k|        nn = hash % lh->num_alloc_nodes;
  334|       |
  335|  5.30k|    ret = &(lh->b[(int)nn]);
  336|  13.4k|    for (n1 = *ret; n1 != NULL; n1 = n1->next) {
  ------------------
  |  Branch (336:21): [True: 11.4k, False: 1.97k]
  ------------------
  337|  11.4k|        if (n1->hash != hash) {
  ------------------
  |  Branch (337:13): [True: 7.93k, False: 3.49k]
  ------------------
  338|  7.93k|            ret = &(n1->next);
  339|  7.93k|            continue;
  340|  7.93k|        }
  341|       |
  342|  3.49k|        if (lh->compw != NULL) {
  ------------------
  |  Branch (342:13): [True: 3.49k, False: 0]
  ------------------
  343|  3.49k|            if (lh->compw(n1->data, data, lh->comp) == 0)
  ------------------
  |  Branch (343:17): [True: 3.33k, False: 156]
  ------------------
  344|  3.33k|                break;
  345|  3.49k|        } else {
  346|      0|            if (lh->comp(n1->data, data) == 0)
  ------------------
  |  Branch (346:17): [True: 0, False: 0]
  ------------------
  347|      0|                break;
  348|      0|        }
  349|    156|        ret = &(n1->next);
  350|    156|    }
  351|  5.30k|    return ret;
  352|  5.30k|}

MD4_Init:
   30|    110|{
   31|    110|    memset(c, 0, sizeof(*c));
   32|    110|    c->A = INIT_DATA_A;
  ------------------
  |  |   24|    110|#define INIT_DATA_A (unsigned long)0x67452301L
  ------------------
   33|    110|    c->B = INIT_DATA_B;
  ------------------
  |  |   25|    110|#define INIT_DATA_B (unsigned long)0xefcdab89L
  ------------------
   34|    110|    c->C = INIT_DATA_C;
  ------------------
  |  |   26|    110|#define INIT_DATA_C (unsigned long)0x98badcfeL
  ------------------
   35|    110|    c->D = INIT_DATA_D;
  ------------------
  |  |   27|    110|#define INIT_DATA_D (unsigned long)0x10325476L
  ------------------
   36|    110|    return 1;
   37|    110|}
md4_block_data_order:
   44|    185|{
   45|    185|    const unsigned char *data = data_;
   46|    185|    register unsigned MD32_REG_T A, B, C, D, l;
   47|    185|#ifndef MD32_XARRAY
   48|       |    /* See comment in crypto/sha/sha_local.h for details. */
   49|    185|    unsigned MD32_REG_T XX0, XX1, XX2, XX3, XX4, XX5, XX6, XX7,
   50|    185|        XX8, XX9, XX10, XX11, XX12, XX13, XX14, XX15;
   51|    185|#define X(i) XX##i
   52|       |#else
   53|       |    MD4_LONG XX[MD4_LBLOCK];
   54|       |#define X(i) XX[i]
   55|       |#endif
   56|       |
   57|    185|    A = c->A;
   58|    185|    B = c->B;
   59|    185|    C = c->C;
   60|    185|    D = c->D;
   61|       |
   62|  1.64M|    for (; num--;) {
  ------------------
  |  Branch (62:12): [True: 1.64M, False: 185]
  ------------------
   63|  1.64M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.64M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.64M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.64M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.64M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   64|  1.64M|        X(0) = l;
  ------------------
  |  |   51|  1.64M|#define X(i) XX##i
  ------------------
   65|  1.64M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.64M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.64M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.64M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.64M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   66|  1.64M|        X(1) = l;
  ------------------
  |  |   51|  1.64M|#define X(i) XX##i
  ------------------
   67|       |        /* Round 0 */
   68|  1.64M|        R0(A, B, C, D, X(0), 3, 0);
  ------------------
  |  |   61|  1.64M|    {                                        \
  |  |   62|  1.64M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   56|  1.64M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   63|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   64|  1.64M|    };
  ------------------
   69|  1.64M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.64M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.64M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.64M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.64M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   70|  1.64M|        X(2) = l;
  ------------------
  |  |   51|  1.64M|#define X(i) XX##i
  ------------------
   71|  1.64M|        R0(D, A, B, C, X(1), 7, 0);
  ------------------
  |  |   61|  1.64M|    {                                        \
  |  |   62|  1.64M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   56|  1.64M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   63|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   64|  1.64M|    };
  ------------------
   72|  1.64M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.64M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.64M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.64M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.64M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   73|  1.64M|        X(3) = l;
  ------------------
  |  |   51|  1.64M|#define X(i) XX##i
  ------------------
   74|  1.64M|        R0(C, D, A, B, X(2), 11, 0);
  ------------------
  |  |   61|  1.64M|    {                                        \
  |  |   62|  1.64M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   56|  1.64M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   63|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   64|  1.64M|    };
  ------------------
   75|  1.64M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.64M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.64M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.64M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.64M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   76|  1.64M|        X(4) = l;
  ------------------
  |  |   51|  1.64M|#define X(i) XX##i
  ------------------
   77|  1.64M|        R0(B, C, D, A, X(3), 19, 0);
  ------------------
  |  |   61|  1.64M|    {                                        \
  |  |   62|  1.64M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   56|  1.64M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   63|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   64|  1.64M|    };
  ------------------
   78|  1.64M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.64M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.64M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.64M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.64M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   79|  1.64M|        X(5) = l;
  ------------------
  |  |   51|  1.64M|#define X(i) XX##i
  ------------------
   80|  1.64M|        R0(A, B, C, D, X(4), 3, 0);
  ------------------
  |  |   61|  1.64M|    {                                        \
  |  |   62|  1.64M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   56|  1.64M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   63|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   64|  1.64M|    };
  ------------------
   81|  1.64M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.64M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.64M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.64M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.64M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   82|  1.64M|        X(6) = l;
  ------------------
  |  |   51|  1.64M|#define X(i) XX##i
  ------------------
   83|  1.64M|        R0(D, A, B, C, X(5), 7, 0);
  ------------------
  |  |   61|  1.64M|    {                                        \
  |  |   62|  1.64M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   56|  1.64M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   63|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   64|  1.64M|    };
  ------------------
   84|  1.64M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.64M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.64M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.64M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.64M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   85|  1.64M|        X(7) = l;
  ------------------
  |  |   51|  1.64M|#define X(i) XX##i
  ------------------
   86|  1.64M|        R0(C, D, A, B, X(6), 11, 0);
  ------------------
  |  |   61|  1.64M|    {                                        \
  |  |   62|  1.64M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   56|  1.64M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   63|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   64|  1.64M|    };
  ------------------
   87|  1.64M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.64M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.64M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.64M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.64M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   88|  1.64M|        X(8) = l;
  ------------------
  |  |   51|  1.64M|#define X(i) XX##i
  ------------------
   89|  1.64M|        R0(B, C, D, A, X(7), 19, 0);
  ------------------
  |  |   61|  1.64M|    {                                        \
  |  |   62|  1.64M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   56|  1.64M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   63|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   64|  1.64M|    };
  ------------------
   90|  1.64M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.64M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.64M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.64M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.64M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   91|  1.64M|        X(9) = l;
  ------------------
  |  |   51|  1.64M|#define X(i) XX##i
  ------------------
   92|  1.64M|        R0(A, B, C, D, X(8), 3, 0);
  ------------------
  |  |   61|  1.64M|    {                                        \
  |  |   62|  1.64M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   56|  1.64M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   63|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   64|  1.64M|    };
  ------------------
   93|  1.64M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.64M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.64M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.64M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.64M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   94|  1.64M|        X(10) = l;
  ------------------
  |  |   51|  1.64M|#define X(i) XX##i
  ------------------
   95|  1.64M|        R0(D, A, B, C, X(9), 7, 0);
  ------------------
  |  |   61|  1.64M|    {                                        \
  |  |   62|  1.64M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   56|  1.64M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   63|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   64|  1.64M|    };
  ------------------
   96|  1.64M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.64M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.64M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.64M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.64M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   97|  1.64M|        X(11) = l;
  ------------------
  |  |   51|  1.64M|#define X(i) XX##i
  ------------------
   98|  1.64M|        R0(C, D, A, B, X(10), 11, 0);
  ------------------
  |  |   61|  1.64M|    {                                        \
  |  |   62|  1.64M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   56|  1.64M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   63|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   64|  1.64M|    };
  ------------------
   99|  1.64M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.64M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.64M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.64M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.64M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
  100|  1.64M|        X(12) = l;
  ------------------
  |  |   51|  1.64M|#define X(i) XX##i
  ------------------
  101|  1.64M|        R0(B, C, D, A, X(11), 19, 0);
  ------------------
  |  |   61|  1.64M|    {                                        \
  |  |   62|  1.64M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   56|  1.64M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   63|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   64|  1.64M|    };
  ------------------
  102|  1.64M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.64M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.64M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.64M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.64M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
  103|  1.64M|        X(13) = l;
  ------------------
  |  |   51|  1.64M|#define X(i) XX##i
  ------------------
  104|  1.64M|        R0(A, B, C, D, X(12), 3, 0);
  ------------------
  |  |   61|  1.64M|    {                                        \
  |  |   62|  1.64M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   56|  1.64M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   63|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   64|  1.64M|    };
  ------------------
  105|  1.64M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.64M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.64M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.64M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.64M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
  106|  1.64M|        X(14) = l;
  ------------------
  |  |   51|  1.64M|#define X(i) XX##i
  ------------------
  107|  1.64M|        R0(D, A, B, C, X(13), 7, 0);
  ------------------
  |  |   61|  1.64M|    {                                        \
  |  |   62|  1.64M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   56|  1.64M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   63|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   64|  1.64M|    };
  ------------------
  108|  1.64M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.64M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.64M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.64M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.64M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
  109|  1.64M|        X(15) = l;
  ------------------
  |  |   51|  1.64M|#define X(i) XX##i
  ------------------
  110|  1.64M|        R0(C, D, A, B, X(14), 11, 0);
  ------------------
  |  |   61|  1.64M|    {                                        \
  |  |   62|  1.64M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   56|  1.64M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   63|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   64|  1.64M|    };
  ------------------
  111|  1.64M|        R0(B, C, D, A, X(15), 19, 0);
  ------------------
  |  |   61|  1.64M|    {                                        \
  |  |   62|  1.64M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   56|  1.64M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   63|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   64|  1.64M|    };
  ------------------
  112|       |        /* Round 1 */
  113|  1.64M|        R1(A, B, C, D, X(0), 3, 0x5A827999L);
  ------------------
  |  |   67|  1.64M|    {                                        \
  |  |   68|  1.64M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   57|  1.64M|#define G(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
  |  |  ------------------
  |  |   69|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   70|  1.64M|    };
  ------------------
  114|  1.64M|        R1(D, A, B, C, X(4), 5, 0x5A827999L);
  ------------------
  |  |   67|  1.64M|    {                                        \
  |  |   68|  1.64M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   57|  1.64M|#define G(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
  |  |  ------------------
  |  |   69|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   70|  1.64M|    };
  ------------------
  115|  1.64M|        R1(C, D, A, B, X(8), 9, 0x5A827999L);
  ------------------
  |  |   67|  1.64M|    {                                        \
  |  |   68|  1.64M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   57|  1.64M|#define G(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
  |  |  ------------------
  |  |   69|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   70|  1.64M|    };
  ------------------
  116|  1.64M|        R1(B, C, D, A, X(12), 13, 0x5A827999L);
  ------------------
  |  |   67|  1.64M|    {                                        \
  |  |   68|  1.64M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   57|  1.64M|#define G(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
  |  |  ------------------
  |  |   69|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   70|  1.64M|    };
  ------------------
  117|  1.64M|        R1(A, B, C, D, X(1), 3, 0x5A827999L);
  ------------------
  |  |   67|  1.64M|    {                                        \
  |  |   68|  1.64M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   57|  1.64M|#define G(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
  |  |  ------------------
  |  |   69|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   70|  1.64M|    };
  ------------------
  118|  1.64M|        R1(D, A, B, C, X(5), 5, 0x5A827999L);
  ------------------
  |  |   67|  1.64M|    {                                        \
  |  |   68|  1.64M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   57|  1.64M|#define G(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
  |  |  ------------------
  |  |   69|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   70|  1.64M|    };
  ------------------
  119|  1.64M|        R1(C, D, A, B, X(9), 9, 0x5A827999L);
  ------------------
  |  |   67|  1.64M|    {                                        \
  |  |   68|  1.64M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   57|  1.64M|#define G(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
  |  |  ------------------
  |  |   69|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   70|  1.64M|    };
  ------------------
  120|  1.64M|        R1(B, C, D, A, X(13), 13, 0x5A827999L);
  ------------------
  |  |   67|  1.64M|    {                                        \
  |  |   68|  1.64M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   57|  1.64M|#define G(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
  |  |  ------------------
  |  |   69|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   70|  1.64M|    };
  ------------------
  121|  1.64M|        R1(A, B, C, D, X(2), 3, 0x5A827999L);
  ------------------
  |  |   67|  1.64M|    {                                        \
  |  |   68|  1.64M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   57|  1.64M|#define G(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
  |  |  ------------------
  |  |   69|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   70|  1.64M|    };
  ------------------
  122|  1.64M|        R1(D, A, B, C, X(6), 5, 0x5A827999L);
  ------------------
  |  |   67|  1.64M|    {                                        \
  |  |   68|  1.64M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   57|  1.64M|#define G(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
  |  |  ------------------
  |  |   69|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   70|  1.64M|    };
  ------------------
  123|  1.64M|        R1(C, D, A, B, X(10), 9, 0x5A827999L);
  ------------------
  |  |   67|  1.64M|    {                                        \
  |  |   68|  1.64M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   57|  1.64M|#define G(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
  |  |  ------------------
  |  |   69|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   70|  1.64M|    };
  ------------------
  124|  1.64M|        R1(B, C, D, A, X(14), 13, 0x5A827999L);
  ------------------
  |  |   67|  1.64M|    {                                        \
  |  |   68|  1.64M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   57|  1.64M|#define G(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
  |  |  ------------------
  |  |   69|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   70|  1.64M|    };
  ------------------
  125|  1.64M|        R1(A, B, C, D, X(3), 3, 0x5A827999L);
  ------------------
  |  |   67|  1.64M|    {                                        \
  |  |   68|  1.64M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   57|  1.64M|#define G(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
  |  |  ------------------
  |  |   69|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   70|  1.64M|    };
  ------------------
  126|  1.64M|        R1(D, A, B, C, X(7), 5, 0x5A827999L);
  ------------------
  |  |   67|  1.64M|    {                                        \
  |  |   68|  1.64M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   57|  1.64M|#define G(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
  |  |  ------------------
  |  |   69|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   70|  1.64M|    };
  ------------------
  127|  1.64M|        R1(C, D, A, B, X(11), 9, 0x5A827999L);
  ------------------
  |  |   67|  1.64M|    {                                        \
  |  |   68|  1.64M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   57|  1.64M|#define G(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
  |  |  ------------------
  |  |   69|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   70|  1.64M|    };
  ------------------
  128|  1.64M|        R1(B, C, D, A, X(15), 13, 0x5A827999L);
  ------------------
  |  |   67|  1.64M|    {                                        \
  |  |   68|  1.64M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   57|  1.64M|#define G(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
  |  |  ------------------
  |  |   69|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   70|  1.64M|    };
  ------------------
  129|       |        /* Round 2 */
  130|  1.64M|        R2(A, B, C, D, X(0), 3, 0x6ED9EBA1L);
  ------------------
  |  |   73|  1.64M|    {                                        \
  |  |   74|  1.64M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   58|  1.64M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   75|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   76|  1.64M|    };
  ------------------
  131|  1.64M|        R2(D, A, B, C, X(8), 9, 0x6ED9EBA1L);
  ------------------
  |  |   73|  1.64M|    {                                        \
  |  |   74|  1.64M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   58|  1.64M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   75|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   76|  1.64M|    };
  ------------------
  132|  1.64M|        R2(C, D, A, B, X(4), 11, 0x6ED9EBA1L);
  ------------------
  |  |   73|  1.64M|    {                                        \
  |  |   74|  1.64M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   58|  1.64M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   75|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   76|  1.64M|    };
  ------------------
  133|  1.64M|        R2(B, C, D, A, X(12), 15, 0x6ED9EBA1L);
  ------------------
  |  |   73|  1.64M|    {                                        \
  |  |   74|  1.64M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   58|  1.64M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   75|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   76|  1.64M|    };
  ------------------
  134|  1.64M|        R2(A, B, C, D, X(2), 3, 0x6ED9EBA1L);
  ------------------
  |  |   73|  1.64M|    {                                        \
  |  |   74|  1.64M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   58|  1.64M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   75|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   76|  1.64M|    };
  ------------------
  135|  1.64M|        R2(D, A, B, C, X(10), 9, 0x6ED9EBA1L);
  ------------------
  |  |   73|  1.64M|    {                                        \
  |  |   74|  1.64M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   58|  1.64M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   75|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   76|  1.64M|    };
  ------------------
  136|  1.64M|        R2(C, D, A, B, X(6), 11, 0x6ED9EBA1L);
  ------------------
  |  |   73|  1.64M|    {                                        \
  |  |   74|  1.64M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   58|  1.64M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   75|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   76|  1.64M|    };
  ------------------
  137|  1.64M|        R2(B, C, D, A, X(14), 15, 0x6ED9EBA1L);
  ------------------
  |  |   73|  1.64M|    {                                        \
  |  |   74|  1.64M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   58|  1.64M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   75|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   76|  1.64M|    };
  ------------------
  138|  1.64M|        R2(A, B, C, D, X(1), 3, 0x6ED9EBA1L);
  ------------------
  |  |   73|  1.64M|    {                                        \
  |  |   74|  1.64M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   58|  1.64M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   75|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   76|  1.64M|    };
  ------------------
  139|  1.64M|        R2(D, A, B, C, X(9), 9, 0x6ED9EBA1L);
  ------------------
  |  |   73|  1.64M|    {                                        \
  |  |   74|  1.64M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   58|  1.64M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   75|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   76|  1.64M|    };
  ------------------
  140|  1.64M|        R2(C, D, A, B, X(5), 11, 0x6ED9EBA1L);
  ------------------
  |  |   73|  1.64M|    {                                        \
  |  |   74|  1.64M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   58|  1.64M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   75|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   76|  1.64M|    };
  ------------------
  141|  1.64M|        R2(B, C, D, A, X(13), 15, 0x6ED9EBA1L);
  ------------------
  |  |   73|  1.64M|    {                                        \
  |  |   74|  1.64M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   58|  1.64M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   75|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   76|  1.64M|    };
  ------------------
  142|  1.64M|        R2(A, B, C, D, X(3), 3, 0x6ED9EBA1L);
  ------------------
  |  |   73|  1.64M|    {                                        \
  |  |   74|  1.64M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   58|  1.64M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   75|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   76|  1.64M|    };
  ------------------
  143|  1.64M|        R2(D, A, B, C, X(11), 9, 0x6ED9EBA1L);
  ------------------
  |  |   73|  1.64M|    {                                        \
  |  |   74|  1.64M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   58|  1.64M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   75|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   76|  1.64M|    };
  ------------------
  144|  1.64M|        R2(C, D, A, B, X(7), 11, 0x6ED9EBA1L);
  ------------------
  |  |   73|  1.64M|    {                                        \
  |  |   74|  1.64M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   58|  1.64M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   75|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   76|  1.64M|    };
  ------------------
  145|  1.64M|        R2(B, C, D, A, X(15), 15, 0x6ED9EBA1L);
  ------------------
  |  |   73|  1.64M|    {                                        \
  |  |   74|  1.64M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   58|  1.64M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   75|  1.64M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.64M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   76|  1.64M|    };
  ------------------
  146|       |
  147|  1.64M|        A = c->A += A;
  148|  1.64M|        B = c->B += B;
  149|  1.64M|        C = c->C += C;
  150|  1.64M|        D = c->D += D;
  151|  1.64M|    }
  152|    185|}

MD5_Init:
   30|    158|{
   31|    158|    memset(c, 0, sizeof(*c));
   32|    158|    c->A = INIT_DATA_A;
  ------------------
  |  |   24|    158|#define INIT_DATA_A (unsigned long)0x67452301L
  ------------------
   33|    158|    c->B = INIT_DATA_B;
  ------------------
  |  |   25|    158|#define INIT_DATA_B (unsigned long)0xefcdab89L
  ------------------
   34|    158|    c->C = INIT_DATA_C;
  ------------------
  |  |   26|    158|#define INIT_DATA_C (unsigned long)0x98badcfeL
  ------------------
   35|    158|    c->D = INIT_DATA_D;
  ------------------
  |  |   27|    158|#define INIT_DATA_D (unsigned long)0x10325476L
  ------------------
   36|    158|    return 1;
   37|    158|}
md5_block_data_order:
   44|    257|{
   45|    257|    const unsigned char *data = data_;
   46|    257|    register unsigned MD32_REG_T A, B, C, D, l;
   47|    257|#ifndef MD32_XARRAY
   48|       |    /* See comment in crypto/sha/sha_local.h for details. */
   49|    257|    unsigned MD32_REG_T XX0, XX1, XX2, XX3, XX4, XX5, XX6, XX7,
   50|    257|        XX8, XX9, XX10, XX11, XX12, XX13, XX14, XX15;
   51|    257|#define X(i) XX##i
   52|       |#else
   53|       |    MD5_LONG XX[MD5_LBLOCK];
   54|       |#define X(i) XX[i]
   55|       |#endif
   56|       |
   57|    257|    A = c->A;
   58|    257|    B = c->B;
   59|    257|    C = c->C;
   60|    257|    D = c->D;
   61|       |
   62|  1.74M|    for (; num--;) {
  ------------------
  |  Branch (62:12): [True: 1.74M, False: 257]
  ------------------
   63|  1.74M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.74M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.74M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.74M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.74M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   64|  1.74M|        X(0) = l;
  ------------------
  |  |   51|  1.74M|#define X(i) XX##i
  ------------------
   65|  1.74M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.74M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.74M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.74M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.74M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   66|  1.74M|        X(1) = l;
  ------------------
  |  |   51|  1.74M|#define X(i) XX##i
  ------------------
   67|       |        /* Round 0 */
   68|  1.74M|        R0(A, B, C, D, X(0), 7, 0xd76aa478L);
  ------------------
  |  |   72|  1.74M|    {                                        \
  |  |   73|  1.74M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   66|  1.74M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   74|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   75|  1.74M|        a += b;                              \
  |  |   76|  1.74M|    };
  ------------------
   69|  1.74M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.74M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.74M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.74M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.74M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   70|  1.74M|        X(2) = l;
  ------------------
  |  |   51|  1.74M|#define X(i) XX##i
  ------------------
   71|  1.74M|        R0(D, A, B, C, X(1), 12, 0xe8c7b756L);
  ------------------
  |  |   72|  1.74M|    {                                        \
  |  |   73|  1.74M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   66|  1.74M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   74|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   75|  1.74M|        a += b;                              \
  |  |   76|  1.74M|    };
  ------------------
   72|  1.74M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.74M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.74M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.74M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.74M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   73|  1.74M|        X(3) = l;
  ------------------
  |  |   51|  1.74M|#define X(i) XX##i
  ------------------
   74|  1.74M|        R0(C, D, A, B, X(2), 17, 0x242070dbL);
  ------------------
  |  |   72|  1.74M|    {                                        \
  |  |   73|  1.74M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   66|  1.74M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   74|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   75|  1.74M|        a += b;                              \
  |  |   76|  1.74M|    };
  ------------------
   75|  1.74M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.74M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.74M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.74M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.74M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   76|  1.74M|        X(4) = l;
  ------------------
  |  |   51|  1.74M|#define X(i) XX##i
  ------------------
   77|  1.74M|        R0(B, C, D, A, X(3), 22, 0xc1bdceeeL);
  ------------------
  |  |   72|  1.74M|    {                                        \
  |  |   73|  1.74M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   66|  1.74M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   74|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   75|  1.74M|        a += b;                              \
  |  |   76|  1.74M|    };
  ------------------
   78|  1.74M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.74M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.74M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.74M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.74M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   79|  1.74M|        X(5) = l;
  ------------------
  |  |   51|  1.74M|#define X(i) XX##i
  ------------------
   80|  1.74M|        R0(A, B, C, D, X(4), 7, 0xf57c0fafL);
  ------------------
  |  |   72|  1.74M|    {                                        \
  |  |   73|  1.74M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   66|  1.74M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   74|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   75|  1.74M|        a += b;                              \
  |  |   76|  1.74M|    };
  ------------------
   81|  1.74M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.74M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.74M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.74M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.74M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   82|  1.74M|        X(6) = l;
  ------------------
  |  |   51|  1.74M|#define X(i) XX##i
  ------------------
   83|  1.74M|        R0(D, A, B, C, X(5), 12, 0x4787c62aL);
  ------------------
  |  |   72|  1.74M|    {                                        \
  |  |   73|  1.74M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   66|  1.74M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   74|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   75|  1.74M|        a += b;                              \
  |  |   76|  1.74M|    };
  ------------------
   84|  1.74M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.74M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.74M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.74M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.74M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   85|  1.74M|        X(7) = l;
  ------------------
  |  |   51|  1.74M|#define X(i) XX##i
  ------------------
   86|  1.74M|        R0(C, D, A, B, X(6), 17, 0xa8304613L);
  ------------------
  |  |   72|  1.74M|    {                                        \
  |  |   73|  1.74M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   66|  1.74M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   74|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   75|  1.74M|        a += b;                              \
  |  |   76|  1.74M|    };
  ------------------
   87|  1.74M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.74M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.74M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.74M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.74M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   88|  1.74M|        X(8) = l;
  ------------------
  |  |   51|  1.74M|#define X(i) XX##i
  ------------------
   89|  1.74M|        R0(B, C, D, A, X(7), 22, 0xfd469501L);
  ------------------
  |  |   72|  1.74M|    {                                        \
  |  |   73|  1.74M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   66|  1.74M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   74|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   75|  1.74M|        a += b;                              \
  |  |   76|  1.74M|    };
  ------------------
   90|  1.74M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.74M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.74M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.74M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.74M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   91|  1.74M|        X(9) = l;
  ------------------
  |  |   51|  1.74M|#define X(i) XX##i
  ------------------
   92|  1.74M|        R0(A, B, C, D, X(8), 7, 0x698098d8L);
  ------------------
  |  |   72|  1.74M|    {                                        \
  |  |   73|  1.74M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   66|  1.74M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   74|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   75|  1.74M|        a += b;                              \
  |  |   76|  1.74M|    };
  ------------------
   93|  1.74M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.74M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.74M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.74M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.74M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   94|  1.74M|        X(10) = l;
  ------------------
  |  |   51|  1.74M|#define X(i) XX##i
  ------------------
   95|  1.74M|        R0(D, A, B, C, X(9), 12, 0x8b44f7afL);
  ------------------
  |  |   72|  1.74M|    {                                        \
  |  |   73|  1.74M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   66|  1.74M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   74|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   75|  1.74M|        a += b;                              \
  |  |   76|  1.74M|    };
  ------------------
   96|  1.74M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.74M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.74M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.74M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.74M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   97|  1.74M|        X(11) = l;
  ------------------
  |  |   51|  1.74M|#define X(i) XX##i
  ------------------
   98|  1.74M|        R0(C, D, A, B, X(10), 17, 0xffff5bb1L);
  ------------------
  |  |   72|  1.74M|    {                                        \
  |  |   73|  1.74M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   66|  1.74M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   74|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   75|  1.74M|        a += b;                              \
  |  |   76|  1.74M|    };
  ------------------
   99|  1.74M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.74M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.74M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.74M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.74M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
  100|  1.74M|        X(12) = l;
  ------------------
  |  |   51|  1.74M|#define X(i) XX##i
  ------------------
  101|  1.74M|        R0(B, C, D, A, X(11), 22, 0x895cd7beL);
  ------------------
  |  |   72|  1.74M|    {                                        \
  |  |   73|  1.74M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   66|  1.74M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   74|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   75|  1.74M|        a += b;                              \
  |  |   76|  1.74M|    };
  ------------------
  102|  1.74M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.74M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.74M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.74M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.74M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
  103|  1.74M|        X(13) = l;
  ------------------
  |  |   51|  1.74M|#define X(i) XX##i
  ------------------
  104|  1.74M|        R0(A, B, C, D, X(12), 7, 0x6b901122L);
  ------------------
  |  |   72|  1.74M|    {                                        \
  |  |   73|  1.74M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   66|  1.74M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   74|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   75|  1.74M|        a += b;                              \
  |  |   76|  1.74M|    };
  ------------------
  105|  1.74M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.74M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.74M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.74M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.74M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
  106|  1.74M|        X(14) = l;
  ------------------
  |  |   51|  1.74M|#define X(i) XX##i
  ------------------
  107|  1.74M|        R0(D, A, B, C, X(13), 12, 0xfd987193L);
  ------------------
  |  |   72|  1.74M|    {                                        \
  |  |   73|  1.74M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   66|  1.74M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   74|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   75|  1.74M|        a += b;                              \
  |  |   76|  1.74M|    };
  ------------------
  108|  1.74M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.74M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.74M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.74M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.74M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
  109|  1.74M|        X(15) = l;
  ------------------
  |  |   51|  1.74M|#define X(i) XX##i
  ------------------
  110|  1.74M|        R0(C, D, A, B, X(14), 17, 0xa679438eL);
  ------------------
  |  |   72|  1.74M|    {                                        \
  |  |   73|  1.74M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   66|  1.74M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   74|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   75|  1.74M|        a += b;                              \
  |  |   76|  1.74M|    };
  ------------------
  111|  1.74M|        R0(B, C, D, A, X(15), 22, 0x49b40821L);
  ------------------
  |  |   72|  1.74M|    {                                        \
  |  |   73|  1.74M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   66|  1.74M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   74|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   75|  1.74M|        a += b;                              \
  |  |   76|  1.74M|    };
  ------------------
  112|       |        /* Round 1 */
  113|  1.74M|        R1(A, B, C, D, X(1), 5, 0xf61e2562L);
  ------------------
  |  |   79|  1.74M|    {                                        \
  |  |   80|  1.74M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   67|  1.74M|#define G(b, c, d) ((((b) ^ (c)) & (d)) ^ (c))
  |  |  ------------------
  |  |   81|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   82|  1.74M|        a += b;                              \
  |  |   83|  1.74M|    };
  ------------------
  114|  1.74M|        R1(D, A, B, C, X(6), 9, 0xc040b340L);
  ------------------
  |  |   79|  1.74M|    {                                        \
  |  |   80|  1.74M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   67|  1.74M|#define G(b, c, d) ((((b) ^ (c)) & (d)) ^ (c))
  |  |  ------------------
  |  |   81|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   82|  1.74M|        a += b;                              \
  |  |   83|  1.74M|    };
  ------------------
  115|  1.74M|        R1(C, D, A, B, X(11), 14, 0x265e5a51L);
  ------------------
  |  |   79|  1.74M|    {                                        \
  |  |   80|  1.74M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   67|  1.74M|#define G(b, c, d) ((((b) ^ (c)) & (d)) ^ (c))
  |  |  ------------------
  |  |   81|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   82|  1.74M|        a += b;                              \
  |  |   83|  1.74M|    };
  ------------------
  116|  1.74M|        R1(B, C, D, A, X(0), 20, 0xe9b6c7aaL);
  ------------------
  |  |   79|  1.74M|    {                                        \
  |  |   80|  1.74M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   67|  1.74M|#define G(b, c, d) ((((b) ^ (c)) & (d)) ^ (c))
  |  |  ------------------
  |  |   81|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   82|  1.74M|        a += b;                              \
  |  |   83|  1.74M|    };
  ------------------
  117|  1.74M|        R1(A, B, C, D, X(5), 5, 0xd62f105dL);
  ------------------
  |  |   79|  1.74M|    {                                        \
  |  |   80|  1.74M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   67|  1.74M|#define G(b, c, d) ((((b) ^ (c)) & (d)) ^ (c))
  |  |  ------------------
  |  |   81|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   82|  1.74M|        a += b;                              \
  |  |   83|  1.74M|    };
  ------------------
  118|  1.74M|        R1(D, A, B, C, X(10), 9, 0x02441453L);
  ------------------
  |  |   79|  1.74M|    {                                        \
  |  |   80|  1.74M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   67|  1.74M|#define G(b, c, d) ((((b) ^ (c)) & (d)) ^ (c))
  |  |  ------------------
  |  |   81|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   82|  1.74M|        a += b;                              \
  |  |   83|  1.74M|    };
  ------------------
  119|  1.74M|        R1(C, D, A, B, X(15), 14, 0xd8a1e681L);
  ------------------
  |  |   79|  1.74M|    {                                        \
  |  |   80|  1.74M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   67|  1.74M|#define G(b, c, d) ((((b) ^ (c)) & (d)) ^ (c))
  |  |  ------------------
  |  |   81|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   82|  1.74M|        a += b;                              \
  |  |   83|  1.74M|    };
  ------------------
  120|  1.74M|        R1(B, C, D, A, X(4), 20, 0xe7d3fbc8L);
  ------------------
  |  |   79|  1.74M|    {                                        \
  |  |   80|  1.74M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   67|  1.74M|#define G(b, c, d) ((((b) ^ (c)) & (d)) ^ (c))
  |  |  ------------------
  |  |   81|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   82|  1.74M|        a += b;                              \
  |  |   83|  1.74M|    };
  ------------------
  121|  1.74M|        R1(A, B, C, D, X(9), 5, 0x21e1cde6L);
  ------------------
  |  |   79|  1.74M|    {                                        \
  |  |   80|  1.74M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   67|  1.74M|#define G(b, c, d) ((((b) ^ (c)) & (d)) ^ (c))
  |  |  ------------------
  |  |   81|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   82|  1.74M|        a += b;                              \
  |  |   83|  1.74M|    };
  ------------------
  122|  1.74M|        R1(D, A, B, C, X(14), 9, 0xc33707d6L);
  ------------------
  |  |   79|  1.74M|    {                                        \
  |  |   80|  1.74M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   67|  1.74M|#define G(b, c, d) ((((b) ^ (c)) & (d)) ^ (c))
  |  |  ------------------
  |  |   81|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   82|  1.74M|        a += b;                              \
  |  |   83|  1.74M|    };
  ------------------
  123|  1.74M|        R1(C, D, A, B, X(3), 14, 0xf4d50d87L);
  ------------------
  |  |   79|  1.74M|    {                                        \
  |  |   80|  1.74M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   67|  1.74M|#define G(b, c, d) ((((b) ^ (c)) & (d)) ^ (c))
  |  |  ------------------
  |  |   81|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   82|  1.74M|        a += b;                              \
  |  |   83|  1.74M|    };
  ------------------
  124|  1.74M|        R1(B, C, D, A, X(8), 20, 0x455a14edL);
  ------------------
  |  |   79|  1.74M|    {                                        \
  |  |   80|  1.74M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   67|  1.74M|#define G(b, c, d) ((((b) ^ (c)) & (d)) ^ (c))
  |  |  ------------------
  |  |   81|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   82|  1.74M|        a += b;                              \
  |  |   83|  1.74M|    };
  ------------------
  125|  1.74M|        R1(A, B, C, D, X(13), 5, 0xa9e3e905L);
  ------------------
  |  |   79|  1.74M|    {                                        \
  |  |   80|  1.74M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   67|  1.74M|#define G(b, c, d) ((((b) ^ (c)) & (d)) ^ (c))
  |  |  ------------------
  |  |   81|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   82|  1.74M|        a += b;                              \
  |  |   83|  1.74M|    };
  ------------------
  126|  1.74M|        R1(D, A, B, C, X(2), 9, 0xfcefa3f8L);
  ------------------
  |  |   79|  1.74M|    {                                        \
  |  |   80|  1.74M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   67|  1.74M|#define G(b, c, d) ((((b) ^ (c)) & (d)) ^ (c))
  |  |  ------------------
  |  |   81|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   82|  1.74M|        a += b;                              \
  |  |   83|  1.74M|    };
  ------------------
  127|  1.74M|        R1(C, D, A, B, X(7), 14, 0x676f02d9L);
  ------------------
  |  |   79|  1.74M|    {                                        \
  |  |   80|  1.74M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   67|  1.74M|#define G(b, c, d) ((((b) ^ (c)) & (d)) ^ (c))
  |  |  ------------------
  |  |   81|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   82|  1.74M|        a += b;                              \
  |  |   83|  1.74M|    };
  ------------------
  128|  1.74M|        R1(B, C, D, A, X(12), 20, 0x8d2a4c8aL);
  ------------------
  |  |   79|  1.74M|    {                                        \
  |  |   80|  1.74M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   67|  1.74M|#define G(b, c, d) ((((b) ^ (c)) & (d)) ^ (c))
  |  |  ------------------
  |  |   81|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   82|  1.74M|        a += b;                              \
  |  |   83|  1.74M|    };
  ------------------
  129|       |        /* Round 2 */
  130|  1.74M|        R2(A, B, C, D, X(5), 4, 0xfffa3942L);
  ------------------
  |  |   86|  1.74M|    {                                        \
  |  |   87|  1.74M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   68|  1.74M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   88|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   89|  1.74M|        a += b;                              \
  |  |   90|  1.74M|    };
  ------------------
  131|  1.74M|        R2(D, A, B, C, X(8), 11, 0x8771f681L);
  ------------------
  |  |   86|  1.74M|    {                                        \
  |  |   87|  1.74M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   68|  1.74M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   88|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   89|  1.74M|        a += b;                              \
  |  |   90|  1.74M|    };
  ------------------
  132|  1.74M|        R2(C, D, A, B, X(11), 16, 0x6d9d6122L);
  ------------------
  |  |   86|  1.74M|    {                                        \
  |  |   87|  1.74M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   68|  1.74M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   88|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   89|  1.74M|        a += b;                              \
  |  |   90|  1.74M|    };
  ------------------
  133|  1.74M|        R2(B, C, D, A, X(14), 23, 0xfde5380cL);
  ------------------
  |  |   86|  1.74M|    {                                        \
  |  |   87|  1.74M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   68|  1.74M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   88|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   89|  1.74M|        a += b;                              \
  |  |   90|  1.74M|    };
  ------------------
  134|  1.74M|        R2(A, B, C, D, X(1), 4, 0xa4beea44L);
  ------------------
  |  |   86|  1.74M|    {                                        \
  |  |   87|  1.74M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   68|  1.74M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   88|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   89|  1.74M|        a += b;                              \
  |  |   90|  1.74M|    };
  ------------------
  135|  1.74M|        R2(D, A, B, C, X(4), 11, 0x4bdecfa9L);
  ------------------
  |  |   86|  1.74M|    {                                        \
  |  |   87|  1.74M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   68|  1.74M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   88|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   89|  1.74M|        a += b;                              \
  |  |   90|  1.74M|    };
  ------------------
  136|  1.74M|        R2(C, D, A, B, X(7), 16, 0xf6bb4b60L);
  ------------------
  |  |   86|  1.74M|    {                                        \
  |  |   87|  1.74M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   68|  1.74M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   88|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   89|  1.74M|        a += b;                              \
  |  |   90|  1.74M|    };
  ------------------
  137|  1.74M|        R2(B, C, D, A, X(10), 23, 0xbebfbc70L);
  ------------------
  |  |   86|  1.74M|    {                                        \
  |  |   87|  1.74M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   68|  1.74M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   88|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   89|  1.74M|        a += b;                              \
  |  |   90|  1.74M|    };
  ------------------
  138|  1.74M|        R2(A, B, C, D, X(13), 4, 0x289b7ec6L);
  ------------------
  |  |   86|  1.74M|    {                                        \
  |  |   87|  1.74M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   68|  1.74M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   88|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   89|  1.74M|        a += b;                              \
  |  |   90|  1.74M|    };
  ------------------
  139|  1.74M|        R2(D, A, B, C, X(0), 11, 0xeaa127faL);
  ------------------
  |  |   86|  1.74M|    {                                        \
  |  |   87|  1.74M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   68|  1.74M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   88|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   89|  1.74M|        a += b;                              \
  |  |   90|  1.74M|    };
  ------------------
  140|  1.74M|        R2(C, D, A, B, X(3), 16, 0xd4ef3085L);
  ------------------
  |  |   86|  1.74M|    {                                        \
  |  |   87|  1.74M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   68|  1.74M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   88|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   89|  1.74M|        a += b;                              \
  |  |   90|  1.74M|    };
  ------------------
  141|  1.74M|        R2(B, C, D, A, X(6), 23, 0x04881d05L);
  ------------------
  |  |   86|  1.74M|    {                                        \
  |  |   87|  1.74M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   68|  1.74M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   88|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   89|  1.74M|        a += b;                              \
  |  |   90|  1.74M|    };
  ------------------
  142|  1.74M|        R2(A, B, C, D, X(9), 4, 0xd9d4d039L);
  ------------------
  |  |   86|  1.74M|    {                                        \
  |  |   87|  1.74M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   68|  1.74M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   88|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   89|  1.74M|        a += b;                              \
  |  |   90|  1.74M|    };
  ------------------
  143|  1.74M|        R2(D, A, B, C, X(12), 11, 0xe6db99e5L);
  ------------------
  |  |   86|  1.74M|    {                                        \
  |  |   87|  1.74M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   68|  1.74M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   88|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   89|  1.74M|        a += b;                              \
  |  |   90|  1.74M|    };
  ------------------
  144|  1.74M|        R2(C, D, A, B, X(15), 16, 0x1fa27cf8L);
  ------------------
  |  |   86|  1.74M|    {                                        \
  |  |   87|  1.74M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   68|  1.74M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   88|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   89|  1.74M|        a += b;                              \
  |  |   90|  1.74M|    };
  ------------------
  145|  1.74M|        R2(B, C, D, A, X(2), 23, 0xc4ac5665L);
  ------------------
  |  |   86|  1.74M|    {                                        \
  |  |   87|  1.74M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   68|  1.74M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   88|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   89|  1.74M|        a += b;                              \
  |  |   90|  1.74M|    };
  ------------------
  146|       |        /* Round 3 */
  147|  1.74M|        R3(A, B, C, D, X(0), 6, 0xf4292244L);
  ------------------
  |  |   93|  1.74M|    {                                        \
  |  |   94|  1.74M|        a += ((k) + (t) + I((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   69|  1.74M|#define I(b, c, d) (((~(d)) | (b)) ^ (c))
  |  |  ------------------
  |  |   95|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   96|  1.74M|        a += b;                              \
  |  |   97|  1.74M|    };
  ------------------
  148|  1.74M|        R3(D, A, B, C, X(7), 10, 0x432aff97L);
  ------------------
  |  |   93|  1.74M|    {                                        \
  |  |   94|  1.74M|        a += ((k) + (t) + I((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   69|  1.74M|#define I(b, c, d) (((~(d)) | (b)) ^ (c))
  |  |  ------------------
  |  |   95|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   96|  1.74M|        a += b;                              \
  |  |   97|  1.74M|    };
  ------------------
  149|  1.74M|        R3(C, D, A, B, X(14), 15, 0xab9423a7L);
  ------------------
  |  |   93|  1.74M|    {                                        \
  |  |   94|  1.74M|        a += ((k) + (t) + I((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   69|  1.74M|#define I(b, c, d) (((~(d)) | (b)) ^ (c))
  |  |  ------------------
  |  |   95|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   96|  1.74M|        a += b;                              \
  |  |   97|  1.74M|    };
  ------------------
  150|  1.74M|        R3(B, C, D, A, X(5), 21, 0xfc93a039L);
  ------------------
  |  |   93|  1.74M|    {                                        \
  |  |   94|  1.74M|        a += ((k) + (t) + I((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   69|  1.74M|#define I(b, c, d) (((~(d)) | (b)) ^ (c))
  |  |  ------------------
  |  |   95|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   96|  1.74M|        a += b;                              \
  |  |   97|  1.74M|    };
  ------------------
  151|  1.74M|        R3(A, B, C, D, X(12), 6, 0x655b59c3L);
  ------------------
  |  |   93|  1.74M|    {                                        \
  |  |   94|  1.74M|        a += ((k) + (t) + I((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   69|  1.74M|#define I(b, c, d) (((~(d)) | (b)) ^ (c))
  |  |  ------------------
  |  |   95|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   96|  1.74M|        a += b;                              \
  |  |   97|  1.74M|    };
  ------------------
  152|  1.74M|        R3(D, A, B, C, X(3), 10, 0x8f0ccc92L);
  ------------------
  |  |   93|  1.74M|    {                                        \
  |  |   94|  1.74M|        a += ((k) + (t) + I((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   69|  1.74M|#define I(b, c, d) (((~(d)) | (b)) ^ (c))
  |  |  ------------------
  |  |   95|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   96|  1.74M|        a += b;                              \
  |  |   97|  1.74M|    };
  ------------------
  153|  1.74M|        R3(C, D, A, B, X(10), 15, 0xffeff47dL);
  ------------------
  |  |   93|  1.74M|    {                                        \
  |  |   94|  1.74M|        a += ((k) + (t) + I((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   69|  1.74M|#define I(b, c, d) (((~(d)) | (b)) ^ (c))
  |  |  ------------------
  |  |   95|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   96|  1.74M|        a += b;                              \
  |  |   97|  1.74M|    };
  ------------------
  154|  1.74M|        R3(B, C, D, A, X(1), 21, 0x85845dd1L);
  ------------------
  |  |   93|  1.74M|    {                                        \
  |  |   94|  1.74M|        a += ((k) + (t) + I((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   69|  1.74M|#define I(b, c, d) (((~(d)) | (b)) ^ (c))
  |  |  ------------------
  |  |   95|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   96|  1.74M|        a += b;                              \
  |  |   97|  1.74M|    };
  ------------------
  155|  1.74M|        R3(A, B, C, D, X(8), 6, 0x6fa87e4fL);
  ------------------
  |  |   93|  1.74M|    {                                        \
  |  |   94|  1.74M|        a += ((k) + (t) + I((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   69|  1.74M|#define I(b, c, d) (((~(d)) | (b)) ^ (c))
  |  |  ------------------
  |  |   95|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   96|  1.74M|        a += b;                              \
  |  |   97|  1.74M|    };
  ------------------
  156|  1.74M|        R3(D, A, B, C, X(15), 10, 0xfe2ce6e0L);
  ------------------
  |  |   93|  1.74M|    {                                        \
  |  |   94|  1.74M|        a += ((k) + (t) + I((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   69|  1.74M|#define I(b, c, d) (((~(d)) | (b)) ^ (c))
  |  |  ------------------
  |  |   95|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   96|  1.74M|        a += b;                              \
  |  |   97|  1.74M|    };
  ------------------
  157|  1.74M|        R3(C, D, A, B, X(6), 15, 0xa3014314L);
  ------------------
  |  |   93|  1.74M|    {                                        \
  |  |   94|  1.74M|        a += ((k) + (t) + I((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   69|  1.74M|#define I(b, c, d) (((~(d)) | (b)) ^ (c))
  |  |  ------------------
  |  |   95|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   96|  1.74M|        a += b;                              \
  |  |   97|  1.74M|    };
  ------------------
  158|  1.74M|        R3(B, C, D, A, X(13), 21, 0x4e0811a1L);
  ------------------
  |  |   93|  1.74M|    {                                        \
  |  |   94|  1.74M|        a += ((k) + (t) + I((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   69|  1.74M|#define I(b, c, d) (((~(d)) | (b)) ^ (c))
  |  |  ------------------
  |  |   95|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   96|  1.74M|        a += b;                              \
  |  |   97|  1.74M|    };
  ------------------
  159|  1.74M|        R3(A, B, C, D, X(4), 6, 0xf7537e82L);
  ------------------
  |  |   93|  1.74M|    {                                        \
  |  |   94|  1.74M|        a += ((k) + (t) + I((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   69|  1.74M|#define I(b, c, d) (((~(d)) | (b)) ^ (c))
  |  |  ------------------
  |  |   95|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   96|  1.74M|        a += b;                              \
  |  |   97|  1.74M|    };
  ------------------
  160|  1.74M|        R3(D, A, B, C, X(11), 10, 0xbd3af235L);
  ------------------
  |  |   93|  1.74M|    {                                        \
  |  |   94|  1.74M|        a += ((k) + (t) + I((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   69|  1.74M|#define I(b, c, d) (((~(d)) | (b)) ^ (c))
  |  |  ------------------
  |  |   95|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   96|  1.74M|        a += b;                              \
  |  |   97|  1.74M|    };
  ------------------
  161|  1.74M|        R3(C, D, A, B, X(2), 15, 0x2ad7d2bbL);
  ------------------
  |  |   93|  1.74M|    {                                        \
  |  |   94|  1.74M|        a += ((k) + (t) + I((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   69|  1.74M|#define I(b, c, d) (((~(d)) | (b)) ^ (c))
  |  |  ------------------
  |  |   95|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   96|  1.74M|        a += b;                              \
  |  |   97|  1.74M|    };
  ------------------
  162|  1.74M|        R3(B, C, D, A, X(9), 21, 0xeb86d391L);
  ------------------
  |  |   93|  1.74M|    {                                        \
  |  |   94|  1.74M|        a += ((k) + (t) + I((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   69|  1.74M|#define I(b, c, d) (((~(d)) | (b)) ^ (c))
  |  |  ------------------
  |  |   95|  1.74M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.74M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   96|  1.74M|        a += b;                              \
  |  |   97|  1.74M|    };
  ------------------
  163|       |
  164|  1.74M|        A = c->A += A;
  165|  1.74M|        B = c->B += B;
  166|  1.74M|        C = c->C += C;
  167|  1.74M|        D = c->D += D;
  168|  1.74M|    }
  169|    257|}

ossl_md5_sha1_init:
   21|     36|{
   22|     36|    if (!MD5_Init(&mctx->md5))
  ------------------
  |  Branch (22:9): [True: 0, False: 36]
  ------------------
   23|      0|        return 0;
   24|     36|    return SHA1_Init(&mctx->sha1);
   25|     36|}
ossl_md5_sha1_update:
   28|     36|{
   29|     36|    if (!MD5_Update(&mctx->md5, data, count))
  ------------------
  |  Branch (29:9): [True: 0, False: 36]
  ------------------
   30|      0|        return 0;
   31|     36|    return SHA1_Update(&mctx->sha1, data, count);
   32|     36|}
ossl_md5_sha1_final:
   35|     18|{
   36|     18|    if (!MD5_Final(md, &mctx->md5))
  ------------------
  |  Branch (36:9): [True: 0, False: 18]
  ------------------
   37|      0|        return 0;
   38|     18|    return SHA1_Final(md + MD5_DIGEST_LENGTH, &mctx->sha1);
  ------------------
  |  |   28|     18|#define MD5_DIGEST_LENGTH 16
  ------------------
   39|     18|}

MDC2_Init:
   26|     62|{
   27|     62|    c->num = 0;
   28|     62|    c->pad_type = 1;
   29|     62|    memset(&(c->h[0]), 0x52, MDC2_BLOCK);
  ------------------
  |  |   32|     62|#define MDC2_BLOCK 8
  ------------------
   30|     62|    memset(&(c->hh[0]), 0x25, MDC2_BLOCK);
  ------------------
  |  |   32|     62|#define MDC2_BLOCK 8
  ------------------
   31|     62|    return 1;
   32|     62|}
MDC2_Update:
   35|     62|{
   36|     62|    size_t i, j;
   37|       |
   38|     62|    i = c->num;
   39|     62|    if (i != 0) {
  ------------------
  |  Branch (39:9): [True: 0, False: 62]
  ------------------
   40|      0|        if (len < MDC2_BLOCK - i) {
  ------------------
  |  |   32|      0|#define MDC2_BLOCK 8
  ------------------
  |  Branch (40:13): [True: 0, False: 0]
  ------------------
   41|       |            /* partial block */
   42|      0|            memcpy(&(c->data[i]), in, len);
   43|      0|            c->num += (int)len;
   44|      0|            return 1;
   45|      0|        } else {
   46|       |            /* filled one */
   47|      0|            j = MDC2_BLOCK - i;
  ------------------
  |  |   32|      0|#define MDC2_BLOCK 8
  ------------------
   48|      0|            memcpy(&(c->data[i]), in, j);
   49|      0|            len -= j;
   50|      0|            in += j;
   51|      0|            c->num = 0;
   52|      0|            mdc2_body(c, &(c->data[0]), MDC2_BLOCK);
  ------------------
  |  |   32|      0|#define MDC2_BLOCK 8
  ------------------
   53|      0|        }
   54|      0|    }
   55|     62|    i = len & ~((size_t)MDC2_BLOCK - 1);
  ------------------
  |  |   32|     62|#define MDC2_BLOCK 8
  ------------------
   56|     62|    if (i > 0)
  ------------------
  |  Branch (56:9): [True: 62, False: 0]
  ------------------
   57|     62|        mdc2_body(c, in, i);
   58|     62|    j = len - i;
   59|     62|    if (j > 0) {
  ------------------
  |  Branch (59:9): [True: 22, False: 40]
  ------------------
   60|     22|        memcpy(&(c->data[0]), &(in[i]), j);
   61|     22|        c->num = (int)j;
   62|     22|    }
   63|     62|    return 1;
   64|     62|}
MDC2_Final:
  106|     31|{
  107|     31|    unsigned int i;
  108|     31|    int j;
  109|       |
  110|     31|    i = c->num;
  111|     31|    j = c->pad_type;
  112|     31|    if ((i > 0) || (j == 2)) {
  ------------------
  |  Branch (112:9): [True: 22, False: 9]
  |  Branch (112:20): [True: 0, False: 9]
  ------------------
  113|     22|        if (j == 2)
  ------------------
  |  Branch (113:13): [True: 0, False: 22]
  ------------------
  114|      0|            c->data[i++] = 0x80;
  115|     22|        memset(&(c->data[i]), 0, MDC2_BLOCK - i);
  ------------------
  |  |   32|     22|#define MDC2_BLOCK 8
  ------------------
  116|     22|        mdc2_body(c, c->data, MDC2_BLOCK);
  ------------------
  |  |   32|     22|#define MDC2_BLOCK 8
  ------------------
  117|     22|    }
  118|     31|    memcpy(md, (char *)c->h, MDC2_BLOCK);
  ------------------
  |  |   32|     31|#define MDC2_BLOCK 8
  ------------------
  119|     31|    memcpy(&(md[MDC2_BLOCK]), (char *)c->hh, MDC2_BLOCK);
  ------------------
  |  |   32|     31|#define MDC2_BLOCK 8
  ------------------
                  memcpy(&(md[MDC2_BLOCK]), (char *)c->hh, MDC2_BLOCK);
  ------------------
  |  |   32|     31|#define MDC2_BLOCK 8
  ------------------
  120|     31|    return 1;
  121|     31|}
mdc2dgst.c:mdc2_body:
   67|     84|{
   68|     84|    register DES_LONG tin0, tin1;
   69|     84|    register DES_LONG ttin0, ttin1;
   70|     84|    DES_LONG d[2], dd[2];
   71|     84|    DES_key_schedule k;
   72|     84|    unsigned char *p;
   73|     84|    size_t i;
   74|       |
   75|  8.41M|    for (i = 0; i < len; i += 8) {
  ------------------
  |  Branch (75:17): [True: 8.41M, False: 84]
  ------------------
   76|  8.41M|        c2l(in, tin0);
  ------------------
  |  |  107|  8.41M|#define c2l(c, l) (l = ((unsigned long)(*((c)++))), \
  |  |  108|  8.41M|    l |= (((unsigned long)(*((c)++))) << 8),        \
  |  |  109|  8.41M|    l |= (((unsigned long)(*((c)++))) << 16),       \
  |  |  110|  8.41M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   77|  8.41M|        d[0] = dd[0] = tin0;
   78|  8.41M|        c2l(in, tin1);
  ------------------
  |  |  107|  8.41M|#define c2l(c, l) (l = ((unsigned long)(*((c)++))), \
  |  |  108|  8.41M|    l |= (((unsigned long)(*((c)++))) << 8),        \
  |  |  109|  8.41M|    l |= (((unsigned long)(*((c)++))) << 16),       \
  |  |  110|  8.41M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   79|  8.41M|        d[1] = dd[1] = tin1;
   80|  8.41M|        c->h[0] = (c->h[0] & 0x9f) | 0x40;
   81|  8.41M|        c->hh[0] = (c->hh[0] & 0x9f) | 0x20;
   82|       |
   83|  8.41M|        DES_set_odd_parity(&c->h);
   84|  8.41M|        DES_set_key_unchecked(&c->h, &k);
   85|  8.41M|        DES_encrypt1(d, &k, 1);
   86|       |
   87|  8.41M|        DES_set_odd_parity(&c->hh);
   88|  8.41M|        DES_set_key_unchecked(&c->hh, &k);
   89|  8.41M|        DES_encrypt1(dd, &k, 1);
   90|       |
   91|  8.41M|        ttin0 = tin0 ^ dd[0];
   92|  8.41M|        ttin1 = tin1 ^ dd[1];
   93|  8.41M|        tin0 ^= d[0];
   94|  8.41M|        tin1 ^= d[1];
   95|       |
   96|  8.41M|        p = c->h;
   97|  8.41M|        l2c(tin0, p);
  ------------------
  |  |  143|  8.41M|#define l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  144|  8.41M|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),           \
  |  |  145|  8.41M|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),          \
  |  |  146|  8.41M|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff))
  ------------------
   98|  8.41M|        l2c(ttin1, p);
  ------------------
  |  |  143|  8.41M|#define l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  144|  8.41M|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),           \
  |  |  145|  8.41M|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),          \
  |  |  146|  8.41M|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff))
  ------------------
   99|  8.41M|        p = c->hh;
  100|  8.41M|        l2c(ttin0, p);
  ------------------
  |  |  143|  8.41M|#define l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  144|  8.41M|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),           \
  |  |  145|  8.41M|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),          \
  |  |  146|  8.41M|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff))
  ------------------
  101|  8.41M|        l2c(tin1, p);
  ------------------
  |  |  143|  8.41M|#define l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  144|  8.41M|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),           \
  |  |  145|  8.41M|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),          \
  |  |  146|  8.41M|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff))
  ------------------
  102|  8.41M|    }
  103|     84|}

CRYPTO_malloc:
  190|  25.8k|{
  191|  25.8k|    void *ptr;
  192|       |
  193|  25.8k|    INCREMENT(malloc_count);
  194|  25.8k|    FAILTEST();
  195|  25.8k|    if (malloc_impl != CRYPTO_malloc) {
  ------------------
  |  Branch (195:9): [True: 0, False: 25.8k]
  ------------------
  196|      0|        ptr = malloc_impl(num, file, line);
  197|      0|        if (ptr != NULL || num == 0)
  ------------------
  |  Branch (197:13): [True: 0, False: 0]
  |  Branch (197:28): [True: 0, False: 0]
  ------------------
  198|      0|            return ptr;
  199|      0|        goto err;
  200|      0|    }
  201|       |
  202|  25.8k|    if (ossl_unlikely(num == 0))
  ------------------
  |  |   23|  25.8k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 25.8k]
  |  |  ------------------
  ------------------
  203|      0|        return NULL;
  204|       |
  205|  25.8k|    if (allow_customize) {
  ------------------
  |  Branch (205:9): [True: 1, False: 25.8k]
  ------------------
  206|       |        /*
  207|       |         * Disallow customization after the first allocation. We only set this
  208|       |         * if necessary to avoid a store to the same cache line on every
  209|       |         * allocation.
  210|       |         */
  211|      1|        allow_customize = 0;
  212|      1|    }
  213|       |
  214|  25.8k|    ptr = malloc(num);
  215|  25.8k|    if (ossl_likely(ptr != NULL))
  ------------------
  |  |   22|  25.8k|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (22:24): [True: 25.8k, False: 0]
  |  |  ------------------
  ------------------
  216|  25.8k|        return ptr;
  217|      0|err:
  218|      0|    ossl_report_alloc_err(file, line);
  219|       |    return NULL;
  220|  25.8k|}
CRYPTO_zalloc:
  223|  21.3k|{
  224|  21.3k|    void *ret;
  225|       |
  226|  21.3k|    ret = CRYPTO_malloc(num, file, line);
  227|  21.3k|    if (ret != NULL)
  ------------------
  |  Branch (227:9): [True: 21.3k, False: 0]
  ------------------
  228|  21.3k|        memset(ret, 0, num);
  229|       |
  230|  21.3k|    return ret;
  231|  21.3k|}
CRYPTO_aligned_alloc:
  235|      3|{
  236|      3|    *freeptr = NULL;
  237|       |
  238|       |    /* Ensure that alignment is a power of two no larger than 65536 */
  239|      3|    if (alignment == 0 || (alignment & (alignment - 1)) != 0
  ------------------
  |  Branch (239:9): [True: 0, False: 3]
  |  Branch (239:27): [True: 0, False: 3]
  ------------------
  240|      3|        || alignment > 65536) {
  ------------------
  |  Branch (240:12): [True: 0, False: 3]
  ------------------
  241|      0|        ossl_report_alloc_err_inv(file, line);
  242|      0|        return NULL;
  243|      0|    }
  244|       |
  245|       |    /* Allow non-malloc() allocations as long as no malloc_impl is provided. */
  246|      3|    if (malloc_impl == CRYPTO_malloc) {
  ------------------
  |  Branch (246:9): [True: 3, False: 0]
  ------------------
  247|      3|#if defined(_BSD_SOURCE) || (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 200112L)
  248|      3|        void *ret;
  249|       |
  250|       |        /* posix_memalign() requires alignment to be at least sizeof(void *) */
  251|      3|        if (alignment < sizeof(void *))
  ------------------
  |  Branch (251:13): [True: 0, False: 3]
  ------------------
  252|      0|            alignment = sizeof(void *);
  253|       |
  254|      3|        if (posix_memalign(&ret, alignment, num) == 0) {
  ------------------
  |  Branch (254:13): [True: 3, False: 0]
  ------------------
  255|      3|            *freeptr = ret;
  256|      3|            return ret;
  257|      3|        }
  258|      3|#endif
  259|      3|    }
  260|       |
  261|      0|    return ossl_malloc_align(num, alignment, freeptr, file, line);
  262|      3|}
CRYPTO_realloc:
  265|  1.37k|{
  266|  1.37k|    void *ret;
  267|       |
  268|  1.37k|    INCREMENT(realloc_count);
  269|  1.37k|    FAILTEST();
  270|  1.37k|    if (realloc_impl != CRYPTO_realloc) {
  ------------------
  |  Branch (270:9): [True: 0, False: 1.37k]
  ------------------
  271|      0|        ret = realloc_impl(str, num, file, line);
  272|       |
  273|      0|        if (num == 0 || ret != NULL)
  ------------------
  |  Branch (273:13): [True: 0, False: 0]
  |  Branch (273:25): [True: 0, False: 0]
  ------------------
  274|      0|            return ret;
  275|       |
  276|      0|        goto err;
  277|      0|    }
  278|       |
  279|  1.37k|    if (str == NULL)
  ------------------
  |  Branch (279:9): [True: 18, False: 1.35k]
  ------------------
  280|     18|        return CRYPTO_malloc(num, file, line);
  281|       |
  282|  1.35k|    if (num == 0) {
  ------------------
  |  Branch (282:9): [True: 0, False: 1.35k]
  ------------------
  283|      0|        CRYPTO_free(str, file, line);
  284|      0|        return NULL;
  285|      0|    }
  286|       |
  287|  1.35k|    ret = realloc(str, num);
  288|       |
  289|  1.35k|err:
  290|  1.35k|    if (num != 0 && ret == NULL)
  ------------------
  |  Branch (290:9): [True: 1.35k, False: 0]
  |  Branch (290:21): [True: 0, False: 1.35k]
  ------------------
  291|      0|        ossl_report_alloc_err(file, line);
  292|       |
  293|  1.35k|    return ret;
  294|  1.35k|}
CRYPTO_free:
  324|  24.0k|{
  325|  24.0k|    INCREMENT(free_count);
  326|  24.0k|    if (free_impl != CRYPTO_free) {
  ------------------
  |  Branch (326:9): [True: 0, False: 24.0k]
  ------------------
  327|      0|        free_impl(str, file, line);
  328|      0|        return;
  329|      0|    }
  330|       |
  331|  24.0k|    free(str);
  332|  24.0k|}
CRYPTO_clear_free:
  335|  9.59k|{
  336|  9.59k|    if (str == NULL)
  ------------------
  |  Branch (336:9): [True: 0, False: 9.59k]
  ------------------
  337|      0|        return;
  338|  9.59k|    if (num)
  ------------------
  |  Branch (338:9): [True: 9.59k, False: 0]
  ------------------
  339|  9.59k|        OPENSSL_cleanse(str, num);
  340|  9.59k|    CRYPTO_free(str, file, line);
  341|  9.59k|}

OPENSSL_cleanse:
   23|  25.1k|{
   24|  25.1k|    memset_func(ptr, 0, len);
   25|  25.1k|}

CRYPTO_strdup:
   23|    341|{
   24|    341|    char *ret;
   25|    341|    size_t len;
   26|       |
   27|    341|    if (str == NULL)
  ------------------
  |  Branch (27:9): [True: 0, False: 341]
  ------------------
   28|      0|        return NULL;
   29|       |
   30|    341|    len = strlen(str) + 1;
   31|    341|    ret = CRYPTO_malloc(len, file, line);
   32|    341|    if (ret != NULL)
  ------------------
  |  Branch (32:9): [True: 341, False: 0]
  ------------------
   33|    341|        memcpy(ret, str, len);
   34|    341|    return ret;
   35|    341|}
CRYPTO_strndup:
   38|     34|{
   39|     34|    size_t maxlen;
   40|     34|    char *ret;
   41|       |
   42|     34|    if (str == NULL)
  ------------------
  |  Branch (42:9): [True: 0, False: 34]
  ------------------
   43|      0|        return NULL;
   44|       |
   45|     34|    maxlen = OPENSSL_strnlen(str, s);
   46|       |
   47|     34|    ret = CRYPTO_malloc(maxlen + 1, file, line);
   48|     34|    if (ret) {
  ------------------
  |  Branch (48:9): [True: 34, False: 0]
  ------------------
   49|     34|        memcpy(ret, str, maxlen);
   50|     34|        ret[maxlen] = CH_ZERO;
  ------------------
  |  |   20|     34|#define CH_ZERO '\0'
  ------------------
   51|     34|    }
   52|     34|    return ret;
   53|     34|}
OPENSSL_strnlen:
   69|     34|{
   70|     34|    const char *p;
   71|       |
   72|    335|    for (p = str; maxlen-- != 0 && *p != CH_ZERO; ++p)
  ------------------
  |  |   20|    301|#define CH_ZERO '\0'
  ------------------
  |  Branch (72:19): [True: 301, False: 34]
  |  Branch (72:36): [True: 301, False: 0]
  ------------------
   73|    301|        ;
   74|       |
   75|     34|    return p - str;
   76|     34|}
OPENSSL_strlcpy:
   79|  1.35k|{
   80|  1.35k|    size_t l = 0;
   81|  5.18k|    for (; size > 1 && *src; size--) {
  ------------------
  |  Branch (81:12): [True: 5.18k, False: 0]
  |  Branch (81:24): [True: 3.83k, False: 1.35k]
  ------------------
   82|  3.83k|        *dst++ = *src++;
   83|  3.83k|        l++;
   84|  3.83k|    }
   85|  1.35k|    if (size)
  ------------------
  |  Branch (85:9): [True: 1.35k, False: 0]
  ------------------
   86|  1.35k|        *dst = CH_ZERO;
  ------------------
  |  |   20|  1.35k|#define CH_ZERO '\0'
  ------------------
   87|  1.35k|    return l + strlen(src);
   88|  1.35k|}
OPENSSL_strcasecmp:
  426|    511|{
  427|    511|    int t;
  428|       |
  429|  5.79k|    while ((t = ossl_tolower(*s1) - ossl_tolower(*s2++)) == 0)
  ------------------
  |  Branch (429:12): [True: 5.79k, False: 0]
  ------------------
  430|  5.79k|        if (*s1++ == '\0')
  ------------------
  |  Branch (430:13): [True: 511, False: 5.28k]
  ------------------
  431|    511|            return 0;
  432|      0|    return t;
  433|    511|}

OBJ_NAME_init:
   58|    728|{
   59|    728|    return RUN_ONCE(&init, o_names_init);
  ------------------
  |  |  130|    728|    (CRYPTO_THREAD_run_once(once, init##_ossl_) ? init##_ossl_ret_ : 0)
  |  |  ------------------
  |  |  |  Branch (130:6): [True: 728, False: 0]
  |  |  ------------------
  ------------------
   60|    728|}
OBJ_NAME_get:
  147|    322|{
  148|    322|    OBJ_NAME on, *ret;
  149|    322|    int num = 0, alias;
  150|    322|    const char *value = NULL;
  151|       |
  152|    322|    if (name == NULL)
  ------------------
  |  Branch (152:9): [True: 0, False: 322]
  ------------------
  153|      0|        return NULL;
  154|    322|    if (!OBJ_NAME_init())
  ------------------
  |  Branch (154:9): [True: 0, False: 322]
  ------------------
  155|      0|        return NULL;
  156|    322|    if (!CRYPTO_THREAD_read_lock(obj_lock))
  ------------------
  |  Branch (156:9): [True: 0, False: 322]
  ------------------
  157|      0|        return NULL;
  158|       |
  159|    322|    alias = type & OBJ_NAME_ALIAS;
  ------------------
  |  |   33|    322|#define OBJ_NAME_ALIAS 0x8000
  ------------------
  160|    322|    type &= ~OBJ_NAME_ALIAS;
  ------------------
  |  |   33|    322|#define OBJ_NAME_ALIAS 0x8000
  ------------------
  161|       |
  162|    322|    on.name = name;
  163|    322|    on.type = type;
  164|       |
  165|    398|    for (;;) {
  166|    398|        ret = lh_OBJ_NAME_retrieve(names_lh, &on);
  167|    398|        if (ret == NULL)
  ------------------
  |  Branch (167:13): [True: 60, False: 338]
  ------------------
  168|     60|            break;
  169|    338|        if ((ret->alias) && !alias) {
  ------------------
  |  Branch (169:13): [True: 76, False: 262]
  |  Branch (169:29): [True: 76, False: 0]
  ------------------
  170|     76|            if (++num > 10)
  ------------------
  |  Branch (170:17): [True: 0, False: 76]
  ------------------
  171|      0|                break;
  172|     76|            on.name = ret->data;
  173|    262|        } else {
  174|    262|            value = ret->data;
  175|    262|            break;
  176|    262|        }
  177|    338|    }
  178|       |
  179|    322|    CRYPTO_THREAD_unlock(obj_lock);
  180|    322|    return value;
  181|    322|}
OBJ_NAME_add:
  184|    406|{
  185|    406|    OBJ_NAME *onp, *ret;
  186|    406|    int alias, ok = 0;
  187|       |
  188|    406|    if (!OBJ_NAME_init())
  ------------------
  |  Branch (188:9): [True: 0, False: 406]
  ------------------
  189|      0|        return 0;
  190|       |
  191|    406|    alias = type & OBJ_NAME_ALIAS;
  ------------------
  |  |   33|    406|#define OBJ_NAME_ALIAS 0x8000
  ------------------
  192|    406|    type &= ~OBJ_NAME_ALIAS;
  ------------------
  |  |   33|    406|#define OBJ_NAME_ALIAS 0x8000
  ------------------
  193|       |
  194|    406|    onp = OPENSSL_malloc(sizeof(*onp));
  ------------------
  |  |  111|    406|    CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  195|    406|    if (onp == NULL)
  ------------------
  |  Branch (195:9): [True: 0, False: 406]
  ------------------
  196|      0|        return 0;
  197|       |
  198|    406|    onp->name = name;
  199|    406|    onp->alias = alias;
  200|    406|    onp->type = type;
  201|    406|    onp->data = data;
  202|       |
  203|    406|    if (!CRYPTO_THREAD_write_lock(obj_lock)) {
  ------------------
  |  Branch (203:9): [True: 0, False: 406]
  ------------------
  204|      0|        OPENSSL_free(onp);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  205|      0|        return 0;
  206|      0|    }
  207|       |
  208|    406|    ret = lh_OBJ_NAME_insert(names_lh, onp);
  209|    406|    if (ret != NULL) {
  ------------------
  |  Branch (209:9): [True: 173, False: 233]
  ------------------
  210|       |        /* free things */
  211|    173|        if ((name_funcs_stack != NULL)
  ------------------
  |  Branch (211:13): [True: 0, False: 173]
  ------------------
  212|      0|            && (sk_NAME_FUNCS_num(name_funcs_stack) > ret->type)) {
  ------------------
  |  Branch (212:16): [True: 0, False: 0]
  ------------------
  213|       |            /*
  214|       |             * XXX: I'm not sure I understand why the free function should
  215|       |             * get three arguments... -- Richard Levitte
  216|       |             */
  217|      0|            sk_NAME_FUNCS_value(name_funcs_stack,
  218|      0|                ret->type)
  219|      0|                ->free_func(ret->name, ret->type,
  220|      0|                    ret->data);
  221|      0|        }
  222|    173|        OPENSSL_free(ret);
  ------------------
  |  |  136|    173|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  223|    233|    } else {
  224|    233|        if (lh_OBJ_NAME_error(names_lh)) {
  ------------------
  |  Branch (224:13): [True: 0, False: 233]
  ------------------
  225|       |            /* ERROR */
  226|      0|            OPENSSL_free(onp);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  227|      0|            goto unlock;
  228|      0|        }
  229|    233|    }
  230|       |
  231|    406|    ok = 1;
  232|       |
  233|    406|unlock:
  234|    406|    CRYPTO_THREAD_unlock(obj_lock);
  235|    406|    return ok;
  236|    406|}
OBJ_NAME_do_all:
  290|      2|{
  291|      2|    OBJ_DOALL d;
  292|       |
  293|      2|    d.type = type;
  294|      2|    d.fn = fn;
  295|      2|    d.arg = arg;
  296|       |
  297|      2|    lh_OBJ_NAME_doall_OBJ_DOALL(names_lh, do_all_fn, &d);
  298|      2|}
o_names.c:o_names_init:
   45|      1|{
   46|      1|    names_lh = NULL;
   47|      1|    obj_lock = CRYPTO_THREAD_lock_new();
   48|      1|    if (obj_lock != NULL)
  ------------------
  |  Branch (48:9): [True: 1, False: 0]
  ------------------
   49|      1|        names_lh = lh_OBJ_NAME_new(obj_name_hash, obj_name_cmp);
   50|      1|    if (names_lh == NULL) {
  ------------------
  |  Branch (50:9): [True: 0, False: 1]
  ------------------
   51|      0|        CRYPTO_THREAD_lock_free(obj_lock);
   52|      0|        obj_lock = NULL;
   53|      0|    }
   54|      1|    return names_lh != NULL && obj_lock != NULL;
  ------------------
  |  Branch (54:12): [True: 1, False: 0]
  |  Branch (54:32): [True: 1, False: 0]
  ------------------
   55|      1|}
o_names.c:obj_name_hash:
  131|    804|{
  132|    804|    unsigned long ret;
  133|       |
  134|    804|    if ((name_funcs_stack != NULL)
  ------------------
  |  Branch (134:9): [True: 0, False: 804]
  ------------------
  135|      0|        && (sk_NAME_FUNCS_num(name_funcs_stack) > a->type)) {
  ------------------
  |  Branch (135:12): [True: 0, False: 0]
  ------------------
  136|      0|        ret = sk_NAME_FUNCS_value(name_funcs_stack,
  137|      0|            a->type)
  138|      0|                  ->hash_func(a->name);
  139|    804|    } else {
  140|    804|        ret = ossl_lh_strcasehash(a->name);
  141|    804|    }
  142|    804|    ret ^= a->type;
  143|    804|    return ret;
  144|    804|}
o_names.c:obj_name_cmp:
  114|    511|{
  115|    511|    int ret;
  116|       |
  117|    511|    ret = a->type - b->type;
  118|    511|    if (ret == 0) {
  ------------------
  |  Branch (118:9): [True: 511, False: 0]
  ------------------
  119|    511|        if ((name_funcs_stack != NULL)
  ------------------
  |  Branch (119:13): [True: 0, False: 511]
  ------------------
  120|      0|            && (sk_NAME_FUNCS_num(name_funcs_stack) > a->type)) {
  ------------------
  |  Branch (120:16): [True: 0, False: 0]
  ------------------
  121|      0|            ret = sk_NAME_FUNCS_value(name_funcs_stack,
  122|      0|                a->type)
  123|      0|                      ->cmp_func(a->name, b->name);
  124|      0|        } else
  125|    511|            ret = OPENSSL_strcasecmp(a->name, b->name);
  126|    511|    }
  127|    511|    return ret;
  128|    511|}
o_names.c:do_all_fn:
  281|    466|{
  282|    466|    if (name->type == d->type)
  ------------------
  |  Branch (282:9): [True: 233, False: 233]
  ------------------
  283|    233|        d->fn(name, d->arg);
  284|    466|}

OBJ_nid2obj:
  255|  1.13k|{
  256|  1.13k|    ADDED_OBJ ad, *adp = NULL;
  257|  1.13k|    ASN1_OBJECT ob;
  258|       |
  259|  1.13k|    if (n == NID_undef
  ------------------
  |  |   19|  2.26k|#define NID_undef                       0
  ------------------
  |  Branch (259:9): [True: 0, False: 1.13k]
  ------------------
  260|  1.13k|        || (n > 0 && n < NUM_NID && nid_objs[n].nid != NID_undef))
  ------------------
  |  | 1369|  2.26k|#define NUM_NID 1502
  ------------------
                      || (n > 0 && n < NUM_NID && nid_objs[n].nid != NID_undef))
  ------------------
  |  |   19|  1.13k|#define NID_undef                       0
  ------------------
  |  Branch (260:13): [True: 1.13k, False: 0]
  |  Branch (260:22): [True: 1.13k, False: 0]
  |  Branch (260:37): [True: 1.13k, False: 0]
  ------------------
  261|  1.13k|        return (ASN1_OBJECT *)&(nid_objs[n]);
  262|       |
  263|      0|    ad.type = ADDED_NID;
  ------------------
  |  |   34|      0|#define ADDED_NID 3
  ------------------
  264|      0|    ad.obj = &ob;
  265|      0|    ob.nid = n;
  266|      0|    if (!ossl_obj_read_lock()) {
  ------------------
  |  Branch (266:9): [True: 0, False: 0]
  ------------------
  267|      0|        ERR_raise(ERR_LIB_OBJ, ERR_R_UNABLE_TO_GET_READ_LOCK);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  268|      0|        return NULL;
  269|      0|    }
  270|      0|    adp = lh_ADDED_OBJ_retrieve(added, &ad);
  271|      0|    ossl_obj_unlock();
  272|      0|    if (adp != NULL)
  ------------------
  |  Branch (272:9): [True: 0, False: 0]
  ------------------
  273|      0|        return adp->obj;
  274|       |
  275|      0|    ERR_raise(ERR_LIB_OBJ, OBJ_R_UNKNOWN_NID);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  276|       |    return NULL;
  277|      0|}
OBJ_nid2sn:
  280|    386|{
  281|    386|    ASN1_OBJECT *ob = OBJ_nid2obj(n);
  282|       |
  283|    386|    return ob == NULL ? NULL : ob->sn;
  ------------------
  |  Branch (283:12): [True: 0, False: 386]
  ------------------
  284|    386|}
OBJ_nid2ln:
  287|    386|{
  288|    386|    ASN1_OBJECT *ob = OBJ_nid2obj(n);
  289|       |
  290|    386|    return ob == NULL ? NULL : ob->ln;
  ------------------
  |  Branch (290:12): [True: 0, False: 386]
  ------------------
  291|    386|}
OBJ_obj2txt:
  381|    208|{
  382|    208|    int i, n = 0, len, nid, first, use_bn;
  383|    208|    BIGNUM *bl;
  384|    208|    unsigned long l;
  385|    208|    const unsigned char *p;
  386|    208|    char tbuf[DECIMAL_SIZE(i) + DECIMAL_SIZE(l) + 2];
  387|    208|    const char *s;
  388|       |
  389|       |    /* Ensure that, at every state, |buf| is NUL-terminated. */
  390|    208|    if (buf != NULL && buf_len > 0)
  ------------------
  |  Branch (390:9): [True: 208, False: 0]
  |  Branch (390:24): [True: 208, False: 0]
  ------------------
  391|    208|        buf[0] = '\0';
  392|       |
  393|    208|    if (a == NULL || a->data == NULL)
  ------------------
  |  Branch (393:9): [True: 0, False: 208]
  |  Branch (393:22): [True: 4, False: 204]
  ------------------
  394|      4|        return 0;
  395|       |
  396|    204|    if (!no_name && (nid = OBJ_obj2nid(a)) != NID_undef) {
  ------------------
  |  |   19|      0|#define NID_undef                       0
  ------------------
  |  Branch (396:9): [True: 0, False: 204]
  |  Branch (396:21): [True: 0, False: 0]
  ------------------
  397|      0|        s = OBJ_nid2ln(nid);
  398|      0|        if (s == NULL)
  ------------------
  |  Branch (398:13): [True: 0, False: 0]
  ------------------
  399|      0|            s = OBJ_nid2sn(nid);
  400|      0|        if (s != NULL) {
  ------------------
  |  Branch (400:13): [True: 0, False: 0]
  ------------------
  401|      0|            if (buf != NULL)
  ------------------
  |  Branch (401:17): [True: 0, False: 0]
  ------------------
  402|      0|                return (int)OPENSSL_strlcpy(buf, s, buf_len);
  403|      0|            return (int)strlen(s);
  404|      0|        }
  405|      0|    }
  406|       |
  407|    204|    len = a->length;
  408|    204|    p = a->data;
  409|       |
  410|    204|    first = 1;
  411|    204|    bl = NULL;
  412|       |
  413|       |    /*
  414|       |     * RFC 2578 (STD 58) says this about OBJECT IDENTIFIERs:
  415|       |     *
  416|       |     * > 3.5. OBJECT IDENTIFIER values
  417|       |     * >
  418|       |     * > An OBJECT IDENTIFIER value is an ordered list of non-negative
  419|       |     * > numbers. For the SMIv2, each number in the list is referred to as a
  420|       |     * > sub-identifier, there are at most 128 sub-identifiers in a value,
  421|       |     * > and each sub-identifier has a maximum value of 2^32-1 (4294967295
  422|       |     * > decimal).
  423|       |     *
  424|       |     * So a legitimate OID according to this RFC is at most (32 * 128 / 7),
  425|       |     * i.e. 586 bytes long.
  426|       |     *
  427|       |     * Ref: https://datatracker.ietf.org/doc/html/rfc2578#section-3.5
  428|       |     */
  429|    204|    if (len > 586)
  ------------------
  |  Branch (429:9): [True: 0, False: 204]
  ------------------
  430|      0|        goto err;
  431|       |
  432|  1.56k|    while (len > 0) {
  ------------------
  |  Branch (432:12): [True: 1.35k, False: 204]
  ------------------
  433|  1.35k|        l = 0;
  434|  1.35k|        use_bn = 0;
  435|  1.67k|        for (;;) {
  436|  1.67k|            unsigned char c = *p++;
  437|       |
  438|  1.67k|            len--;
  439|  1.67k|            if (len == 0 && (c & 0x80) != 0)
  ------------------
  |  Branch (439:17): [True: 204, False: 1.46k]
  |  Branch (439:29): [True: 0, False: 204]
  ------------------
  440|      0|                goto err;
  441|  1.67k|            if (use_bn) {
  ------------------
  |  Branch (441:17): [True: 0, False: 1.67k]
  ------------------
  442|      0|                if (!BN_add_word(bl, c & 0x7f))
  ------------------
  |  Branch (442:21): [True: 0, False: 0]
  ------------------
  443|      0|                    goto err;
  444|  1.67k|            } else {
  445|  1.67k|                l |= c & 0x7f;
  446|  1.67k|            }
  447|  1.67k|            if ((c & 0x80) == 0)
  ------------------
  |  Branch (447:17): [True: 1.35k, False: 316]
  ------------------
  448|  1.35k|                break;
  449|    316|            if (!use_bn && l > (ULONG_MAX >> 7L)) {
  ------------------
  |  Branch (449:17): [True: 316, False: 0]
  |  Branch (449:28): [True: 0, False: 316]
  ------------------
  450|      0|                if (bl == NULL && (bl = BN_new()) == NULL)
  ------------------
  |  Branch (450:21): [True: 0, False: 0]
  |  Branch (450:35): [True: 0, False: 0]
  ------------------
  451|      0|                    goto err;
  452|      0|                if (!BN_set_word(bl, l))
  ------------------
  |  Branch (452:21): [True: 0, False: 0]
  ------------------
  453|      0|                    goto err;
  454|      0|                use_bn = 1;
  455|      0|            }
  456|    316|            if (use_bn) {
  ------------------
  |  Branch (456:17): [True: 0, False: 316]
  ------------------
  457|      0|                if (!BN_lshift(bl, bl, 7))
  ------------------
  |  Branch (457:21): [True: 0, False: 0]
  ------------------
  458|      0|                    goto err;
  459|    316|            } else {
  460|    316|                l <<= 7L;
  461|    316|            }
  462|    316|        }
  463|       |
  464|  1.35k|        if (first) {
  ------------------
  |  Branch (464:13): [True: 204, False: 1.15k]
  ------------------
  465|    204|            first = 0;
  466|    204|            if (l >= 80) {
  ------------------
  |  Branch (466:17): [True: 81, False: 123]
  ------------------
  467|     81|                i = 2;
  468|     81|                if (use_bn) {
  ------------------
  |  Branch (468:21): [True: 0, False: 81]
  ------------------
  469|      0|                    if (!BN_sub_word(bl, 80))
  ------------------
  |  Branch (469:25): [True: 0, False: 0]
  ------------------
  470|      0|                        goto err;
  471|     81|                } else {
  472|     81|                    l -= 80;
  473|     81|                }
  474|    123|            } else {
  475|    123|                i = (int)(l / 40);
  476|    123|                l -= (long)(i * 40);
  477|    123|            }
  478|    204|            if (buf != NULL && buf_len > 1) {
  ------------------
  |  Branch (478:17): [True: 204, False: 0]
  |  Branch (478:32): [True: 204, False: 0]
  ------------------
  479|    204|                *buf++ = i + '0';
  480|    204|                *buf = '\0';
  481|    204|                buf_len--;
  482|    204|            }
  483|    204|            n++;
  484|    204|        }
  485|       |
  486|  1.35k|        if (use_bn) {
  ------------------
  |  Branch (486:13): [True: 0, False: 1.35k]
  ------------------
  487|      0|            char *bndec;
  488|      0|            bndec = BN_bn2dec(bl);
  489|      0|            if (!bndec)
  ------------------
  |  Branch (489:17): [True: 0, False: 0]
  ------------------
  490|      0|                goto err;
  491|      0|            i = (int)strlen(bndec);
  492|      0|            if (buf != NULL) {
  ------------------
  |  Branch (492:17): [True: 0, False: 0]
  ------------------
  493|      0|                if (buf_len > 1) {
  ------------------
  |  Branch (493:21): [True: 0, False: 0]
  ------------------
  494|      0|                    *buf++ = '.';
  495|      0|                    *buf = '\0';
  496|      0|                    buf_len--;
  497|      0|                }
  498|      0|                OPENSSL_strlcpy(buf, bndec, buf_len);
  499|      0|                if (i > buf_len) {
  ------------------
  |  Branch (499:21): [True: 0, False: 0]
  ------------------
  500|      0|                    buf += buf_len;
  501|      0|                    buf_len = 0;
  502|      0|                } else {
  503|      0|                    buf += i;
  504|      0|                    buf_len -= i;
  505|      0|                }
  506|      0|            }
  507|      0|            n++;
  508|      0|            n += i;
  509|      0|            OPENSSL_free(bndec);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  510|  1.35k|        } else {
  511|  1.35k|            BIO_snprintf(tbuf, sizeof(tbuf), ".%lu", l);
  512|  1.35k|            i = (int)strlen(tbuf);
  513|  1.35k|            if (buf && buf_len > 0) {
  ------------------
  |  Branch (513:17): [True: 1.35k, False: 0]
  |  Branch (513:24): [True: 1.35k, False: 0]
  ------------------
  514|  1.35k|                OPENSSL_strlcpy(buf, tbuf, buf_len);
  515|  1.35k|                if (i > buf_len) {
  ------------------
  |  Branch (515:21): [True: 0, False: 1.35k]
  ------------------
  516|      0|                    buf += buf_len;
  517|      0|                    buf_len = 0;
  518|  1.35k|                } else {
  519|  1.35k|                    buf += i;
  520|  1.35k|                    buf_len -= i;
  521|  1.35k|                }
  522|  1.35k|            }
  523|  1.35k|            n += i;
  524|  1.35k|            l = 0;
  525|  1.35k|        }
  526|  1.35k|    }
  527|       |
  528|    204|    BN_free(bl);
  529|    204|    return n;
  530|       |
  531|      0|err:
  532|      0|    BN_free(bl);
  533|      0|    return -1;
  534|    204|}
OBJ_get0_data:
  748|    150|{
  749|    150|    if (obj == NULL)
  ------------------
  |  Branch (749:9): [True: 0, False: 150]
  ------------------
  750|      0|        return NULL;
  751|    150|    return obj->data;
  752|    150|}

ossl_err_load_OBJ_strings:
   28|      1|{
   29|      1|#ifndef OPENSSL_NO_ERR
   30|      1|    if (ERR_reason_error_string(OBJ_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (30:9): [True: 1, False: 0]
  ------------------
   31|      1|        ERR_load_strings_const(OBJ_str_reasons);
   32|      1|#endif
   33|      1|    return 1;
   34|      1|}

ossl_err_load_OCSP_strings:
   66|      1|{
   67|      1|#ifndef OPENSSL_NO_ERR
   68|      1|    if (ERR_reason_error_string(OCSP_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (68:9): [True: 1, False: 0]
  ------------------
   69|      1|        ERR_load_strings_const(OCSP_str_reasons);
   70|      1|#endif
   71|      1|    return 1;
   72|      1|}

OSSL_PARAM_locate:
   55|    188|{
   56|    188|    if (ossl_likely(p != NULL && key != NULL))
  ------------------
  |  |   22|    376|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (22:24): [True: 188, False: 0]
  |  |  |  Branch (22:44): [True: 188, False: 0]
  |  |  |  Branch (22:44): [True: 188, False: 0]
  |  |  ------------------
  ------------------
   57|    197|        for (; p->key != NULL; p++)
  ------------------
  |  Branch (57:16): [True: 197, False: 0]
  ------------------
   58|    197|            if (strcmp(key, p->key) == 0)
  ------------------
  |  Branch (58:17): [True: 188, False: 9]
  ------------------
   59|    188|                return p;
   60|      0|    return NULL;
   61|    188|}
OSSL_PARAM_locate_const:
   64|    188|{
   65|    188|    return OSSL_PARAM_locate((OSSL_PARAM *)p, key);
   66|    188|}
OSSL_PARAM_set_int:
  281|     68|{
  282|     68|#ifndef OPENSSL_SMALL_FOOTPRINT
  283|     68|    switch (sizeof(int)) {
  ------------------
  |  Branch (283:13): [True: 68, Folded]
  ------------------
  284|     68|    case sizeof(int32_t):
  ------------------
  |  Branch (284:5): [True: 68, False: 0]
  ------------------
  285|     68|        return OSSL_PARAM_set_int32(p, (int32_t)val);
  286|      0|    case sizeof(int64_t):
  ------------------
  |  Branch (286:5): [True: 0, False: 68]
  ------------------
  287|      0|        return OSSL_PARAM_set_int64(p, (int64_t)val);
  288|     68|    }
  289|      0|#endif
  290|      0|    return general_set_int(p, &val, sizeof(val));
  291|     68|}
OSSL_PARAM_construct_int:
  294|     68|{
  295|     68|    return ossl_param_construct(key, OSSL_PARAM_INTEGER, buf, sizeof(int));
  ------------------
  |  |  106|     68|#define OSSL_PARAM_INTEGER 1
  ------------------
  296|     68|}
OSSL_PARAM_set_uint:
  312|    179|{
  313|    179|#ifndef OPENSSL_SMALL_FOOTPRINT
  314|    179|    switch (sizeof(unsigned int)) {
  ------------------
  |  Branch (314:13): [True: 179, Folded]
  ------------------
  315|    179|    case sizeof(uint32_t):
  ------------------
  |  Branch (315:5): [True: 179, False: 0]
  ------------------
  316|    179|        return OSSL_PARAM_set_uint32(p, (uint32_t)val);
  317|      0|    case sizeof(uint64_t):
  ------------------
  |  Branch (317:5): [True: 0, False: 179]
  ------------------
  318|      0|        return OSSL_PARAM_set_uint64(p, (uint64_t)val);
  319|    179|    }
  320|      0|#endif
  321|      0|    return general_set_uint(p, &val, sizeof(val));
  322|    179|}
OSSL_PARAM_set_int32:
  474|     68|{
  475|     68|    if (p == NULL) {
  ------------------
  |  Branch (475:9): [True: 0, False: 68]
  ------------------
  476|      0|        err_null_argument;
  ------------------
  |  |   38|      0|    ERR_raise(ERR_LIB_CRYPTO, ERR_R_PASSED_NULL_PARAMETER)
  |  |  ------------------
  |  |  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  361|      0|        ERR_set_error)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  477|      0|        return 0;
  478|      0|    }
  479|     68|    p->return_size = 0;
  480|     68|    if (p->data_type == OSSL_PARAM_INTEGER) {
  ------------------
  |  |  106|     68|#define OSSL_PARAM_INTEGER 1
  ------------------
  |  Branch (480:9): [True: 68, False: 0]
  ------------------
  481|     68|#ifndef OPENSSL_SMALL_FOOTPRINT
  482|     68|        p->return_size = sizeof(int32_t); /* Minimum expected size */
  483|     68|        if (p->data == NULL)
  ------------------
  |  Branch (483:13): [True: 0, False: 68]
  ------------------
  484|      0|            return 1;
  485|     68|        switch (p->data_size) {
  ------------------
  |  Branch (485:17): [True: 68, False: 0]
  ------------------
  486|     68|        case sizeof(int32_t):
  ------------------
  |  Branch (486:9): [True: 68, False: 0]
  ------------------
  487|     68|            *(int32_t *)p->data = val;
  488|     68|            return 1;
  489|      0|        case sizeof(int64_t):
  ------------------
  |  Branch (489:9): [True: 0, False: 68]
  ------------------
  490|      0|            p->return_size = sizeof(int64_t);
  491|      0|            *(int64_t *)p->data = (int64_t)val;
  492|      0|            return 1;
  493|     68|        }
  494|      0|#endif
  495|      0|        return general_set_int(p, &val, sizeof(val));
  496|     68|    } else if (p->data_type == OSSL_PARAM_UNSIGNED_INTEGER && val >= 0) {
  ------------------
  |  |  107|      0|#define OSSL_PARAM_UNSIGNED_INTEGER 2
  ------------------
  |  Branch (496:16): [True: 0, False: 0]
  |  Branch (496:63): [True: 0, False: 0]
  ------------------
  497|      0|#ifndef OPENSSL_SMALL_FOOTPRINT
  498|      0|        p->return_size = sizeof(uint32_t); /* Minimum expected size */
  499|      0|        if (p->data == NULL)
  ------------------
  |  Branch (499:13): [True: 0, False: 0]
  ------------------
  500|      0|            return 1;
  501|      0|        switch (p->data_size) {
  ------------------
  |  Branch (501:17): [True: 0, False: 0]
  ------------------
  502|      0|        case sizeof(uint32_t):
  ------------------
  |  Branch (502:9): [True: 0, False: 0]
  ------------------
  503|      0|            *(uint32_t *)p->data = (uint32_t)val;
  504|      0|            return 1;
  505|      0|        case sizeof(uint64_t):
  ------------------
  |  Branch (505:9): [True: 0, False: 0]
  ------------------
  506|      0|            p->return_size = sizeof(uint64_t);
  507|      0|            *(uint64_t *)p->data = (uint64_t)val;
  508|      0|            return 1;
  509|      0|        }
  510|      0|#endif
  511|      0|        return general_set_int(p, &val, sizeof(val));
  512|      0|    } else if (p->data_type == OSSL_PARAM_REAL) {
  ------------------
  |  |  112|      0|#define OSSL_PARAM_REAL 3
  ------------------
  |  Branch (512:16): [True: 0, False: 0]
  ------------------
  513|      0|#ifndef OPENSSL_SYS_UEFI
  514|      0|        uint32_t u32;
  515|      0|        unsigned int shift;
  516|       |
  517|      0|        p->return_size = sizeof(double);
  518|      0|        if (p->data == NULL)
  ------------------
  |  Branch (518:13): [True: 0, False: 0]
  ------------------
  519|      0|            return 1;
  520|      0|        switch (p->data_size) {
  ------------------
  |  Branch (520:17): [True: 0, False: 0]
  ------------------
  521|      0|        case sizeof(double):
  ------------------
  |  Branch (521:9): [True: 0, False: 0]
  ------------------
  522|      0|            shift = real_shift();
  523|      0|            if (shift < 8 * sizeof(val) - 1) {
  ------------------
  |  Branch (523:17): [True: 0, False: 0]
  ------------------
  524|      0|                u32 = val < 0 ? -val : val;
  ------------------
  |  Branch (524:23): [True: 0, False: 0]
  ------------------
  525|      0|                if ((u32 >> shift) != 0) {
  ------------------
  |  Branch (525:21): [True: 0, False: 0]
  ------------------
  526|      0|                    err_inexact;
  ------------------
  |  |   29|      0|    ERR_raise(ERR_LIB_CRYPTO, \
  |  |  ------------------
  |  |  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  361|      0|        ERR_set_error)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   30|      0|        CRYPTO_R_PARAM_CANNOT_BE_REPRESENTED_EXACTLY)
  ------------------
  527|      0|                    return 0;
  528|      0|                }
  529|      0|            }
  530|      0|            *(double *)p->data = (double)val;
  531|      0|            return 1;
  532|      0|        }
  533|      0|        err_unsupported_real;
  ------------------
  |  |   40|      0|    ERR_raise(ERR_LIB_CRYPTO, CRYPTO_R_PARAM_UNSUPPORTED_FLOATING_POINT_FORMAT)
  |  |  ------------------
  |  |  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  361|      0|        ERR_set_error)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  534|      0|        return 0;
  535|      0|#endif
  536|      0|    }
  537|      0|    err_bad_type;
  ------------------
  |  |   36|     68|    ERR_raise(ERR_LIB_CRYPTO, CRYPTO_R_PARAM_OF_INCOMPATIBLE_TYPE)
  |  |  ------------------
  |  |  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  361|      0|        ERR_set_error)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  538|      0|    return 0;
  539|     68|}
OSSL_PARAM_set_uint32:
  629|    179|{
  630|    179|    if (p == NULL) {
  ------------------
  |  Branch (630:9): [True: 0, False: 179]
  ------------------
  631|      0|        err_null_argument;
  ------------------
  |  |   38|      0|    ERR_raise(ERR_LIB_CRYPTO, ERR_R_PASSED_NULL_PARAMETER)
  |  |  ------------------
  |  |  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  361|      0|        ERR_set_error)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  632|      0|        return 0;
  633|      0|    }
  634|    179|    p->return_size = 0;
  635|       |
  636|    179|    if (p->data_type == OSSL_PARAM_UNSIGNED_INTEGER) {
  ------------------
  |  |  107|    179|#define OSSL_PARAM_UNSIGNED_INTEGER 2
  ------------------
  |  Branch (636:9): [True: 179, False: 0]
  ------------------
  637|    179|#ifndef OPENSSL_SMALL_FOOTPRINT
  638|    179|        p->return_size = sizeof(uint32_t); /* Minimum expected size */
  639|    179|        if (p->data == NULL)
  ------------------
  |  Branch (639:13): [True: 0, False: 179]
  ------------------
  640|      0|            return 1;
  641|    179|        switch (p->data_size) {
  ------------------
  |  Branch (641:17): [True: 179, False: 0]
  ------------------
  642|      0|        case sizeof(uint32_t):
  ------------------
  |  Branch (642:9): [True: 0, False: 179]
  ------------------
  643|      0|            *(uint32_t *)p->data = val;
  644|      0|            return 1;
  645|    179|        case sizeof(uint64_t):
  ------------------
  |  Branch (645:9): [True: 179, False: 0]
  ------------------
  646|    179|            p->return_size = sizeof(uint64_t);
  647|    179|            *(uint64_t *)p->data = val;
  648|    179|            return 1;
  649|    179|        }
  650|      0|#endif
  651|      0|        return general_set_uint(p, &val, sizeof(val));
  652|    179|    } else if (p->data_type == OSSL_PARAM_INTEGER) {
  ------------------
  |  |  106|      0|#define OSSL_PARAM_INTEGER 1
  ------------------
  |  Branch (652:16): [True: 0, False: 0]
  ------------------
  653|      0|#ifndef OPENSSL_SMALL_FOOTPRINT
  654|      0|        p->return_size = sizeof(int32_t); /* Minimum expected size */
  655|      0|        if (p->data == NULL)
  ------------------
  |  Branch (655:13): [True: 0, False: 0]
  ------------------
  656|      0|            return 1;
  657|      0|        switch (p->data_size) {
  ------------------
  |  Branch (657:17): [True: 0, False: 0]
  ------------------
  658|      0|        case sizeof(int32_t):
  ------------------
  |  Branch (658:9): [True: 0, False: 0]
  ------------------
  659|      0|            if (val <= INT32_MAX) {
  ------------------
  |  Branch (659:17): [True: 0, False: 0]
  ------------------
  660|      0|                *(int32_t *)p->data = (int32_t)val;
  661|      0|                return 1;
  662|      0|            }
  663|      0|            err_out_of_range;
  ------------------
  |  |   26|      0|    ERR_raise(ERR_LIB_CRYPTO, \
  |  |  ------------------
  |  |  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  361|      0|        ERR_set_error)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   27|      0|        CRYPTO_R_PARAM_VALUE_TOO_LARGE_FOR_DESTINATION)
  ------------------
  664|      0|            return 0;
  665|      0|        case sizeof(int64_t):
  ------------------
  |  Branch (665:9): [True: 0, False: 0]
  ------------------
  666|      0|            p->return_size = sizeof(int64_t);
  667|      0|            *(int64_t *)p->data = (int64_t)val;
  668|      0|            return 1;
  669|      0|        }
  670|      0|#endif
  671|      0|        return general_set_uint(p, &val, sizeof(val));
  672|      0|    } else if (p->data_type == OSSL_PARAM_REAL) {
  ------------------
  |  |  112|      0|#define OSSL_PARAM_REAL 3
  ------------------
  |  Branch (672:16): [True: 0, False: 0]
  ------------------
  673|      0|#ifndef OPENSSL_SYS_UEFI
  674|      0|        unsigned int shift;
  675|       |
  676|      0|        if (p->data == NULL) {
  ------------------
  |  Branch (676:13): [True: 0, False: 0]
  ------------------
  677|      0|            p->return_size = sizeof(double);
  678|      0|            return 1;
  679|      0|        }
  680|      0|        switch (p->data_size) {
  ------------------
  |  Branch (680:17): [True: 0, False: 0]
  ------------------
  681|      0|        case sizeof(double):
  ------------------
  |  Branch (681:9): [True: 0, False: 0]
  ------------------
  682|      0|            shift = real_shift();
  683|      0|            if (shift < 8 * sizeof(val) && (val >> shift) != 0) {
  ------------------
  |  Branch (683:17): [True: 0, False: 0]
  |  Branch (683:44): [True: 0, False: 0]
  ------------------
  684|      0|                err_inexact;
  ------------------
  |  |   29|      0|    ERR_raise(ERR_LIB_CRYPTO, \
  |  |  ------------------
  |  |  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  361|      0|        ERR_set_error)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   30|      0|        CRYPTO_R_PARAM_CANNOT_BE_REPRESENTED_EXACTLY)
  ------------------
  685|      0|                return 0;
  686|      0|            }
  687|      0|            *(double *)p->data = (double)val;
  688|      0|            p->return_size = sizeof(double);
  689|      0|            return 1;
  690|      0|        }
  691|      0|        err_unsupported_real;
  ------------------
  |  |   40|      0|    ERR_raise(ERR_LIB_CRYPTO, CRYPTO_R_PARAM_UNSUPPORTED_FLOATING_POINT_FORMAT)
  |  |  ------------------
  |  |  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  361|      0|        ERR_set_error)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  692|      0|        return 0;
  693|      0|#endif
  694|      0|    }
  695|      0|    err_bad_type;
  ------------------
  |  |   36|    179|    ERR_raise(ERR_LIB_CRYPTO, CRYPTO_R_PARAM_OF_INCOMPATIBLE_TYPE)
  |  |  ------------------
  |  |  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  361|      0|        ERR_set_error)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  696|      0|    return 0;
  697|    179|}
OSSL_PARAM_get_uint64:
  861|      3|{
  862|      3|    if (val == NULL || p == NULL) {
  ------------------
  |  Branch (862:9): [True: 0, False: 3]
  |  Branch (862:24): [True: 0, False: 3]
  ------------------
  863|      0|        err_null_argument;
  ------------------
  |  |   38|      0|    ERR_raise(ERR_LIB_CRYPTO, ERR_R_PASSED_NULL_PARAMETER)
  |  |  ------------------
  |  |  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  361|      0|        ERR_set_error)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  864|      0|        return 0;
  865|      0|    }
  866|       |
  867|      3|    if (p->data == NULL) {
  ------------------
  |  Branch (867:9): [True: 0, False: 3]
  ------------------
  868|      0|        err_null_argument;
  ------------------
  |  |   38|      0|    ERR_raise(ERR_LIB_CRYPTO, ERR_R_PASSED_NULL_PARAMETER)
  |  |  ------------------
  |  |  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  361|      0|        ERR_set_error)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  869|      0|        return 0;
  870|      0|    }
  871|       |
  872|      3|    if (ossl_likely(p->data_type == OSSL_PARAM_UNSIGNED_INTEGER)) {
  ------------------
  |  |   22|      3|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (22:24): [True: 3, False: 0]
  |  |  ------------------
  ------------------
  873|      3|#ifndef OPENSSL_SMALL_FOOTPRINT
  874|      3|        switch (p->data_size) {
  ------------------
  |  Branch (874:17): [True: 3, False: 0]
  ------------------
  875|      0|        case sizeof(uint32_t):
  ------------------
  |  Branch (875:9): [True: 0, False: 3]
  ------------------
  876|      0|            *val = *(const uint32_t *)p->data;
  877|      0|            return 1;
  878|      3|        case sizeof(uint64_t):
  ------------------
  |  Branch (878:9): [True: 3, False: 0]
  ------------------
  879|      3|            *val = *(const uint64_t *)p->data;
  880|      3|            return 1;
  881|      3|        }
  882|      0|#endif
  883|      0|        return general_get_uint(p, val, sizeof(*val));
  884|      3|    } else if (p->data_type == OSSL_PARAM_INTEGER) {
  ------------------
  |  |  106|      0|#define OSSL_PARAM_INTEGER 1
  ------------------
  |  Branch (884:16): [True: 0, False: 0]
  ------------------
  885|      0|#ifndef OPENSSL_SMALL_FOOTPRINT
  886|      0|        int32_t i32;
  887|      0|        int64_t i64;
  888|       |
  889|      0|        switch (p->data_size) {
  ------------------
  |  Branch (889:17): [True: 0, False: 0]
  ------------------
  890|      0|        case sizeof(int32_t):
  ------------------
  |  Branch (890:9): [True: 0, False: 0]
  ------------------
  891|      0|            i32 = *(const int32_t *)p->data;
  892|      0|            if (i32 >= 0) {
  ------------------
  |  Branch (892:17): [True: 0, False: 0]
  ------------------
  893|      0|                *val = (uint64_t)i32;
  894|      0|                return 1;
  895|      0|            }
  896|      0|            err_unsigned_negative;
  ------------------
  |  |   23|      0|    ERR_raise(ERR_LIB_CRYPTO, \
  |  |  ------------------
  |  |  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  361|      0|        ERR_set_error)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   24|      0|        CRYPTO_R_PARAM_UNSIGNED_INTEGER_NEGATIVE_VALUE_UNSUPPORTED)
  ------------------
  897|      0|            return 0;
  898|      0|        case sizeof(int64_t):
  ------------------
  |  Branch (898:9): [True: 0, False: 0]
  ------------------
  899|      0|            i64 = *(const int64_t *)p->data;
  900|      0|            if (i64 >= 0) {
  ------------------
  |  Branch (900:17): [True: 0, False: 0]
  ------------------
  901|      0|                *val = (uint64_t)i64;
  902|      0|                return 1;
  903|      0|            }
  904|      0|            err_unsigned_negative;
  ------------------
  |  |   23|      0|    ERR_raise(ERR_LIB_CRYPTO, \
  |  |  ------------------
  |  |  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  361|      0|        ERR_set_error)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   24|      0|        CRYPTO_R_PARAM_UNSIGNED_INTEGER_NEGATIVE_VALUE_UNSUPPORTED)
  ------------------
  905|      0|            return 0;
  906|      0|        }
  907|      0|#endif
  908|      0|        return general_get_uint(p, val, sizeof(*val));
  909|      0|    } else if (p->data_type == OSSL_PARAM_REAL) {
  ------------------
  |  |  112|      0|#define OSSL_PARAM_REAL 3
  ------------------
  |  Branch (909:16): [True: 0, False: 0]
  ------------------
  910|      0|#ifndef OPENSSL_SYS_UEFI
  911|      0|        double d;
  912|       |
  913|      0|        switch (p->data_size) {
  ------------------
  |  Branch (913:17): [True: 0, False: 0]
  ------------------
  914|      0|        case sizeof(double):
  ------------------
  |  Branch (914:9): [True: 0, False: 0]
  ------------------
  915|      0|            d = *(const double *)p->data;
  916|      0|            if (d >= 0
  ------------------
  |  Branch (916:17): [True: 0, False: 0]
  ------------------
  917|       |                /*
  918|       |                 * By subtracting 65535 (2^16-1) we cancel the low order
  919|       |                 * 15 bits of UINT64_MAX to avoid using imprecise floating
  920|       |                 * point values.
  921|       |                 */
  922|      0|                && d < (double)(UINT64_MAX - 65535) + 65536.0
  ------------------
  |  Branch (922:20): [True: 0, False: 0]
  ------------------
  923|      0|                && d == (uint64_t)d) {
  ------------------
  |  Branch (923:20): [True: 0, False: 0]
  ------------------
  924|      0|                *val = (uint64_t)d;
  925|      0|                return 1;
  926|      0|            }
  927|      0|            err_inexact;
  ------------------
  |  |   29|      0|    ERR_raise(ERR_LIB_CRYPTO, \
  |  |  ------------------
  |  |  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  361|      0|        ERR_set_error)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   30|      0|        CRYPTO_R_PARAM_CANNOT_BE_REPRESENTED_EXACTLY)
  ------------------
  928|      0|            return 0;
  929|      0|        }
  930|      0|        err_unsupported_real;
  ------------------
  |  |   40|      0|    ERR_raise(ERR_LIB_CRYPTO, CRYPTO_R_PARAM_UNSUPPORTED_FLOATING_POINT_FORMAT)
  |  |  ------------------
  |  |  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  361|      0|        ERR_set_error)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  931|      0|        return 0;
  932|      0|#endif
  933|      0|    }
  934|      0|    err_bad_type;
  ------------------
  |  |   36|      3|    ERR_raise(ERR_LIB_CRYPTO, CRYPTO_R_PARAM_OF_INCOMPATIBLE_TYPE)
  |  |  ------------------
  |  |  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  361|      0|        ERR_set_error)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  935|      0|    return 0;
  936|      3|}
OSSL_PARAM_set_uint64:
  939|     77|{
  940|     77|    if (p == NULL) {
  ------------------
  |  Branch (940:9): [True: 0, False: 77]
  ------------------
  941|      0|        err_null_argument;
  ------------------
  |  |   38|      0|    ERR_raise(ERR_LIB_CRYPTO, ERR_R_PASSED_NULL_PARAMETER)
  |  |  ------------------
  |  |  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  361|      0|        ERR_set_error)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  942|      0|        return 0;
  943|      0|    }
  944|     77|    p->return_size = 0;
  945|       |
  946|     77|    if (p->data_type == OSSL_PARAM_UNSIGNED_INTEGER) {
  ------------------
  |  |  107|     77|#define OSSL_PARAM_UNSIGNED_INTEGER 2
  ------------------
  |  Branch (946:9): [True: 77, False: 0]
  ------------------
  947|     77|#ifndef OPENSSL_SMALL_FOOTPRINT
  948|     77|        if (p->data == NULL) {
  ------------------
  |  Branch (948:13): [True: 0, False: 77]
  ------------------
  949|      0|            p->return_size = sizeof(uint64_t); /* Expected size */
  950|      0|            return 1;
  951|      0|        }
  952|     77|        switch (p->data_size) {
  ------------------
  |  Branch (952:17): [True: 77, False: 0]
  ------------------
  953|      0|        case sizeof(uint32_t):
  ------------------
  |  Branch (953:9): [True: 0, False: 77]
  ------------------
  954|      0|            if (val <= UINT32_MAX) {
  ------------------
  |  Branch (954:17): [True: 0, False: 0]
  ------------------
  955|      0|                p->return_size = sizeof(uint32_t);
  956|      0|                *(uint32_t *)p->data = (uint32_t)val;
  957|      0|                return 1;
  958|      0|            }
  959|      0|            err_out_of_range;
  ------------------
  |  |   26|      0|    ERR_raise(ERR_LIB_CRYPTO, \
  |  |  ------------------
  |  |  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  361|      0|        ERR_set_error)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   27|      0|        CRYPTO_R_PARAM_VALUE_TOO_LARGE_FOR_DESTINATION)
  ------------------
  960|      0|            return 0;
  961|     77|        case sizeof(uint64_t):
  ------------------
  |  Branch (961:9): [True: 77, False: 0]
  ------------------
  962|     77|            p->return_size = sizeof(uint64_t);
  963|     77|            *(uint64_t *)p->data = val;
  964|     77|            return 1;
  965|     77|        }
  966|      0|#endif
  967|      0|        return general_set_uint(p, &val, sizeof(val));
  968|     77|    } else if (p->data_type == OSSL_PARAM_INTEGER) {
  ------------------
  |  |  106|      0|#define OSSL_PARAM_INTEGER 1
  ------------------
  |  Branch (968:16): [True: 0, False: 0]
  ------------------
  969|      0|#ifndef OPENSSL_SMALL_FOOTPRINT
  970|      0|        if (p->data == NULL) {
  ------------------
  |  Branch (970:13): [True: 0, False: 0]
  ------------------
  971|      0|            p->return_size = sizeof(int64_t); /* Expected size */
  972|      0|            return 1;
  973|      0|        }
  974|      0|        switch (p->data_size) {
  ------------------
  |  Branch (974:17): [True: 0, False: 0]
  ------------------
  975|      0|        case sizeof(int32_t):
  ------------------
  |  Branch (975:9): [True: 0, False: 0]
  ------------------
  976|      0|            if (val <= INT32_MAX) {
  ------------------
  |  Branch (976:17): [True: 0, False: 0]
  ------------------
  977|      0|                p->return_size = sizeof(int32_t);
  978|      0|                *(int32_t *)p->data = (int32_t)val;
  979|      0|                return 1;
  980|      0|            }
  981|      0|            err_out_of_range;
  ------------------
  |  |   26|      0|    ERR_raise(ERR_LIB_CRYPTO, \
  |  |  ------------------
  |  |  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  361|      0|        ERR_set_error)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   27|      0|        CRYPTO_R_PARAM_VALUE_TOO_LARGE_FOR_DESTINATION)
  ------------------
  982|      0|            return 0;
  983|      0|        case sizeof(int64_t):
  ------------------
  |  Branch (983:9): [True: 0, False: 0]
  ------------------
  984|      0|            if (val <= INT64_MAX) {
  ------------------
  |  Branch (984:17): [True: 0, False: 0]
  ------------------
  985|      0|                p->return_size = sizeof(int64_t);
  986|      0|                *(int64_t *)p->data = (int64_t)val;
  987|      0|                return 1;
  988|      0|            }
  989|      0|            err_out_of_range;
  ------------------
  |  |   26|      0|    ERR_raise(ERR_LIB_CRYPTO, \
  |  |  ------------------
  |  |  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  361|      0|        ERR_set_error)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   27|      0|        CRYPTO_R_PARAM_VALUE_TOO_LARGE_FOR_DESTINATION)
  ------------------
  990|      0|            return 0;
  991|      0|        }
  992|      0|#endif
  993|      0|        return general_set_uint(p, &val, sizeof(val));
  994|      0|    } else if (p->data_type == OSSL_PARAM_REAL) {
  ------------------
  |  |  112|      0|#define OSSL_PARAM_REAL 3
  ------------------
  |  Branch (994:16): [True: 0, False: 0]
  ------------------
  995|      0|#ifndef OPENSSL_SYS_UEFI
  996|      0|        switch (p->data_size) {
  ------------------
  |  Branch (996:17): [True: 0, False: 0]
  ------------------
  997|      0|        case sizeof(double):
  ------------------
  |  Branch (997:9): [True: 0, False: 0]
  ------------------
  998|      0|            if ((val >> real_shift()) == 0) {
  ------------------
  |  Branch (998:17): [True: 0, False: 0]
  ------------------
  999|      0|                p->return_size = sizeof(double);
 1000|      0|                *(double *)p->data = (double)val;
 1001|      0|                return 1;
 1002|      0|            }
 1003|      0|            err_inexact;
  ------------------
  |  |   29|      0|    ERR_raise(ERR_LIB_CRYPTO, \
  |  |  ------------------
  |  |  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  361|      0|        ERR_set_error)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   30|      0|        CRYPTO_R_PARAM_CANNOT_BE_REPRESENTED_EXACTLY)
  ------------------
 1004|      0|            return 0;
 1005|      0|        }
 1006|      0|        err_unsupported_real;
  ------------------
  |  |   40|      0|    ERR_raise(ERR_LIB_CRYPTO, CRYPTO_R_PARAM_UNSUPPORTED_FLOATING_POINT_FORMAT)
  |  |  ------------------
  |  |  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  361|      0|        ERR_set_error)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1007|      0|        return 0;
 1008|      0|#endif
 1009|      0|    }
 1010|      0|    err_bad_type;
  ------------------
  |  |   36|     77|    ERR_raise(ERR_LIB_CRYPTO, CRYPTO_R_PARAM_OF_INCOMPATIBLE_TYPE)
  |  |  ------------------
  |  |  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  361|      0|        ERR_set_error)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1011|      0|    return 0;
 1012|     77|}
OSSL_PARAM_get_size_t:
 1021|      3|{
 1022|      3|#ifndef OPENSSL_SMALL_FOOTPRINT
 1023|      3|    switch (sizeof(size_t)) {
  ------------------
  |  Branch (1023:13): [True: 3, Folded]
  ------------------
 1024|      0|    case sizeof(uint32_t):
  ------------------
  |  Branch (1024:5): [True: 0, False: 3]
  ------------------
 1025|      0|        return OSSL_PARAM_get_uint32(p, (uint32_t *)val);
 1026|      3|    case sizeof(uint64_t):
  ------------------
  |  Branch (1026:5): [True: 3, False: 0]
  ------------------
 1027|      3|        return OSSL_PARAM_get_uint64(p, (uint64_t *)val);
 1028|      3|    }
 1029|      0|#endif
 1030|      0|    return general_get_uint(p, val, sizeof(*val));
 1031|      3|}
OSSL_PARAM_set_size_t:
 1034|     77|{
 1035|     77|#ifndef OPENSSL_SMALL_FOOTPRINT
 1036|     77|    switch (sizeof(size_t)) {
  ------------------
  |  Branch (1036:13): [True: 77, Folded]
  ------------------
 1037|      0|    case sizeof(uint32_t):
  ------------------
  |  Branch (1037:5): [True: 0, False: 77]
  ------------------
 1038|      0|        return OSSL_PARAM_set_uint32(p, (uint32_t)val);
 1039|     77|    case sizeof(uint64_t):
  ------------------
  |  Branch (1039:5): [True: 77, False: 0]
  ------------------
 1040|     77|        return OSSL_PARAM_set_uint64(p, (uint64_t)val);
 1041|     77|    }
 1042|      0|#endif
 1043|      0|    return general_set_uint(p, &val, sizeof(val));
 1044|     77|}
OSSL_PARAM_construct_size_t:
 1047|    259|{
 1048|    259|    return ossl_param_construct(key, OSSL_PARAM_UNSIGNED_INTEGER, buf,
  ------------------
  |  |  107|    259|#define OSSL_PARAM_UNSIGNED_INTEGER 2
  ------------------
 1049|    259|        sizeof(size_t));
 1050|    259|}
OSSL_PARAM_construct_end:
 1665|     37|{
 1666|     37|    OSSL_PARAM end = OSSL_PARAM_END;
  ------------------
  |  |   25|     37|    { NULL, 0, NULL, 0, 0 }
  ------------------
 1667|       |
 1668|     37|    return end;
 1669|     37|}
params.c:ossl_param_construct:
   70|    327|{
   71|    327|    OSSL_PARAM res;
   72|       |
   73|    327|    res.key = key;
   74|    327|    res.data_type = data_type;
   75|    327|    res.data = data;
   76|    327|    res.data_size = data_size;
   77|    327|    res.return_size = OSSL_PARAM_UNMODIFIED;
  ------------------
  |  |   22|    327|#define OSSL_PARAM_UNMODIFIED ((size_t)-1)
  ------------------
   78|    327|    return res;
   79|    327|}

ossl_err_load_PEM_strings:
   70|      1|{
   71|      1|#ifndef OPENSSL_NO_ERR
   72|      1|    if (ERR_reason_error_string(PEM_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (72:9): [True: 1, False: 0]
  ------------------
   73|      1|        ERR_load_strings_const(PEM_str_reasons);
   74|      1|#endif
   75|      1|    return 1;
   76|      1|}

ossl_err_load_PKCS12_strings:
   58|      1|{
   59|      1|#ifndef OPENSSL_NO_ERR
   60|      1|    if (ERR_reason_error_string(PKCS12_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (60:9): [True: 1, False: 0]
  ------------------
   61|      1|        ERR_load_strings_const(PKCS12_str_reasons);
   62|      1|#endif
   63|      1|    return 1;
   64|      1|}

ossl_err_load_PKCS7_strings:
   92|      1|{
   93|      1|#ifndef OPENSSL_NO_ERR
   94|      1|    if (ERR_reason_error_string(PKCS7_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (94:9): [True: 1, False: 0]
  ------------------
   95|      1|        ERR_load_strings_const(PKCS7_str_reasons);
   96|      1|#endif
   97|      1|    return 1;
   98|      1|}

ossl_property_defns_new:
   63|      3|{
   64|      3|    return lh_PROPERTY_DEFN_ELEM_new(&property_defn_hash, &property_defn_cmp);
   65|      3|}
ossl_prop_defn_get:
   68|     34|{
   69|     34|    PROPERTY_DEFN_ELEM elem, *r;
   70|     34|    LHASH_OF(PROPERTY_DEFN_ELEM) *property_defns;
  ------------------
  |  |  156|     34|#define LHASH_OF(type) struct lhash_st_##type
  ------------------
   71|       |
   72|     34|    property_defns = ossl_lib_ctx_get_data(ctx,
   73|     34|        OSSL_LIB_CTX_PROPERTY_DEFN_INDEX);
  ------------------
  |  |   97|     34|#define OSSL_LIB_CTX_PROPERTY_DEFN_INDEX 2
  ------------------
   74|     34|    if (!ossl_assert(property_defns != NULL) || !ossl_lib_ctx_read_lock(ctx))
  ------------------
  |  |   44|     34|#define ossl_assert(x) ossl_likely((x) != 0)
  |  |  ------------------
  |  |  |  |   22|     68|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  ------------------
  |  Branch (74:9): [True: 0, False: 34]
  |  Branch (74:49): [True: 0, False: 34]
  ------------------
   75|      0|        return NULL;
   76|       |
   77|     34|    elem.prop = prop;
   78|     34|    r = lh_PROPERTY_DEFN_ELEM_retrieve(property_defns, &elem);
   79|     34|    ossl_lib_ctx_unlock(ctx);
   80|     34|    if (r == NULL || !ossl_assert(r->defn != NULL))
  ------------------
  |  |   44|     32|#define ossl_assert(x) ossl_likely((x) != 0)
  |  |  ------------------
  |  |  |  |   22|     32|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  ------------------
  |  Branch (80:9): [True: 2, False: 32]
  |  Branch (80:22): [True: 0, False: 32]
  ------------------
   81|      2|        return NULL;
   82|     32|    return r->defn;
   83|     34|}
ossl_prop_defn_set:
   92|      2|{
   93|      2|    PROPERTY_DEFN_ELEM elem, *old, *p = NULL;
   94|      2|    size_t len;
   95|      2|    LHASH_OF(PROPERTY_DEFN_ELEM) *property_defns;
  ------------------
  |  |  156|      2|#define LHASH_OF(type) struct lhash_st_##type
  ------------------
   96|      2|    int res = 1;
   97|       |
   98|      2|    property_defns = ossl_lib_ctx_get_data(ctx,
   99|      2|        OSSL_LIB_CTX_PROPERTY_DEFN_INDEX);
  ------------------
  |  |   97|      2|#define OSSL_LIB_CTX_PROPERTY_DEFN_INDEX 2
  ------------------
  100|      2|    if (property_defns == NULL)
  ------------------
  |  Branch (100:9): [True: 0, False: 2]
  ------------------
  101|      0|        return 0;
  102|       |
  103|      2|    if (prop == NULL)
  ------------------
  |  Branch (103:9): [True: 0, False: 2]
  ------------------
  104|      0|        return 1;
  105|       |
  106|      2|    if (!ossl_lib_ctx_write_lock(ctx))
  ------------------
  |  Branch (106:9): [True: 0, False: 2]
  ------------------
  107|      0|        return 0;
  108|      2|    elem.prop = prop;
  109|      2|    if (pl == NULL) {
  ------------------
  |  Branch (109:9): [True: 0, False: 2]
  ------------------
  110|      0|        lh_PROPERTY_DEFN_ELEM_delete(property_defns, &elem);
  111|      0|        goto end;
  112|      0|    }
  113|       |    /* check if property definition is in the cache already */
  114|      2|    if ((p = lh_PROPERTY_DEFN_ELEM_retrieve(property_defns, &elem)) != NULL) {
  ------------------
  |  Branch (114:9): [True: 0, False: 2]
  ------------------
  115|      0|        ossl_property_free(*pl);
  116|      0|        *pl = p->defn;
  117|      0|        goto end;
  118|      0|    }
  119|      2|    len = strlen(prop);
  120|      2|    p = OPENSSL_malloc(sizeof(*p) + len);
  ------------------
  |  |  111|      2|    CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  121|      2|    if (p != NULL) {
  ------------------
  |  Branch (121:9): [True: 2, False: 0]
  ------------------
  122|      2|        p->prop = p->body;
  123|      2|        p->defn = *pl;
  124|      2|        memcpy(p->body, prop, len + 1);
  125|      2|        old = lh_PROPERTY_DEFN_ELEM_insert(property_defns, p);
  126|      2|        if (!ossl_assert(old == NULL))
  ------------------
  |  |   44|      2|#define ossl_assert(x) ossl_likely((x) != 0)
  |  |  ------------------
  |  |  |  |   22|      2|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  ------------------
  |  Branch (126:13): [True: 0, False: 2]
  ------------------
  127|       |            /* This should not happen. An existing entry is handled above. */
  128|      0|            goto end;
  129|      2|        if (!lh_PROPERTY_DEFN_ELEM_error(property_defns))
  ------------------
  |  Branch (129:13): [True: 2, False: 0]
  ------------------
  130|      2|            goto end;
  131|      2|    }
  132|      0|    OPENSSL_free(p);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  133|      0|    res = 0;
  134|      2|end:
  135|      2|    ossl_lib_ctx_unlock(ctx);
  136|      2|    return res;
  137|      0|}
defn_cache.c:property_defn_hash:
   35|     38|{
   36|     38|    return OPENSSL_LH_strhash(a->prop);
   37|     38|}
defn_cache.c:property_defn_cmp:
   41|     32|{
   42|     32|    return strcmp(a->prop, b->prop);
   43|     32|}

ossl_ctx_global_properties_new:
  162|      3|{
  163|      3|    return OPENSSL_zalloc(sizeof(OSSL_GLOBAL_PROPERTIES));
  ------------------
  |  |  113|      3|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  164|      3|}
ossl_ctx_global_properties:
  168|    213|{
  169|    213|    OSSL_GLOBAL_PROPERTIES *globp;
  170|       |
  171|    213|#if !defined(FIPS_MODULE) && !defined(OPENSSL_NO_AUTOLOAD_CONFIG)
  172|    213|    if (loadconfig && !OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CONFIG, NULL))
  ------------------
  |  |  553|      0|#define OPENSSL_INIT_LOAD_CONFIG 0x00000040L
  ------------------
  |  Branch (172:9): [True: 0, False: 213]
  |  Branch (172:23): [True: 0, False: 0]
  ------------------
  173|      0|        return NULL;
  174|    213|#endif
  175|    213|    globp = ossl_lib_ctx_get_data(libctx, OSSL_LIB_CTX_GLOBAL_PROPERTIES);
  ------------------
  |  |  111|    213|#define OSSL_LIB_CTX_GLOBAL_PROPERTIES 14
  ------------------
  176|       |
  177|    213|    return globp != NULL ? &globp->list : NULL;
  ------------------
  |  Branch (177:12): [True: 213, False: 0]
  ------------------
  178|    213|}
ossl_global_properties_no_mirrored:
  182|      1|{
  183|      1|    OSSL_GLOBAL_PROPERTIES *globp
  184|      1|        = ossl_lib_ctx_get_data(libctx, OSSL_LIB_CTX_GLOBAL_PROPERTIES);
  ------------------
  |  |  111|      1|#define OSSL_LIB_CTX_GLOBAL_PROPERTIES 14
  ------------------
  185|       |
  186|      1|    return globp != NULL && globp->no_mirrored ? 1 : 0;
  ------------------
  |  Branch (186:12): [True: 1, False: 0]
  |  Branch (186:29): [True: 0, False: 1]
  ------------------
  187|      1|}
ossl_method_store_new:
  325|     12|{
  326|     12|    OSSL_METHOD_STORE *res;
  327|       |
  328|     12|    res = OPENSSL_zalloc(sizeof(*res));
  ------------------
  |  |  113|     12|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  329|     12|    if (res != NULL) {
  ------------------
  |  Branch (329:9): [True: 12, False: 0]
  ------------------
  330|     12|        res->ctx = ctx;
  331|     12|        if ((res->algs = stored_algs_new(ctx)) == NULL
  ------------------
  |  Branch (331:13): [True: 0, False: 12]
  ------------------
  332|     12|            || (res->biglock = CRYPTO_THREAD_lock_new()) == NULL) {
  ------------------
  |  Branch (332:16): [True: 0, False: 12]
  ------------------
  333|      0|            ossl_method_store_free(res);
  334|      0|            return NULL;
  335|      0|        }
  336|     12|    }
  337|     12|    return res;
  338|     12|}
ossl_method_lock_store:
  351|  1.02k|{
  352|  1.02k|    return store != NULL ? CRYPTO_THREAD_write_lock(store->biglock) : 0;
  ------------------
  |  Branch (352:12): [True: 1.02k, False: 0]
  ------------------
  353|  1.02k|}
ossl_method_unlock_store:
  356|  1.02k|{
  357|  1.02k|    return store != NULL ? CRYPTO_THREAD_unlock(store->biglock) : 0;
  ------------------
  |  Branch (357:12): [True: 1.02k, False: 0]
  ------------------
  358|  1.02k|}
ossl_method_store_add:
  399|     34|{
  400|     34|    STORED_ALGORITHMS *sa;
  401|     34|    ALGORITHM *alg = NULL;
  402|     34|    IMPLEMENTATION *impl;
  403|     34|    int ret = 0;
  404|     34|    int i;
  405|       |
  406|     34|    if (nid <= 0 || method == NULL || store == NULL)
  ------------------
  |  Branch (406:9): [True: 0, False: 34]
  |  Branch (406:21): [True: 0, False: 34]
  |  Branch (406:39): [True: 0, False: 34]
  ------------------
  407|      0|        return 0;
  408|       |
  409|     34|    if (properties == NULL)
  ------------------
  |  Branch (409:9): [True: 0, False: 34]
  ------------------
  410|      0|        properties = "";
  411|       |
  412|     34|    if (!ossl_assert(prov != NULL))
  ------------------
  |  |   44|     34|#define ossl_assert(x) ossl_likely((x) != 0)
  |  |  ------------------
  |  |  |  |   22|     34|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  ------------------
  |  Branch (412:9): [True: 0, False: 34]
  ------------------
  413|      0|        return 0;
  414|       |
  415|       |    /* Create new entry */
  416|     34|    impl = OPENSSL_malloc(sizeof(*impl));
  ------------------
  |  |  111|     34|    CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  417|     34|    if (impl == NULL)
  ------------------
  |  Branch (417:9): [True: 0, False: 34]
  ------------------
  418|      0|        return 0;
  419|     34|    impl->method.method = method;
  420|     34|    impl->method.up_ref = method_up_ref;
  421|     34|    impl->method.free = method_destruct;
  422|     34|    if (!ossl_method_up_ref(&impl->method)) {
  ------------------
  |  Branch (422:9): [True: 0, False: 34]
  ------------------
  423|      0|        OPENSSL_free(impl);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  424|      0|        return 0;
  425|      0|    }
  426|     34|    impl->provider = prov;
  427|       |
  428|     34|    sa = stored_algs_shard(store, nid);
  ------------------
  |  |  123|     34|#define stored_algs_shard(store, nid) (&(store)->algs[(nid) & (NUM_SHARDS - 1)])
  |  |  ------------------
  |  |  |  |   38|     34|#define NUM_SHARDS (1 << NUM_SHARDS_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|     34|#define NUM_SHARDS_BITS 2
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  429|       |
  430|       |    /* Insert into the hash table if required */
  431|     34|    if (!ossl_property_write_lock(sa)) {
  ------------------
  |  Branch (431:9): [True: 0, False: 34]
  ------------------
  432|      0|        impl_free(impl);
  433|      0|        return 0;
  434|      0|    }
  435|       |
  436|       |    /*
  437|       |     * Flush the alg cache of any implementation that already exists
  438|       |     * for this id.
  439|       |     * This is done to ensure that on the next lookup we go through the
  440|       |     * provider comparison in ossl_method_store_fetch.  If we don't do this
  441|       |     * then this new method won't be given a chance to get selected.
  442|       |     * NOTE: This doesn't actually remove the method from the backing store
  443|       |     * It just ensures that we query the backing store when (re)-adding a
  444|       |     * method to the algorithm cache, in case the one selected by the next
  445|       |     * query selects a different implementation
  446|       |     */
  447|     34|    ossl_method_cache_flush(sa, nid);
  448|       |
  449|       |    /*
  450|       |     * Parse the properties associated with this method, and convert it to a
  451|       |     * property list stored against the implementation for later comparison
  452|       |     * during fetch operations
  453|       |     */
  454|     34|    if ((impl->properties = ossl_prop_defn_get(store->ctx, properties)) == NULL) {
  ------------------
  |  Branch (454:9): [True: 2, False: 32]
  ------------------
  455|      2|        impl->properties = ossl_parse_property(store->ctx, properties);
  456|      2|        if (impl->properties == NULL)
  ------------------
  |  Branch (456:13): [True: 0, False: 2]
  ------------------
  457|      0|            goto err;
  458|      2|        if (!ossl_prop_defn_set(store->ctx, properties, &impl->properties)) {
  ------------------
  |  Branch (458:13): [True: 0, False: 2]
  ------------------
  459|      0|            ossl_property_free(impl->properties);
  460|      0|            impl->properties = NULL;
  461|      0|            goto err;
  462|      0|        }
  463|      2|    }
  464|       |
  465|       |    /*
  466|       |     * Check if we have an algorithm cache already for this nid.  If so use
  467|       |     * it, otherwise, create it, and insert it into the store
  468|       |     */
  469|     34|    alg = ossl_method_store_retrieve(sa, nid);
  470|     34|    if (alg == NULL) {
  ------------------
  |  Branch (470:9): [True: 33, False: 1]
  ------------------
  471|     33|        if ((alg = OPENSSL_zalloc(sizeof(*alg))) == NULL
  ------------------
  |  |  113|     33|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  |  Branch (471:13): [True: 0, False: 33]
  ------------------
  472|     33|            || (alg->impls = sk_IMPLEMENTATION_new_null()) == NULL)
  ------------------
  |  Branch (472:16): [True: 0, False: 33]
  ------------------
  473|      0|            goto err;
  474|     33|        alg->nid = nid;
  475|     33|        if (!ossl_method_store_insert(sa, alg))
  ------------------
  |  Branch (475:13): [True: 0, False: 33]
  ------------------
  476|      0|            goto err;
  477|     33|        OSSL_TRACE2(QUERY, "Inserted an alg with nid %d into the stored algorithms %p\n",
  ------------------
  |  |  293|     33|    OSSL_TRACEV(category, (trc_out, format, arg1, arg2))
  |  |  ------------------
  |  |  |  |  283|     33|#define OSSL_TRACEV(category, args) ((void)0)
  |  |  ------------------
  ------------------
  478|     33|            nid, (void *)sa);
  479|     33|    }
  480|       |
  481|       |    /* Push onto stack if there isn't one there already */
  482|     35|    for (i = 0; i < sk_IMPLEMENTATION_num(alg->impls); i++) {
  ------------------
  |  Branch (482:17): [True: 1, False: 34]
  ------------------
  483|      1|        const IMPLEMENTATION *tmpimpl = sk_IMPLEMENTATION_value(alg->impls, i);
  484|       |
  485|      1|        if (tmpimpl->provider == impl->provider
  ------------------
  |  Branch (485:13): [True: 0, False: 1]
  ------------------
  486|      0|            && tmpimpl->properties == impl->properties)
  ------------------
  |  Branch (486:16): [True: 0, False: 0]
  ------------------
  487|      0|            break;
  488|      1|    }
  489|       |
  490|     34|    if (i == sk_IMPLEMENTATION_num(alg->impls)
  ------------------
  |  Branch (490:9): [True: 34, False: 0]
  ------------------
  491|     34|        && sk_IMPLEMENTATION_push(alg->impls, impl)) {
  ------------------
  |  Branch (491:12): [True: 34, False: 0]
  ------------------
  492|     34|        ret = 1;
  493|     34|#ifndef FIPS_MODULE
  494|     34|        OSSL_TRACE_BEGIN(QUERY)
  ------------------
  |  |  219|     34|    do {                           \
  |  |  220|     34|        BIO *trc_out = NULL;       \
  |  |  221|     34|        if (0)
  |  |  ------------------
  |  |  |  Branch (221:13): [Folded, False: 34]
  |  |  ------------------
  ------------------
  495|      0|        {
  496|      0|            BIO_printf(trc_out, "Adding to method store "
  497|      0|                                "nid: %d\nproperties: %s\nprovider: %s\n",
  498|      0|                nid, properties,
  499|      0|                ossl_provider_name(prov) == NULL ? "none" : ossl_provider_name(prov));
  ------------------
  |  Branch (499:17): [True: 0, False: 0]
  ------------------
  500|      0|        }
  501|     34|        OSSL_TRACE_END(QUERY);
  ------------------
  |  |  224|     34|    }                            \
  |  |  225|     34|    while (0)
  |  |  ------------------
  |  |  |  Branch (225:12): [Folded, False: 34]
  |  |  ------------------
  ------------------
  502|     34|#endif
  503|     34|    }
  504|     34|    ossl_property_unlock(sa);
  505|     34|    if (ret == 0)
  ------------------
  |  Branch (505:9): [True: 0, False: 34]
  ------------------
  506|      0|        impl_free(impl);
  507|     34|    return ret;
  508|       |
  509|      0|err:
  510|      0|    ossl_property_unlock(sa);
  511|       |    alg_cleanup(0, alg, NULL);
  512|      0|    impl_free(impl);
  513|      0|    return 0;
  514|     34|}
ossl_method_store_fetch:
  731|    221|{
  732|    221|    OSSL_PROPERTY_LIST **plp;
  733|    221|    ALGORITHM *alg;
  734|    221|    IMPLEMENTATION *impl, *best_impl = NULL;
  735|    221|    OSSL_PROPERTY_LIST *pq = NULL, *p2 = NULL;
  736|    221|    const OSSL_PROVIDER *prov = prov_rw != NULL ? *prov_rw : NULL;
  ------------------
  |  Branch (736:33): [True: 221, False: 0]
  ------------------
  737|    221|    int ret = 0;
  738|    221|    int j, best = -1, score, optional;
  739|    221|    STORED_ALGORITHMS *sa;
  740|       |
  741|    221|    if (nid <= 0 || method == NULL || store == NULL)
  ------------------
  |  Branch (741:9): [True: 0, False: 221]
  |  Branch (741:21): [True: 0, False: 221]
  |  Branch (741:39): [True: 0, False: 221]
  ------------------
  742|      0|        return 0;
  743|       |
  744|    221|#if !defined(FIPS_MODULE) && !defined(OPENSSL_NO_AUTOLOAD_CONFIG)
  745|    221|    if (ossl_lib_ctx_is_default(store->ctx)
  ------------------
  |  Branch (745:9): [True: 0, False: 221]
  ------------------
  746|      0|        && !OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CONFIG, NULL))
  ------------------
  |  |  553|      0|#define OPENSSL_INIT_LOAD_CONFIG 0x00000040L
  ------------------
  |  Branch (746:12): [True: 0, False: 0]
  ------------------
  747|      0|        return 0;
  748|    221|#endif
  749|       |
  750|    221|    sa = stored_algs_shard(store, nid);
  ------------------
  |  |  123|    221|#define stored_algs_shard(store, nid) (&(store)->algs[(nid) & (NUM_SHARDS - 1)])
  |  |  ------------------
  |  |  |  |   38|    221|#define NUM_SHARDS (1 << NUM_SHARDS_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|    221|#define NUM_SHARDS_BITS 2
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  751|       |
  752|       |    /* This only needs to be a read lock, because the query won't create anything */
  753|    221|    if (!ossl_property_read_lock(sa))
  ------------------
  |  Branch (753:9): [True: 0, False: 221]
  ------------------
  754|      0|        return 0;
  755|       |
  756|    221|    OSSL_TRACE2(QUERY, "Retrieving by nid %d from stored algorithms %p\n",
  ------------------
  |  |  293|    221|    OSSL_TRACEV(category, (trc_out, format, arg1, arg2))
  |  |  ------------------
  |  |  |  |  283|    221|#define OSSL_TRACEV(category, args) ((void)0)
  |  |  ------------------
  ------------------
  757|    221|        nid, (void *)sa);
  758|    221|    alg = ossl_method_store_retrieve(sa, nid);
  759|    221|    if (alg == NULL) {
  ------------------
  |  Branch (759:9): [True: 10, False: 211]
  ------------------
  760|     10|        ossl_property_unlock(sa);
  761|     10|        OSSL_TRACE2(QUERY, "Failed to retrieve by nid %d from stored algorithms %p\n",
  ------------------
  |  |  293|     10|    OSSL_TRACEV(category, (trc_out, format, arg1, arg2))
  |  |  ------------------
  |  |  |  |  283|     10|#define OSSL_TRACEV(category, args) ((void)0)
  |  |  ------------------
  ------------------
  762|     10|            nid, (void *)sa);
  763|     10|        return 0;
  764|     10|    }
  765|    211|    OSSL_TRACE2(QUERY, "Retrieved by nid %d from stored algorithms %p\n",
  ------------------
  |  |  293|    211|    OSSL_TRACEV(category, (trc_out, format, arg1, arg2))
  |  |  ------------------
  |  |  |  |  283|    211|#define OSSL_TRACEV(category, args) ((void)0)
  |  |  ------------------
  ------------------
  766|    211|        nid, (void *)sa);
  767|       |
  768|       |    /*
  769|       |     * If a property query string is provided, convert it to an
  770|       |     * OSSL_PROPERTY_LIST structure
  771|       |     */
  772|    211|    if (prop_query != NULL)
  ------------------
  |  Branch (772:9): [True: 211, False: 0]
  ------------------
  773|    211|        p2 = pq = ossl_parse_query(store->ctx, prop_query, 0);
  774|       |
  775|       |    /*
  776|       |     * If the library context has default properties specified
  777|       |     * then merge those with the properties passed to this function
  778|       |     */
  779|    211|    plp = ossl_ctx_global_properties(store->ctx, 0);
  780|    211|    if (plp != NULL && *plp != NULL) {
  ------------------
  |  Branch (780:9): [True: 211, False: 0]
  |  Branch (780:24): [True: 0, False: 211]
  ------------------
  781|      0|        if (pq == NULL) {
  ------------------
  |  Branch (781:13): [True: 0, False: 0]
  ------------------
  782|      0|            pq = *plp;
  783|      0|        } else {
  784|      0|            p2 = ossl_property_merge(pq, *plp);
  785|      0|            ossl_property_free(pq);
  786|      0|            if (p2 == NULL)
  ------------------
  |  Branch (786:17): [True: 0, False: 0]
  ------------------
  787|      0|                goto fin;
  788|      0|            pq = p2;
  789|      0|        }
  790|      0|    }
  791|       |
  792|       |    /*
  793|       |     * Search for a provider that provides this implementation.
  794|       |     * If the requested provider is NULL, then any provider will do,
  795|       |     * otherwise we should try to find the one that matches the requested
  796|       |     * provider.  Note that providers are given implicit preference via the
  797|       |     * ordering of the implementation stack
  798|       |     */
  799|    211|    if (pq == NULL) {
  ------------------
  |  Branch (799:9): [True: 0, False: 211]
  ------------------
  800|      0|        for (j = 0; j < sk_IMPLEMENTATION_num(alg->impls); j++) {
  ------------------
  |  Branch (800:21): [True: 0, False: 0]
  ------------------
  801|      0|            impl = sk_IMPLEMENTATION_value(alg->impls, j);
  802|      0|            if (impl != NULL
  ------------------
  |  Branch (802:17): [True: 0, False: 0]
  ------------------
  803|      0|                && (prov == NULL || impl->provider == prov)) {
  ------------------
  |  Branch (803:21): [True: 0, False: 0]
  |  Branch (803:37): [True: 0, False: 0]
  ------------------
  804|      0|                best_impl = impl;
  805|      0|                ret = 1;
  806|      0|                break;
  807|      0|            }
  808|      0|        }
  809|      0|        goto fin;
  810|      0|    }
  811|       |
  812|       |    /*
  813|       |     * If there are optional properties specified
  814|       |     * then run the search again, and select the provider that matches the
  815|       |     * most options
  816|       |     */
  817|    211|    optional = ossl_property_has_optional(pq);
  818|    211|    for (j = 0; j < sk_IMPLEMENTATION_num(alg->impls); j++) {
  ------------------
  |  Branch (818:17): [True: 211, False: 0]
  ------------------
  819|    211|        impl = sk_IMPLEMENTATION_value(alg->impls, j);
  820|    211|        if (impl != NULL
  ------------------
  |  Branch (820:13): [True: 211, False: 0]
  ------------------
  821|    211|            && (prov == NULL || impl->provider == prov)) {
  ------------------
  |  Branch (821:17): [True: 211, False: 0]
  |  Branch (821:33): [True: 0, False: 0]
  ------------------
  822|    211|            score = ossl_property_match_count(pq, impl->properties);
  823|    211|            if (score > best) {
  ------------------
  |  Branch (823:17): [True: 211, False: 0]
  ------------------
  824|    211|                best_impl = impl;
  825|    211|                best = score;
  826|    211|                ret = 1;
  827|    211|                if (!optional)
  ------------------
  |  Branch (827:21): [True: 211, False: 0]
  ------------------
  828|    211|                    goto fin;
  829|    211|            }
  830|    211|        }
  831|    211|    }
  832|    211|fin:
  833|    211|    if (ret) {
  ------------------
  |  Branch (833:9): [True: 211, False: 0]
  ------------------
  834|    211|        *method = best_impl->method.method;
  835|    211|        if (prov_rw != NULL)
  ------------------
  |  Branch (835:13): [True: 211, False: 0]
  ------------------
  836|    211|            *prov_rw = best_impl->provider;
  837|       |#ifdef OPENSSL_NO_CACHED_FETCH
  838|       |        if (!ossl_method_up_ref(&best_impl->method)) {
  839|       |            ret = 0;
  840|       |            *method = NULL;
  841|       |            if (prov_rw != NULL)
  842|       |                *prov_rw = NULL;
  843|       |        }
  844|       |#endif
  845|    211|    } else {
  846|      0|        ret = 0;
  847|      0|    }
  848|       |
  849|    211|#ifndef FIPS_MODULE
  850|    211|    OSSL_TRACE_BEGIN(QUERY)
  ------------------
  |  |  219|    211|    do {                           \
  |  |  220|    211|        BIO *trc_out = NULL;       \
  |  |  221|    211|        if (0)
  |  |  ------------------
  |  |  |  Branch (221:13): [Folded, False: 211]
  |  |  ------------------
  ------------------
  851|      0|    {
  852|      0|        char buf[512];
  853|      0|        size_t size;
  854|       |
  855|      0|        size = ossl_property_list_to_string(NULL, pq, buf, 512);
  856|      0|        BIO_printf(trc_out, "method store query with properties %s "
  857|      0|                            "resolves to provider %s\n",
  858|      0|            size == 0 ? "none" : buf,
  ------------------
  |  Branch (858:13): [True: 0, False: 0]
  ------------------
  859|      0|            best_impl == NULL ? "none" : ossl_provider_name(best_impl->provider));
  ------------------
  |  Branch (859:13): [True: 0, False: 0]
  ------------------
  860|      0|    }
  861|    211|    OSSL_TRACE_END(QUERY);
  ------------------
  |  |  224|    211|    }                            \
  |  |  225|    211|    while (0)
  |  |  ------------------
  |  |  |  Branch (225:12): [Folded, False: 211]
  |  |  ------------------
  ------------------
  862|    211|#endif
  863|       |
  864|    211|    ossl_property_unlock(sa);
  865|    211|    ossl_property_free(p2);
  866|    211|    return ret;
  867|    211|}
ossl_method_store_cache_flush_all:
  927|     17|{
  928|     85|    for (int i = 0; i < NUM_SHARDS; ++i) {
  ------------------
  |  |   38|     85|#define NUM_SHARDS (1 << NUM_SHARDS_BITS)
  |  |  ------------------
  |  |  |  |   36|     85|#define NUM_SHARDS_BITS 2
  |  |  ------------------
  ------------------
  |  Branch (928:21): [True: 68, False: 17]
  ------------------
  929|     68|        STORED_ALGORITHMS *sa = &store->algs[i];
  930|       |
  931|     68|        if (!ossl_property_write_lock(sa))
  ------------------
  |  Branch (931:13): [True: 0, False: 68]
  ------------------
  932|      0|            return 0;
  933|     68|        ossl_cache_lists_flush(sa);
  934|     68|        ossl_method_store_atomic_clean_archive(sa);
  935|     68|        ossl_property_unlock(sa);
  936|     68|    }
  937|       |
  938|     17|    return 1;
  939|     17|}
ossl_method_store_cache_get:
  965|   792k|{
  966|   792k|    int ret;
  967|   792k|    STORED_ALGORITHMS *sa;
  968|       |
  969|   792k|    if (nid <= 0 || store == NULL || prop_query == NULL)
  ------------------
  |  Branch (969:9): [True: 0, False: 792k]
  |  Branch (969:21): [True: 0, False: 792k]
  |  Branch (969:38): [True: 0, False: 792k]
  ------------------
  970|      0|        return 0;
  971|       |
  972|   792k|    sa = stored_algs_shard(store, nid);
  ------------------
  |  |  123|   792k|#define stored_algs_shard(store, nid) (&(store)->algs[(nid) & (NUM_SHARDS - 1)])
  |  |  ------------------
  |  |  |  |   38|   792k|#define NUM_SHARDS (1 << NUM_SHARDS_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|   792k|#define NUM_SHARDS_BITS 2
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  973|       |
  974|       |    /*
  975|       |     * Do an atomic linked list walk to search for our entry
  976|       |     */
  977|   792k|    ret = ossl_method_store_cache_get_atomic(store, prov, nid, prop_query, sa,
  978|   792k|        method);
  979|       |
  980|   792k|    return ret;
  981|   792k|}
ossl_method_store_cache_set:
 1285|     25|{
 1286|     25|    STORED_ALGORITHMS *sa;
 1287|     25|    int res = 1;
 1288|       |
 1289|     25|    if (nid <= 0 || store == NULL || prop_query == NULL)
  ------------------
  |  Branch (1289:9): [True: 0, False: 25]
  |  Branch (1289:21): [True: 0, False: 25]
  |  Branch (1289:38): [True: 0, False: 25]
  ------------------
 1290|      0|        return 0;
 1291|       |
 1292|     25|    if (!ossl_assert(prov != NULL))
  ------------------
  |  |   44|     25|#define ossl_assert(x) ossl_likely((x) != 0)
  |  |  ------------------
  |  |  |  |   22|     25|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  ------------------
  |  Branch (1292:9): [True: 0, False: 25]
  ------------------
 1293|      0|        return 0;
 1294|       |
 1295|     25|    sa = stored_algs_shard(store, nid);
  ------------------
  |  |  123|     25|#define stored_algs_shard(store, nid) (&(store)->algs[(nid) & (NUM_SHARDS - 1)])
  |  |  ------------------
  |  |  |  |   38|     25|#define NUM_SHARDS (1 << NUM_SHARDS_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|     25|#define NUM_SHARDS_BITS 2
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1296|       |
 1297|       |    /*
 1298|       |     * Do an atomic insert into the appropriate cache linked list
 1299|       |     */
 1300|     25|    res = ossl_method_store_cache_set_atomic(store, prov, nid, prop_query, sa, method,
 1301|     25|        method_up_ref, method_destruct);
 1302|       |
 1303|     25|    return res;
 1304|     25|}
property.c:stored_algs_new:
  292|     12|{
  293|     12|    STORED_ALGORITHMS *ret;
  294|       |
  295|     12|    ret = OPENSSL_calloc(NUM_SHARDS, sizeof(STORED_ALGORITHMS));
  ------------------
  |  |  117|     12|    CRYPTO_calloc(num, size, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_calloc(num, size, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  296|     12|    if (ret == NULL)
  ------------------
  |  Branch (296:9): [True: 0, False: 12]
  ------------------
  297|      0|        return NULL;
  298|       |
  299|     60|    for (int i = 0; i < NUM_SHARDS; ++i) {
  ------------------
  |  |   38|     60|#define NUM_SHARDS (1 << NUM_SHARDS_BITS)
  |  |  ------------------
  |  |  |  |   36|     60|#define NUM_SHARDS_BITS 2
  |  |  ------------------
  ------------------
  |  Branch (299:21): [True: 48, False: 12]
  ------------------
  300|     48|        ret[i].algs = ossl_sa_ALGORITHM_new();
  301|     48|        if (ret[i].algs == NULL)
  ------------------
  |  Branch (301:13): [True: 0, False: 48]
  ------------------
  302|      0|            goto err;
  303|       |
  304|     48|        ret[i].lock = CRYPTO_THREAD_lock_new();
  305|     48|        if (ret[i].lock == NULL)
  ------------------
  |  Branch (305:13): [True: 0, False: 48]
  ------------------
  306|      0|            goto err;
  307|     48|        ret[i].alock = CRYPTO_THREAD_lock_new();
  308|     48|        if (ret[i].alock == NULL)
  ------------------
  |  Branch (308:13): [True: 0, False: 48]
  ------------------
  309|      0|            goto err;
  310|     48|    }
  311|       |
  312|     12|    return ret;
  313|       |
  314|      0|err:
  315|      0|    stored_algs_free(ret);
  316|       |
  317|       |    return NULL;
  318|     12|}
property.c:ossl_method_up_ref:
  200|     84|{
  201|     84|    return (*method->up_ref)(method->method);
  202|     84|}
property.c:ossl_property_write_lock:
  215|    102|{
  216|    102|    return p != NULL ? CRYPTO_THREAD_write_lock(p->lock) : 0;
  ------------------
  |  Branch (216:12): [True: 102, False: 0]
  ------------------
  217|    102|}
property.c:ossl_method_store_retrieve:
  361|    289|{
  362|    289|    return ossl_sa_ALGORITHM_get(sa->algs, nid);
  363|    289|}
property.c:ossl_method_store_insert:
  366|     33|{
  367|     33|    return ossl_sa_ALGORITHM_set(sa->algs, alg->nid, alg);
  368|     33|}
property.c:ossl_property_unlock:
  220|    323|{
  221|    323|    return p != 0 ? CRYPTO_THREAD_unlock(p->lock) : 0;
  ------------------
  |  Branch (221:12): [True: 323, False: 0]
  ------------------
  222|    323|}
property.c:ossl_method_cache_flush_alg:
  871|      1|{
  872|      1|    impl_cache_flush_alg(alg, sa);
  873|      1|}
property.c:impl_cache_flush_alg:
  241|      1|{
  242|      1|    QUERY *q;
  243|      1|    int i;
  244|       |
  245|       |    /*
  246|       |     * Instead of iterating over the hashtable with the
  247|       |     * ossl_ht_foreach_until function, we just traverse the
  248|       |     * linked list, as it much faster this way, as we avoid having
  249|       |     * to visit lots of potentially empty nodes
  250|       |     */
  251|      9|    for (i = 0; i < MAX_CACHE_LINES; i++) {
  ------------------
  |  |   43|      9|#define MAX_CACHE_LINES (1 << MAX_CACHE_LINES_BITS)
  |  |  ------------------
  |  |  |  |   41|      9|#define MAX_CACHE_LINES_BITS 3
  |  |  ------------------
  ------------------
  |  Branch (251:17): [True: 8, False: 1]
  ------------------
  252|      8|        if (!CRYPTO_atomic_load_ptr((void **)&sa->cache_lists[i], (void **)&q, sa->alock))
  ------------------
  |  Branch (252:13): [True: 0, False: 8]
  ------------------
  253|      0|            return;
  254|      8|        while (q != NULL) {
  ------------------
  |  Branch (254:16): [True: 0, False: 8]
  ------------------
  255|      0|            if (q->nid == alg->nid)
  ------------------
  |  Branch (255:17): [True: 0, False: 0]
  ------------------
  256|      0|                ossl_method_store_atomic_archive(sa, q);
  257|      0|            if (!CRYPTO_atomic_load_ptr((void **)&q->next, (void **)&q, sa->alock))
  ------------------
  |  Branch (257:17): [True: 0, False: 0]
  ------------------
  258|      0|                return;
  259|      0|        }
  260|      8|    }
  261|      1|}
property.c:ossl_property_read_lock:
  210|    221|{
  211|    221|    return p != NULL ? CRYPTO_THREAD_read_lock(p->lock) : 0;
  ------------------
  |  Branch (211:12): [True: 221, False: 0]
  ------------------
  212|    221|}
property.c:ossl_method_cache_flush:
  876|     34|{
  877|     34|    ALGORITHM *alg = ossl_method_store_retrieve(sa, nid);
  878|       |
  879|     34|    if (alg != NULL)
  ------------------
  |  Branch (879:9): [True: 1, False: 33]
  ------------------
  880|      1|        ossl_method_cache_flush_alg(sa, alg);
  881|     34|}
property.c:ossl_cache_lists_flush:
  884|     68|{
  885|     68|    int i;
  886|     68|    QUERY *idx, *idxn;
  887|       |
  888|    612|    for (i = 0; i < MAX_CACHE_LINES; i++) {
  ------------------
  |  |   43|    612|#define MAX_CACHE_LINES (1 << MAX_CACHE_LINES_BITS)
  |  |  ------------------
  |  |  |  |   41|    612|#define MAX_CACHE_LINES_BITS 3
  |  |  ------------------
  ------------------
  |  Branch (888:17): [True: 544, False: 68]
  ------------------
  889|    544|        if (!CRYPTO_atomic_load_ptr((void **)&sa->cache_lists[i], (void **)&idx, sa->alock))
  ------------------
  |  Branch (889:13): [True: 0, False: 544]
  ------------------
  890|      0|            break;
  891|    544|        while (idx != NULL) {
  ------------------
  |  Branch (891:16): [True: 0, False: 544]
  ------------------
  892|      0|            if (!CRYPTO_atomic_load_ptr((void **)&idx->next, (void **)&idxn, sa->alock))
  ------------------
  |  Branch (892:17): [True: 0, False: 0]
  ------------------
  893|      0|                break;
  894|      0|            ossl_method_store_atomic_archive(sa, idx);
  895|      0|            idx = idxn;
  896|      0|        }
  897|    544|    }
  898|     68|}
property.c:ossl_method_store_cache_get_atomic:
  943|   792k|{
  944|   792k|    QUERY *r = NULL;
  945|   792k|    int res = 0;
  946|       |
  947|   792k|    r = ossl_method_store_atomic_find_in_list(sa, nid, prov, prop_query);
  948|       |
  949|   792k|    if (r != NULL) {
  ------------------
  |  Branch (949:9): [True: 792k, False: 34]
  ------------------
  950|   792k|        *method = r->method.method;
  951|   792k|        res = 1;
  952|       |#ifdef OPENSSL_NO_CACHED_FETCH
  953|       |        if (!ossl_method_up_ref(&r->method)) {
  954|       |            *method = NULL;
  955|       |            res = 0;
  956|       |        }
  957|       |#endif
  958|   792k|    }
  959|       |
  960|   792k|    return res;
  961|   792k|}
property.c:ossl_method_store_atomic_find_in_list:
 1153|   792k|{
 1154|   792k|    int nididx = (nid >> NUM_SHARDS_BITS) & (MAX_CACHE_LINES - 1);
  ------------------
  |  |   36|   792k|#define NUM_SHARDS_BITS 2
  ------------------
                  int nididx = (nid >> NUM_SHARDS_BITS) & (MAX_CACHE_LINES - 1);
  ------------------
  |  |   43|   792k|#define MAX_CACHE_LINES (1 << MAX_CACHE_LINES_BITS)
  |  |  ------------------
  |  |  |  |   41|   792k|#define MAX_CACHE_LINES_BITS 3
  |  |  ------------------
  ------------------
 1155|   792k|    int archived;
 1156|   792k|    QUERY *idx;
 1157|   792k|    QUERY *ret = NULL;
 1158|       |
 1159|   792k|    if (!CRYPTO_atomic_load_ptr((void **)&sa->cache_lists[nididx], (void **)&idx, sa->alock))
  ------------------
  |  Branch (1159:9): [True: 0, False: 792k]
  ------------------
 1160|      0|        goto out;
 1161|       |
 1162|  27.3M|    while (idx != NULL) {
  ------------------
  |  Branch (1162:12): [True: 27.3M, False: 84]
  ------------------
 1163|  27.3M|        if (!CRYPTO_atomic_load_int(&idx->archived, &archived, sa->alock))
  ------------------
  |  Branch (1163:13): [True: 0, False: 27.3M]
  ------------------
 1164|      0|            goto out;
 1165|  27.3M|        if (archived == 0 && idx->nid == nid && idx->prov == prov
  ------------------
  |  Branch (1165:13): [True: 27.3M, False: 0]
  |  Branch (1165:30): [True: 792k, False: 26.5M]
  |  Branch (1165:49): [True: 792k, False: 25]
  ------------------
 1166|   792k|            && (strcmp(idx->prop_query, prop_query) == 0)) {
  ------------------
  |  Branch (1166:16): [True: 792k, False: 0]
  ------------------
 1167|   792k|            ret = idx;
 1168|   792k|            break;
 1169|   792k|        }
 1170|  26.5M|        if (!CRYPTO_atomic_load_ptr((void **)&idx->next, (void **)&idx, sa->alock))
  ------------------
  |  Branch (1170:13): [True: 0, False: 26.5M]
  ------------------
 1171|      0|            goto out;
 1172|  26.5M|    }
 1173|   792k|out:
 1174|   792k|    return ret;
 1175|   792k|}
property.c:ossl_method_store_atomic_clean_archive:
 1022|     68|{
 1023|     68|    QUERY *idx, *idxn, *tmp;
 1024|     68|    int archived;
 1025|     68|    int i;
 1026|     68|    int lock_failed;
 1027|       |
 1028|       |    /*
 1029|       |     * For each of our linked lists
 1030|       |     */
 1031|    612|    for (i = 0; i < MAX_CACHE_LINES; i++) {
  ------------------
  |  |   43|    612|#define MAX_CACHE_LINES (1 << MAX_CACHE_LINES_BITS)
  |  |  ------------------
  |  |  |  |   41|    612|#define MAX_CACHE_LINES_BITS 3
  |  |  ------------------
  ------------------
  |  Branch (1031:17): [True: 544, False: 68]
  ------------------
 1032|    544|    restart_list:
 1033|       |        /*
 1034|       |         * Get the head of the list
 1035|       |         */
 1036|    544|        if (!CRYPTO_atomic_load_ptr((void **)&sa->cache_lists[i], (void **)&idx, sa->alock))
  ------------------
  |  Branch (1036:13): [True: 0, False: 544]
  ------------------
 1037|      0|            continue;
 1038|       |        /*
 1039|       |         * If its NULL, the list is currently empty, move on to the next one
 1040|       |         */
 1041|    544|        if (idx == NULL)
  ------------------
  |  Branch (1041:13): [True: 544, False: 0]
  ------------------
 1042|    544|            continue;
 1043|       |        /*
 1044|       |         * Get its archived value
 1045|       |         */
 1046|      0|        if (!CRYPTO_atomic_load_int(&idx->archived, &archived, sa->alock))
  ------------------
  |  Branch (1046:13): [True: 0, False: 0]
  ------------------
 1047|      0|            continue;
 1048|       |        /*
 1049|       |         * Also fetch its next pointer to idxn
 1050|       |         */
 1051|      0|        if (!CRYPTO_atomic_load_ptr((void **)&idx->next, (void **)&idxn, sa->alock))
  ------------------
  |  Branch (1051:13): [True: 0, False: 0]
  ------------------
 1052|      0|            continue;
 1053|       |        /*
 1054|       |         * If its been archived, we want to move it to the archive list
 1055|       |         */
 1056|      0|        if (archived == 1) {
  ------------------
  |  Branch (1056:13): [True: 0, False: 0]
  ------------------
 1057|       |            /*
 1058|       |             * We know this is the current list head we're working with
 1059|       |             * so store the next pointer to be the new list head
 1060|       |             */
 1061|      0|            if (!CRYPTO_atomic_cmp_exch_ptr((void **)&sa->cache_lists[i], (void **)&idx, idxn, sa->alock,
  ------------------
  |  Branch (1061:17): [True: 0, False: 0]
  ------------------
 1062|      0|                    &lock_failed)) {
 1063|      0|                if (lock_failed)
  ------------------
  |  Branch (1063:21): [True: 0, False: 0]
  ------------------
 1064|      0|                    continue;
 1065|      0|                else
 1066|      0|                    goto restart_list;
 1067|      0|            }
 1068|       |
 1069|      0|            if (!ossl_method_store_put_in_archive(sa, idx))
  ------------------
  |  Branch (1069:17): [True: 0, False: 0]
  ------------------
 1070|      0|                continue;
 1071|      0|            goto restart_list;
 1072|      0|        }
 1073|       |
 1074|       |        /*
 1075|       |         * At this point our state is:
 1076|       |         * idx - points to an element in cache_lists[i]
 1077|       |         * idxn points to the next entry (i.e. idx->next)
 1078|       |         */
 1079|      0|        while (idx != NULL) {
  ------------------
  |  Branch (1079:16): [True: 0, False: 0]
  ------------------
 1080|       |            /*
 1081|       |             * We know idx isn't archived, so we start looking at idxn
 1082|       |             */
 1083|      0|            if (idxn != NULL) {
  ------------------
  |  Branch (1083:17): [True: 0, False: 0]
  ------------------
 1084|       |                /*
 1085|       |                 * if its not NULL, see if its archived
 1086|       |                 */
 1087|      0|                if (!CRYPTO_atomic_load_int(&idxn->archived, &archived, sa->alock))
  ------------------
  |  Branch (1087:21): [True: 0, False: 0]
  ------------------
 1088|      0|                    break;
 1089|       |                /*
 1090|       |                 * If it is, remove it
 1091|       |                 */
 1092|      0|                if (archived == 1) {
  ------------------
  |  Branch (1092:21): [True: 0, False: 0]
  ------------------
 1093|       |                    /*
 1094|       |                     * Start by making idx skip idxn in the list
 1095|       |                     * First load the expected next value of idx->next
 1096|       |                     */
 1097|      0|                    if (!CRYPTO_atomic_load_ptr((void **)&idx->next, (void **)&tmp, sa->alock))
  ------------------
  |  Branch (1097:25): [True: 0, False: 0]
  ------------------
 1098|      0|                        break;
 1099|       |
 1100|       |                    /*
 1101|       |                     * Now compare the value of idx->next to what we just loaded to tmp above
 1102|       |                     * if they match, we can safely update idx->next to skip the idxn entry
 1103|       |                     * by pointing idx->next to idxn->next.
 1104|       |                     * If the comparison fails, then we need to start the list traversal over again.
 1105|       |                     * Note: This should never happen, as once an item is in the list, this is the
 1106|       |                     * only path in which an in-list item has its next pointer mutated, and this
 1107|       |                     * occurs under a write lock, but we should be safe here
 1108|       |                     */
 1109|      0|                    if (!CRYPTO_atomic_cmp_exch_ptr((void **)&idx->next,
  ------------------
  |  Branch (1109:25): [True: 0, False: 0]
  ------------------
 1110|      0|                            (void **)&tmp, (void *)idxn->next,
 1111|      0|                            sa->alock, &lock_failed)) {
 1112|      0|                        if (lock_failed)
  ------------------
  |  Branch (1112:29): [True: 0, False: 0]
  ------------------
 1113|      0|                            break;
 1114|       |                        /*
 1115|       |                         * The list was mutated while we were trying to mutate it
 1116|       |                         * Normally we would just use the reloaded value of tmp here to re-attempt
 1117|       |                         * the removal, but since idx was changed underneath us, we don't know where
 1118|       |                         * we are in the list anymore.  Its safer to just restart the whole traversal
 1119|       |                         */
 1120|      0|                        goto restart_list;
 1121|      0|                    }
 1122|       |
 1123|      0|                    if (!ossl_method_store_put_in_archive(sa, idxn))
  ------------------
  |  Branch (1123:25): [True: 0, False: 0]
  ------------------
 1124|      0|                        break;
 1125|       |
 1126|       |                    /*
 1127|       |                     * Idx just got a new next pointer above, so just update idxn, so we are sure that idx
 1128|       |                     * still isn't archived
 1129|       |                     */
 1130|      0|                    if (!CRYPTO_atomic_load_ptr((void **)&idx->next, (void **)&idxn, sa->alock))
  ------------------
  |  Branch (1130:25): [True: 0, False: 0]
  ------------------
 1131|      0|                        break;
 1132|      0|                } else {
 1133|       |                    /*
 1134|       |                     * idxn wasn't archived, so we need to advance both pointers here
 1135|       |                     */
 1136|      0|                    idx = idxn;
 1137|      0|                    if (!CRYPTO_atomic_load_ptr((void **)&idx->next, (void **)&idxn, sa->alock))
  ------------------
  |  Branch (1137:25): [True: 0, False: 0]
  ------------------
 1138|      0|                        break;
 1139|      0|                }
 1140|      0|            } else {
 1141|       |                /*
 1142|       |                 * idxn is NULL, that means we're at the end of the list.
 1143|       |                 * Just advance idx to idxn and the loop will break on the next iteration
 1144|       |                 */
 1145|      0|                idx = idxn;
 1146|      0|            }
 1147|      0|        }
 1148|      0|    }
 1149|     68|}
property.c:ossl_method_store_cache_set_atomic:
 1204|     25|{
 1205|     25|    QUERY *p = NULL;
 1206|     25|    int res = 1;
 1207|       |
 1208|     25|    if (method == NULL) {
  ------------------
  |  Branch (1208:9): [True: 0, False: 25]
  ------------------
 1209|      0|        p = ossl_method_store_atomic_find_in_list(sa, nid, prov, prop_query);
 1210|      0|        if (p != NULL)
  ------------------
  |  Branch (1210:13): [True: 0, False: 0]
  ------------------
 1211|      0|            ossl_method_store_atomic_archive(sa, p);
 1212|      0|        goto end;
 1213|      0|    }
 1214|       |
 1215|     25|    p = ossl_method_store_atomic_find_in_list(sa, nid, prov, prop_query);
 1216|     25|    if (p != NULL)
  ------------------
  |  Branch (1216:9): [True: 0, False: 25]
  ------------------
 1217|      0|        ossl_method_store_atomic_archive(sa, p);
 1218|       |
 1219|     25|    p = QUERY_new(strlen(prop_query));
 1220|     25|    if (p != NULL) {
  ------------------
  |  Branch (1220:9): [True: 25, False: 0]
  ------------------
 1221|     25|        TSAN_BENIGN(p, "Unpublished value is safe on subsequent read");
 1222|     25|        p->saptr = sa;
 1223|     25|        p->nid = nid;
 1224|     25|        p->prov = prov;
 1225|     25|        p->archived = 0;
 1226|     25|        strcpy(p->prop_query, prop_query);
 1227|     25|        p->method.method = method;
 1228|     25|        p->method.up_ref = method_up_ref;
 1229|     25|        p->method.free = method_destruct;
 1230|     25|        if (!ossl_method_up_ref(&p->method))
  ------------------
  |  Branch (1230:13): [True: 0, False: 25]
  ------------------
 1231|      0|            goto err;
 1232|       |
 1233|     25|        if (!ossl_method_store_atomic_insert_to_list(sa, p)) {
  ------------------
  |  Branch (1233:13): [True: 0, False: 25]
  ------------------
 1234|      0|            ossl_method_free(&p->method);
 1235|      0|            goto err;
 1236|      0|        }
 1237|       |
 1238|       |        /*
 1239|       |         * We also want to add this method into the cache against a key computed
 1240|       |         * _only_ from nid and property query.  This lets us match in the event
 1241|       |         * someone does a lookup against a NULL provider (i.e. the "any provided
 1242|       |         * alg will do" match).
 1243|       |         *
 1244|       |         * Only insert it if no NULL-provider entry exists yet for this nid and
 1245|       |         * property query.  The first provider to cache this nid owns that
 1246|       |         * entry, which matches the provider ossl_method_store_fetch would pick
 1247|       |         * by implementation order.  Without this check, a later cache_set from
 1248|       |         * a different provider would overwrite it and change which provider an
 1249|       |         * "any provider" lookup resolves to.
 1250|       |         */
 1251|     25|        if (ossl_method_store_atomic_find_in_list(sa, nid, NULL, prop_query) == NULL) {
  ------------------
  |  Branch (1251:13): [True: 25, False: 0]
  ------------------
 1252|     25|            p = QUERY_new(strlen(prop_query));
 1253|     25|            if (p == NULL)
  ------------------
  |  Branch (1253:17): [True: 0, False: 25]
  ------------------
 1254|      0|                goto err;
 1255|     25|            TSAN_BENIGN(p, "Unpublished value is safe on subsequent read");
 1256|     25|            p->saptr = sa;
 1257|     25|            p->nid = nid;
 1258|     25|            p->prov = NULL;
 1259|     25|            p->archived = 0;
 1260|     25|            strcpy(p->prop_query, prop_query);
 1261|     25|            p->method.method = method;
 1262|     25|            p->method.up_ref = method_up_ref;
 1263|     25|            p->method.free = method_destruct;
 1264|     25|            if (!ossl_method_up_ref(&p->method))
  ------------------
  |  Branch (1264:17): [True: 0, False: 25]
  ------------------
 1265|      0|                goto err;
 1266|     25|            if (!ossl_method_store_atomic_insert_to_list(sa, p)) {
  ------------------
  |  Branch (1266:17): [True: 0, False: 25]
  ------------------
 1267|      0|                ossl_method_free(&p->method);
 1268|      0|                goto err;
 1269|      0|            }
 1270|     25|        }
 1271|       |
 1272|     25|        goto end;
 1273|     25|    }
 1274|      0|err:
 1275|      0|    res = 0;
 1276|      0|    QUERY_free(p);
 1277|     25|end:
 1278|     25|    return res;
 1279|      0|}
property.c:QUERY_new:
  130|     50|{
  131|       |    /*
  132|       |     * allocate a new QUERY with the associated property query buffer
  133|       |     * immediately following it
  134|       |     */
  135|     50|    QUERY *new = OPENSSL_malloc(sizeof(QUERY) + prop_query_len + 1);
  ------------------
  |  |  111|     50|    CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  136|     50|    if (new != NULL)
  ------------------
  |  Branch (136:9): [True: 50, False: 0]
  ------------------
  137|     50|        new->prop_query = (char *)(new + 1);
  138|     50|    return new;
  139|     50|}
property.c:ossl_method_store_atomic_insert_to_list:
 1178|     50|{
 1179|     50|    int nid = (new->nid >> NUM_SHARDS_BITS) & (MAX_CACHE_LINES - 1);
  ------------------
  |  |   36|     50|#define NUM_SHARDS_BITS 2
  ------------------
                  int nid = (new->nid >> NUM_SHARDS_BITS) & (MAX_CACHE_LINES - 1);
  ------------------
  |  |   43|     50|#define MAX_CACHE_LINES (1 << MAX_CACHE_LINES_BITS)
  |  |  ------------------
  |  |  |  |   41|     50|#define MAX_CACHE_LINES_BITS 3
  |  |  ------------------
  ------------------
 1180|     50|    QUERY *headptr;
 1181|     50|    int ret = 0;
 1182|     50|    int lock_failed;
 1183|       |
 1184|     50|    if (!CRYPTO_atomic_load_ptr((void **)&sa->cache_lists[nid], (void **)&headptr, sa->alock))
  ------------------
  |  Branch (1184:9): [True: 0, False: 50]
  ------------------
 1185|      0|        goto out;
 1186|     50|try_again:
 1187|     50|    if (!CRYPTO_atomic_store_ptr((void **)&new->next, (void **)&headptr, sa->alock))
  ------------------
  |  Branch (1187:9): [True: 0, False: 50]
  ------------------
 1188|      0|        goto out;
 1189|     50|    if (!CRYPTO_atomic_cmp_exch_ptr((void **)&sa->cache_lists[nid], (void **)&headptr, new, sa->alock,
  ------------------
  |  Branch (1189:9): [True: 0, False: 50]
  ------------------
 1190|     50|            &lock_failed)) {
 1191|      0|        if (lock_failed == 1)
  ------------------
  |  Branch (1191:13): [True: 0, False: 0]
  ------------------
 1192|      0|            goto out;
 1193|      0|        goto try_again;
 1194|      0|    }
 1195|     50|    ret = 1;
 1196|     50|out:
 1197|     50|    return ret;
 1198|     50|}

ossl_err_load_PROP_strings:
   40|      1|{
   41|      1|#ifndef OPENSSL_NO_ERR
   42|      1|    if (ERR_reason_error_string(PROP_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (42:9): [True: 1, False: 0]
  ------------------
   43|      1|        ERR_load_strings_const(PROP_str_reasons);
   44|      1|#endif
   45|      1|    return 1;
   46|      1|}

ossl_parse_property:
  346|      2|{
  347|      2|    OSSL_PROPERTY_DEFINITION *prop = NULL;
  348|      2|    OSSL_PROPERTY_LIST *res = NULL;
  349|      2|    STACK_OF(OSSL_PROPERTY_DEFINITION) *sk;
  ------------------
  |  |   33|      2|#define STACK_OF(type) struct stack_st_##type
  ------------------
  350|      2|    const char *s = defn;
  351|      2|    int done;
  352|       |
  353|      2|    if (s == NULL || (sk = sk_OSSL_PROPERTY_DEFINITION_new(&pd_compare)) == NULL)
  ------------------
  |  Branch (353:9): [True: 0, False: 2]
  |  Branch (353:22): [True: 0, False: 2]
  ------------------
  354|      0|        return NULL;
  355|       |
  356|      2|    s = skip_space(s);
  357|      2|    done = *s == '\0';
  358|      4|    while (!done) {
  ------------------
  |  Branch (358:12): [True: 2, False: 2]
  ------------------
  359|      2|        const char *start = s;
  360|       |
  361|      2|        prop = OPENSSL_malloc(sizeof(*prop));
  ------------------
  |  |  111|      2|    CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  362|      2|        if (prop == NULL)
  ------------------
  |  Branch (362:13): [True: 0, False: 2]
  ------------------
  363|      0|            goto err;
  364|      2|        memset(&prop->v, 0, sizeof(prop->v));
  365|      2|        prop->optional = 0;
  366|      2|        if (!parse_name(ctx, &s, 1, &prop->name_idx))
  ------------------
  |  Branch (366:13): [True: 0, False: 2]
  ------------------
  367|      0|            goto err;
  368|      2|        prop->oper = OSSL_PROPERTY_OPER_EQ;
  369|      2|        if (prop->name_idx == 0) {
  ------------------
  |  Branch (369:13): [True: 0, False: 2]
  ------------------
  370|      0|            ERR_raise_data(ERR_LIB_PROP, PROP_R_PARSE_FAILED,
  ------------------
  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|      0|        ERR_set_error)
  ------------------
                          ERR_raise_data(ERR_LIB_PROP, PROP_R_PARSE_FAILED,
  ------------------
  |  |   99|      0|#define ERR_LIB_PROP 55
  ------------------
                          ERR_raise_data(ERR_LIB_PROP, PROP_R_PARSE_FAILED,
  ------------------
  |  |   35|      0|#define PROP_R_PARSE_FAILED 108
  ------------------
  371|      0|                "Unknown name HERE-->%s", start);
  372|      0|            goto err;
  373|      0|        }
  374|      2|        if (match_ch(&s, '=')) {
  ------------------
  |  Branch (374:13): [True: 2, False: 0]
  ------------------
  375|      2|            if (!parse_value(ctx, &s, prop, 1)) {
  ------------------
  |  Branch (375:17): [True: 0, False: 2]
  ------------------
  376|      0|                ERR_raise_data(ERR_LIB_PROP, PROP_R_NO_VALUE,
  ------------------
  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|      0|        ERR_set_error)
  ------------------
                              ERR_raise_data(ERR_LIB_PROP, PROP_R_NO_VALUE,
  ------------------
  |  |   99|      0|#define ERR_LIB_PROP 55
  ------------------
                              ERR_raise_data(ERR_LIB_PROP, PROP_R_NO_VALUE,
  ------------------
  |  |   34|      0|#define PROP_R_NO_VALUE 107
  ------------------
  377|      0|                    "HERE-->%s", start);
  378|      0|                goto err;
  379|      0|            }
  380|      2|        } else {
  381|       |            /* A name alone means a true Boolean */
  382|      0|            prop->type = OSSL_PROPERTY_TYPE_STRING;
  383|      0|            prop->v.str_val = OSSL_PROPERTY_TRUE;
  ------------------
  |  |   42|      0|#define OSSL_PROPERTY_TRUE 1
  ------------------
  384|      0|        }
  385|       |
  386|      2|        if (!sk_OSSL_PROPERTY_DEFINITION_push(sk, prop))
  ------------------
  |  Branch (386:13): [True: 0, False: 2]
  ------------------
  387|      0|            goto err;
  388|      2|        prop = NULL;
  389|      2|        done = !match_ch(&s, ',');
  390|      2|    }
  391|      2|    if (*s != '\0') {
  ------------------
  |  Branch (391:9): [True: 0, False: 2]
  ------------------
  392|      0|        ERR_raise_data(ERR_LIB_PROP, PROP_R_TRAILING_CHARACTERS,
  ------------------
  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|      0|        ERR_set_error)
  ------------------
                      ERR_raise_data(ERR_LIB_PROP, PROP_R_TRAILING_CHARACTERS,
  ------------------
  |  |   99|      0|#define ERR_LIB_PROP 55
  ------------------
                      ERR_raise_data(ERR_LIB_PROP, PROP_R_TRAILING_CHARACTERS,
  ------------------
  |  |   37|      0|#define PROP_R_TRAILING_CHARACTERS 110
  ------------------
  393|      0|            "HERE-->%s", s);
  394|      0|        goto err;
  395|      0|    }
  396|      2|    res = stack_to_property_list(ctx, sk);
  397|       |
  398|      2|err:
  399|      2|    OPENSSL_free(prop);
  ------------------
  |  |  136|      2|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  400|      2|    sk_OSSL_PROPERTY_DEFINITION_pop_free(sk, &pd_free);
  401|      2|    return res;
  402|      2|}
ossl_parse_query:
  406|    212|{
  407|    212|    STACK_OF(OSSL_PROPERTY_DEFINITION) *sk;
  ------------------
  |  |   33|    212|#define STACK_OF(type) struct stack_st_##type
  ------------------
  408|    212|    OSSL_PROPERTY_LIST *res = NULL;
  409|    212|    OSSL_PROPERTY_DEFINITION *prop = NULL;
  410|    212|    int done;
  411|       |
  412|    212|    if (s == NULL || (sk = sk_OSSL_PROPERTY_DEFINITION_new(&pd_compare)) == NULL)
  ------------------
  |  Branch (412:9): [True: 0, False: 212]
  |  Branch (412:22): [True: 0, False: 212]
  ------------------
  413|      0|        return NULL;
  414|       |
  415|    212|    s = skip_space(s);
  416|    212|    done = *s == '\0';
  417|    212|    while (!done) {
  ------------------
  |  Branch (417:12): [True: 0, False: 212]
  ------------------
  418|      0|        prop = OPENSSL_malloc(sizeof(*prop));
  ------------------
  |  |  111|      0|    CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  419|      0|        if (prop == NULL)
  ------------------
  |  Branch (419:13): [True: 0, False: 0]
  ------------------
  420|      0|            goto err;
  421|      0|        memset(&prop->v, 0, sizeof(prop->v));
  422|       |
  423|      0|        if (match_ch(&s, '-')) {
  ------------------
  |  Branch (423:13): [True: 0, False: 0]
  ------------------
  424|      0|            prop->oper = OSSL_PROPERTY_OVERRIDE;
  425|      0|            prop->optional = 0;
  426|      0|            if (!parse_name(ctx, &s, 1, &prop->name_idx))
  ------------------
  |  Branch (426:17): [True: 0, False: 0]
  ------------------
  427|      0|                goto err;
  428|      0|            goto skip_value;
  429|      0|        }
  430|      0|        prop->optional = match_ch(&s, '?');
  431|      0|        if (!parse_name(ctx, &s, 1, &prop->name_idx))
  ------------------
  |  Branch (431:13): [True: 0, False: 0]
  ------------------
  432|      0|            goto err;
  433|       |
  434|      0|        if (match_ch(&s, '=')) {
  ------------------
  |  Branch (434:13): [True: 0, False: 0]
  ------------------
  435|      0|            prop->oper = OSSL_PROPERTY_OPER_EQ;
  436|      0|        } else if (MATCH(&s, "!=")) {
  ------------------
  |  |   43|      0|#define MATCH(s, m) match(s, m, sizeof(m) - 1)
  |  |  ------------------
  |  |  |  Branch (43:21): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  437|      0|            prop->oper = OSSL_PROPERTY_OPER_NE;
  438|      0|        } else {
  439|       |            /* A name alone is a Boolean comparison for true */
  440|      0|            prop->oper = OSSL_PROPERTY_OPER_EQ;
  441|      0|            prop->type = OSSL_PROPERTY_TYPE_STRING;
  442|      0|            prop->v.str_val = OSSL_PROPERTY_TRUE;
  ------------------
  |  |   42|      0|#define OSSL_PROPERTY_TRUE 1
  ------------------
  443|      0|            goto skip_value;
  444|      0|        }
  445|      0|        if (!parse_value(ctx, &s, prop, create_values))
  ------------------
  |  Branch (445:13): [True: 0, False: 0]
  ------------------
  446|      0|            prop->type = OSSL_PROPERTY_TYPE_VALUE_UNDEFINED;
  447|       |
  448|      0|    skip_value:
  449|      0|        if (!sk_OSSL_PROPERTY_DEFINITION_push(sk, prop))
  ------------------
  |  Branch (449:13): [True: 0, False: 0]
  ------------------
  450|      0|            goto err;
  451|      0|        prop = NULL;
  452|      0|        done = !match_ch(&s, ',');
  453|      0|    }
  454|    212|    if (*s != '\0') {
  ------------------
  |  Branch (454:9): [True: 0, False: 212]
  ------------------
  455|      0|        ERR_raise_data(ERR_LIB_PROP, PROP_R_TRAILING_CHARACTERS,
  ------------------
  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|      0|        ERR_set_error)
  ------------------
                      ERR_raise_data(ERR_LIB_PROP, PROP_R_TRAILING_CHARACTERS,
  ------------------
  |  |   99|      0|#define ERR_LIB_PROP 55
  ------------------
                      ERR_raise_data(ERR_LIB_PROP, PROP_R_TRAILING_CHARACTERS,
  ------------------
  |  |   37|      0|#define PROP_R_TRAILING_CHARACTERS 110
  ------------------
  456|      0|            "HERE-->%s", s);
  457|      0|        goto err;
  458|      0|    }
  459|    212|    res = stack_to_property_list(ctx, sk);
  460|       |
  461|    212|err:
  462|    212|    OPENSSL_free(prop);
  ------------------
  |  |  136|    212|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  463|    212|    sk_OSSL_PROPERTY_DEFINITION_pop_free(sk, &pd_free);
  464|    212|    return res;
  465|    212|}
ossl_property_match_count:
  473|    211|{
  474|    211|    const OSSL_PROPERTY_DEFINITION *const q = query->properties;
  475|    211|    const OSSL_PROPERTY_DEFINITION *const d = defn->properties;
  476|    211|    int i = 0, j = 0, matches = 0;
  477|    211|    OSSL_PROPERTY_OPER oper;
  478|       |
  479|    211|    while (i < query->num_properties) {
  ------------------
  |  Branch (479:12): [True: 0, False: 211]
  ------------------
  480|      0|        if ((oper = q[i].oper) == OSSL_PROPERTY_OVERRIDE) {
  ------------------
  |  Branch (480:13): [True: 0, False: 0]
  ------------------
  481|      0|            i++;
  482|      0|            continue;
  483|      0|        }
  484|      0|        if (j < defn->num_properties) {
  ------------------
  |  Branch (484:13): [True: 0, False: 0]
  ------------------
  485|      0|            if (q[i].name_idx > d[j].name_idx) { /* skip defn, not in query */
  ------------------
  |  Branch (485:17): [True: 0, False: 0]
  ------------------
  486|      0|                j++;
  487|      0|                continue;
  488|      0|            }
  489|      0|            if (q[i].name_idx == d[j].name_idx) { /* both in defn and query */
  ------------------
  |  Branch (489:17): [True: 0, False: 0]
  ------------------
  490|      0|                const int eq = q[i].type == d[j].type
  ------------------
  |  Branch (490:32): [True: 0, False: 0]
  ------------------
  491|      0|                    && memcmp(&q[i].v, &d[j].v, sizeof(q[i].v)) == 0;
  ------------------
  |  Branch (491:24): [True: 0, False: 0]
  ------------------
  492|       |
  493|      0|                if ((eq && oper == OSSL_PROPERTY_OPER_EQ)
  ------------------
  |  Branch (493:22): [True: 0, False: 0]
  |  Branch (493:28): [True: 0, False: 0]
  ------------------
  494|      0|                    || (!eq && oper == OSSL_PROPERTY_OPER_NE))
  ------------------
  |  Branch (494:25): [True: 0, False: 0]
  |  Branch (494:32): [True: 0, False: 0]
  ------------------
  495|      0|                    matches++;
  496|      0|                else if (!q[i].optional)
  ------------------
  |  Branch (496:26): [True: 0, False: 0]
  ------------------
  497|      0|                    return -1;
  498|      0|                i++;
  499|      0|                j++;
  500|      0|                continue;
  501|      0|            }
  502|      0|        }
  503|       |
  504|       |        /*
  505|       |         * Handle the cases of a missing value and a query with no corresponding
  506|       |         * definition.  The former fails for any comparison except inequality,
  507|       |         * the latter is treated as a comparison against the Boolean false.
  508|       |         */
  509|      0|        if (q[i].type == OSSL_PROPERTY_TYPE_VALUE_UNDEFINED) {
  ------------------
  |  Branch (509:13): [True: 0, False: 0]
  ------------------
  510|      0|            if (oper == OSSL_PROPERTY_OPER_NE)
  ------------------
  |  Branch (510:17): [True: 0, False: 0]
  ------------------
  511|      0|                matches++;
  512|      0|            else if (!q[i].optional)
  ------------------
  |  Branch (512:22): [True: 0, False: 0]
  ------------------
  513|      0|                return -1;
  514|      0|        } else if (q[i].type != OSSL_PROPERTY_TYPE_STRING
  ------------------
  |  Branch (514:20): [True: 0, False: 0]
  ------------------
  515|      0|            || (oper == OSSL_PROPERTY_OPER_EQ
  ------------------
  |  Branch (515:17): [True: 0, False: 0]
  ------------------
  516|      0|                && q[i].v.str_val != OSSL_PROPERTY_FALSE)
  ------------------
  |  |   43|      0|#define OSSL_PROPERTY_FALSE 2
  ------------------
  |  Branch (516:20): [True: 0, False: 0]
  ------------------
  517|      0|            || (oper == OSSL_PROPERTY_OPER_NE
  ------------------
  |  Branch (517:17): [True: 0, False: 0]
  ------------------
  518|      0|                && q[i].v.str_val == OSSL_PROPERTY_FALSE)) {
  ------------------
  |  |   43|      0|#define OSSL_PROPERTY_FALSE 2
  ------------------
  |  Branch (518:20): [True: 0, False: 0]
  ------------------
  519|      0|            if (!q[i].optional)
  ------------------
  |  Branch (519:17): [True: 0, False: 0]
  ------------------
  520|      0|                return -1;
  521|      0|        } else {
  522|      0|            matches++;
  523|      0|        }
  524|      0|        i++;
  525|      0|    }
  526|    211|    return matches;
  527|    211|}
ossl_property_free:
  530|    212|{
  531|    212|    OPENSSL_free(p);
  ------------------
  |  |  136|    212|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  532|    212|}
ossl_property_parse_init:
  575|      3|{
  576|      3|    static const char *const predefined_names[] = {
  577|      3|        "provider", /* Name of provider (default, legacy, fips) */
  578|      3|        "version", /* Version number of this provider */
  579|      3|        "fips", /* FIPS validated or FIPS supporting algorithm */
  580|      3|        "output", /* Output type for encoders */
  581|      3|        "input", /* Input type for decoders */
  582|      3|        "structure", /* Structure name for encoders and decoders */
  583|      3|    };
  584|      3|    size_t i;
  585|       |
  586|     21|    for (i = 0; i < OSSL_NELEM(predefined_names); i++)
  ------------------
  |  |   14|     21|#define OSSL_NELEM(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (586:17): [True: 18, False: 3]
  ------------------
  587|     18|        if (ossl_property_name(ctx, predefined_names[i], 1) == 0)
  ------------------
  |  Branch (587:13): [True: 0, False: 18]
  ------------------
  588|      0|            goto err;
  589|       |
  590|       |    /*
  591|       |     * Pre-populate the two Boolean values. We must do them before any other
  592|       |     * values and in this order so that we get the same index as the global
  593|       |     * OSSL_PROPERTY_TRUE and OSSL_PROPERTY_FALSE values
  594|       |     */
  595|      3|    if ((ossl_property_value(ctx, "yes", 1) != OSSL_PROPERTY_TRUE)
  ------------------
  |  |   42|      3|#define OSSL_PROPERTY_TRUE 1
  ------------------
  |  Branch (595:9): [True: 0, False: 3]
  ------------------
  596|      3|        || (ossl_property_value(ctx, "no", 1) != OSSL_PROPERTY_FALSE))
  ------------------
  |  |   43|      3|#define OSSL_PROPERTY_FALSE 2
  ------------------
  |  Branch (596:12): [True: 0, False: 3]
  ------------------
  597|      0|        goto err;
  598|       |
  599|      3|    return 1;
  600|      0|err:
  601|      0|    return 0;
  602|      3|}
ossl_property_list_to_string:
  701|      4|{
  702|      4|    int i;
  703|      4|    const OSSL_PROPERTY_DEFINITION *prop = NULL;
  704|      4|    size_t needed = 0;
  705|      4|    const char *val;
  706|       |
  707|      4|    if (list == NULL) {
  ------------------
  |  Branch (707:9): [True: 2, False: 2]
  ------------------
  708|      2|        if (bufsize > 0)
  ------------------
  |  Branch (708:13): [True: 1, False: 1]
  ------------------
  709|      1|            *buf = '\0';
  710|      2|        return 1;
  711|      2|    }
  712|      2|    if (list->num_properties != 0)
  ------------------
  |  Branch (712:9): [True: 0, False: 2]
  ------------------
  713|      0|        prop = &list->properties[list->num_properties - 1];
  714|      2|    for (i = 0; i < list->num_properties; i++, prop--) {
  ------------------
  |  Branch (714:17): [True: 0, False: 2]
  ------------------
  715|       |        /* Skip invalid names */
  716|      0|        if (prop->name_idx == 0)
  ------------------
  |  Branch (716:13): [True: 0, False: 0]
  ------------------
  717|      0|            continue;
  718|       |
  719|      0|        if (needed > 0)
  ------------------
  |  Branch (719:13): [True: 0, False: 0]
  ------------------
  720|      0|            put_char(',', &buf, &bufsize, &needed);
  721|       |
  722|      0|        if (prop->optional)
  ------------------
  |  Branch (722:13): [True: 0, False: 0]
  ------------------
  723|      0|            put_char('?', &buf, &bufsize, &needed);
  724|      0|        else if (prop->oper == OSSL_PROPERTY_OVERRIDE)
  ------------------
  |  Branch (724:18): [True: 0, False: 0]
  ------------------
  725|      0|            put_char('-', &buf, &bufsize, &needed);
  726|       |
  727|      0|        val = ossl_property_name_str(ctx, prop->name_idx);
  728|      0|        if (val == NULL)
  ------------------
  |  Branch (728:13): [True: 0, False: 0]
  ------------------
  729|      0|            return 0;
  730|      0|        put_str(val, &buf, &bufsize, &needed);
  731|       |
  732|      0|        switch (prop->oper) {
  733|      0|        case OSSL_PROPERTY_OPER_NE:
  ------------------
  |  Branch (733:9): [True: 0, False: 0]
  ------------------
  734|      0|            put_char('!', &buf, &bufsize, &needed);
  735|       |            /* fall through */
  736|      0|        case OSSL_PROPERTY_OPER_EQ:
  ------------------
  |  Branch (736:9): [True: 0, False: 0]
  ------------------
  737|      0|            put_char('=', &buf, &bufsize, &needed);
  738|       |            /* put value */
  739|      0|            switch (prop->type) {
  740|      0|            case OSSL_PROPERTY_TYPE_STRING:
  ------------------
  |  Branch (740:13): [True: 0, False: 0]
  ------------------
  741|      0|                val = ossl_property_value_str(ctx, prop->v.str_val);
  742|      0|                if (val == NULL)
  ------------------
  |  Branch (742:21): [True: 0, False: 0]
  ------------------
  743|      0|                    return 0;
  744|      0|                put_str(val, &buf, &bufsize, &needed);
  745|      0|                break;
  746|       |
  747|      0|            case OSSL_PROPERTY_TYPE_NUMBER:
  ------------------
  |  Branch (747:13): [True: 0, False: 0]
  ------------------
  748|      0|                put_num(prop->v.int_val, &buf, &bufsize, &needed);
  749|      0|                break;
  750|       |
  751|      0|            default:
  ------------------
  |  Branch (751:13): [True: 0, False: 0]
  ------------------
  752|      0|                return 0;
  753|      0|            }
  754|      0|            break;
  755|      0|        default:
  ------------------
  |  Branch (755:9): [True: 0, False: 0]
  ------------------
  756|       |            /* do nothing */
  757|      0|            break;
  758|      0|        }
  759|      0|    }
  760|       |
  761|      2|    put_char('\0', &buf, &bufsize, &needed);
  762|      2|    return needed;
  763|      2|}
property_parse.c:skip_space:
   26|    220|{
   27|    220|    while (ossl_isspace(*s))
  ------------------
  |  |   82|    220|#define ossl_isspace(c) (ossl_ctype_check((c), CTYPE_MASK_space))
  |  |  ------------------
  |  |  |  |   30|    220|#define CTYPE_MASK_space 0x8
  |  |  ------------------
  |  |  |  Branch (82:25): [True: 0, False: 220]
  |  |  ------------------
  ------------------
   28|      0|        s++;
   29|    220|    return s;
   30|    220|}
property_parse.c:parse_name:
   58|      2|{
   59|      2|    char name[100];
   60|      2|    int err = 0;
   61|      2|    size_t i = 0;
   62|      2|    const char *s = *t;
   63|      2|    int user_name = 0;
   64|       |
   65|      2|    for (;;) {
   66|      2|        if (!ossl_isalpha(*s)) {
  ------------------
  |  |   71|      2|#define ossl_isalpha(c) (ossl_ctype_check((c), CTYPE_MASK_alpha))
  |  |  ------------------
  |  |  |  |   40|      2|#define CTYPE_MASK_alpha (CTYPE_MASK_lower | CTYPE_MASK_upper)
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      2|#define CTYPE_MASK_lower 0x1
  |  |  |  |  ------------------
  |  |  |  |               #define CTYPE_MASK_alpha (CTYPE_MASK_lower | CTYPE_MASK_upper)
  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      2|#define CTYPE_MASK_upper 0x2
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (66:13): [True: 0, False: 2]
  ------------------
   67|      0|            ERR_raise_data(ERR_LIB_PROP, PROP_R_NOT_AN_IDENTIFIER,
  ------------------
  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|      0|        ERR_set_error)
  ------------------
                          ERR_raise_data(ERR_LIB_PROP, PROP_R_NOT_AN_IDENTIFIER,
  ------------------
  |  |   99|      0|#define ERR_LIB_PROP 55
  ------------------
                          ERR_raise_data(ERR_LIB_PROP, PROP_R_NOT_AN_IDENTIFIER,
  ------------------
  |  |   30|      0|#define PROP_R_NOT_AN_IDENTIFIER 103
  ------------------
   68|      0|                "HERE-->%s", *t);
   69|      0|            return 0;
   70|      0|        }
   71|     16|        do {
   72|     16|            if (i < sizeof(name) - 1)
  ------------------
  |  Branch (72:17): [True: 16, False: 0]
  ------------------
   73|     16|                name[i++] = ossl_tolower(*s);
   74|      0|            else
   75|      0|                err = 1;
   76|     16|        } while (*++s == '_' || ossl_isalnum(*s));
  ------------------
  |  |   70|     16|#define ossl_isalnum(c) (ossl_ctype_check((c), CTYPE_MASK_alnum))
  |  |  ------------------
  |  |  |  |   41|     16|#define CTYPE_MASK_alnum (CTYPE_MASK_alpha | CTYPE_MASK_digit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|     16|#define CTYPE_MASK_alpha (CTYPE_MASK_lower | CTYPE_MASK_upper)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   27|     16|#define CTYPE_MASK_lower 0x1
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define CTYPE_MASK_alpha (CTYPE_MASK_lower | CTYPE_MASK_upper)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|     16|#define CTYPE_MASK_upper 0x2
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define CTYPE_MASK_alnum (CTYPE_MASK_alpha | CTYPE_MASK_digit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|     16|#define CTYPE_MASK_digit 0x4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (70:25): [True: 14, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (76:18): [True: 0, False: 16]
  ------------------
   77|      2|        if (*s != '.')
  ------------------
  |  Branch (77:13): [True: 2, False: 0]
  ------------------
   78|      2|            break;
   79|      0|        user_name = 1;
   80|      0|        if (i < sizeof(name) - 1)
  ------------------
  |  Branch (80:13): [True: 0, False: 0]
  ------------------
   81|      0|            name[i++] = *s;
   82|      0|        else
   83|      0|            err = 1;
   84|      0|        s++;
   85|      0|    }
   86|      2|    name[i] = '\0';
   87|      2|    if (err) {
  ------------------
  |  Branch (87:9): [True: 0, False: 2]
  ------------------
   88|      0|        ERR_raise_data(ERR_LIB_PROP, PROP_R_NAME_TOO_LONG, "HERE-->%s", *t);
  ------------------
  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|      0|        ERR_set_error)
  ------------------
                      ERR_raise_data(ERR_LIB_PROP, PROP_R_NAME_TOO_LONG, "HERE-->%s", *t);
  ------------------
  |  |   99|      0|#define ERR_LIB_PROP 55
  ------------------
                      ERR_raise_data(ERR_LIB_PROP, PROP_R_NAME_TOO_LONG, "HERE-->%s", *t);
  ------------------
  |  |   27|      0|#define PROP_R_NAME_TOO_LONG 100
  ------------------
   89|      0|        return 0;
   90|      0|    }
   91|      2|    *t = skip_space(s);
   92|      2|    *idx = ossl_property_name(ctx, name, user_name && create);
  ------------------
  |  Branch (92:42): [True: 0, False: 2]
  |  Branch (92:55): [True: 0, False: 0]
  ------------------
   93|      2|    return 1;
   94|      2|}
property_parse.c:match_ch:
   33|      4|{
   34|      4|    const char *s = *t;
   35|       |
   36|      4|    if (*s == m) {
  ------------------
  |  Branch (36:9): [True: 2, False: 2]
  ------------------
   37|      2|        *t = skip_space(s + 1);
   38|      2|        return 1;
   39|      2|    }
   40|      2|    return 0;
   41|      4|}
property_parse.c:parse_value:
  258|      2|{
  259|      2|    const char *s = *t;
  260|      2|    int r = 0;
  261|       |
  262|      2|    if (*s == '"' || *s == '\'') {
  ------------------
  |  Branch (262:9): [True: 0, False: 2]
  |  Branch (262:22): [True: 0, False: 2]
  ------------------
  263|      0|        s++;
  264|      0|        r = parse_string(ctx, &s, s[-1], res, create);
  265|      2|    } else if (*s == '+') {
  ------------------
  |  Branch (265:16): [True: 0, False: 2]
  ------------------
  266|      0|        s++;
  267|      0|        r = parse_number(&s, res);
  268|      2|    } else if (*s == '-') {
  ------------------
  |  Branch (268:16): [True: 0, False: 2]
  ------------------
  269|      0|        s++;
  270|      0|        r = parse_number(&s, res);
  271|      0|        res->v.int_val = -res->v.int_val;
  272|      2|    } else if (*s == '0' && s[1] == 'x') {
  ------------------
  |  Branch (272:16): [True: 0, False: 2]
  |  Branch (272:29): [True: 0, False: 0]
  ------------------
  273|      0|        s += 2;
  274|      0|        r = parse_hex(&s, res);
  275|      2|    } else if (*s == '0' && ossl_isdigit(s[1])) {
  ------------------
  |  Branch (275:16): [True: 0, False: 2]
  |  Branch (275:29): [True: 0, False: 0]
  ------------------
  276|      0|        s++;
  277|      0|        r = parse_oct(&s, res);
  278|      2|    } else if (ossl_isdigit(*s)) {
  ------------------
  |  Branch (278:16): [True: 0, False: 2]
  ------------------
  279|      0|        return parse_number(t, res);
  280|      2|    } else if (ossl_isalpha(*s))
  ------------------
  |  |   71|      2|#define ossl_isalpha(c) (ossl_ctype_check((c), CTYPE_MASK_alpha))
  |  |  ------------------
  |  |  |  |   40|      2|#define CTYPE_MASK_alpha (CTYPE_MASK_lower | CTYPE_MASK_upper)
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      2|#define CTYPE_MASK_lower 0x1
  |  |  |  |  ------------------
  |  |  |  |               #define CTYPE_MASK_alpha (CTYPE_MASK_lower | CTYPE_MASK_upper)
  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      2|#define CTYPE_MASK_upper 0x2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (71:25): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  281|      2|        return parse_unquoted(ctx, t, res, create);
  282|      0|    if (r)
  ------------------
  |  Branch (282:9): [True: 0, False: 0]
  ------------------
  283|      0|        *t = s;
  284|      0|    return r;
  285|      2|}
property_parse.c:parse_unquoted:
  226|      2|{
  227|      2|    char v[1000];
  228|      2|    const char *s = *t;
  229|      2|    size_t i = 0;
  230|      2|    int err = 0;
  231|       |
  232|      2|    if (*s == '\0' || *s == ',')
  ------------------
  |  Branch (232:9): [True: 0, False: 2]
  |  Branch (232:23): [True: 0, False: 2]
  ------------------
  233|      0|        return 0;
  234|     15|    while (ossl_isprint(*s) && !ossl_isspace(*s) && *s != ',') {
  ------------------
  |  |   80|     30|#define ossl_isprint(c) (ossl_ctype_check((c), CTYPE_MASK_print))
  |  |  ------------------
  |  |  |  |   35|     15|#define CTYPE_MASK_print 0x100
  |  |  ------------------
  |  |  |  Branch (80:25): [True: 13, False: 2]
  |  |  ------------------
  ------------------
                  while (ossl_isprint(*s) && !ossl_isspace(*s) && *s != ',') {
  ------------------
  |  |   82|     28|#define ossl_isspace(c) (ossl_ctype_check((c), CTYPE_MASK_space))
  |  |  ------------------
  |  |  |  |   30|     13|#define CTYPE_MASK_space 0x8
  |  |  ------------------
  ------------------
  |  Branch (234:32): [True: 13, False: 0]
  |  Branch (234:53): [True: 13, False: 0]
  ------------------
  235|     13|        if (i < sizeof(v) - 1)
  ------------------
  |  Branch (235:13): [True: 13, False: 0]
  ------------------
  236|     13|            v[i++] = ossl_tolower(*s);
  237|      0|        else
  238|      0|            err = 1;
  239|     13|        s++;
  240|     13|    }
  241|      2|    if (!ossl_isspace(*s) && *s != '\0' && *s != ',') {
  ------------------
  |  |   82|      4|#define ossl_isspace(c) (ossl_ctype_check((c), CTYPE_MASK_space))
  |  |  ------------------
  |  |  |  |   30|      2|#define CTYPE_MASK_space 0x8
  |  |  ------------------
  ------------------
  |  Branch (241:9): [True: 2, False: 0]
  |  Branch (241:30): [True: 0, False: 2]
  |  Branch (241:44): [True: 0, False: 0]
  ------------------
  242|      0|        ERR_raise_data(ERR_LIB_PROP, PROP_R_NOT_AN_ASCII_CHARACTER,
  ------------------
  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|      0|        ERR_set_error)
  ------------------
                      ERR_raise_data(ERR_LIB_PROP, PROP_R_NOT_AN_ASCII_CHARACTER,
  ------------------
  |  |   99|      0|#define ERR_LIB_PROP 55
  ------------------
                      ERR_raise_data(ERR_LIB_PROP, PROP_R_NOT_AN_ASCII_CHARACTER,
  ------------------
  |  |   28|      0|#define PROP_R_NOT_AN_ASCII_CHARACTER 101
  ------------------
  243|      0|            "HERE-->%s", s);
  244|      0|        return 0;
  245|      0|    }
  246|      2|    v[i] = 0;
  247|      2|    if (err)
  ------------------
  |  Branch (247:9): [True: 0, False: 2]
  ------------------
  248|      0|        ERR_raise_data(ERR_LIB_PROP, PROP_R_STRING_TOO_LONG, "HERE-->%s", *t);
  ------------------
  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|      0|        ERR_set_error)
  ------------------
                      ERR_raise_data(ERR_LIB_PROP, PROP_R_STRING_TOO_LONG, "HERE-->%s", *t);
  ------------------
  |  |   99|      0|#define ERR_LIB_PROP 55
  ------------------
                      ERR_raise_data(ERR_LIB_PROP, PROP_R_STRING_TOO_LONG, "HERE-->%s", *t);
  ------------------
  |  |   36|      0|#define PROP_R_STRING_TOO_LONG 109
  ------------------
  249|      2|    else if ((res->v.str_val = ossl_property_value(ctx, v, create)) == 0)
  ------------------
  |  Branch (249:14): [True: 0, False: 2]
  ------------------
  250|      0|        err = 1;
  251|      2|    *t = skip_space(s);
  252|      2|    res->type = OSSL_PROPERTY_TYPE_STRING;
  253|      2|    return !err;
  254|      2|}
property_parse.c:stack_to_property_list:
  314|    214|{
  315|    214|    const int n = sk_OSSL_PROPERTY_DEFINITION_num(sk);
  316|    214|    OSSL_PROPERTY_LIST *r;
  317|    214|    OSSL_PROPERTY_IDX prev_name_idx = 0;
  318|    214|    int i;
  319|       |
  320|    214|    r = OPENSSL_malloc(sizeof(*r)
  ------------------
  |  |  111|    428|    CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |  |  Branch (111:19): [True: 212, False: 2]
  |  |  ------------------
  ------------------
  321|    214|        + (n <= 0 ? 0 : n - 1) * sizeof(r->properties[0]));
  322|    214|    if (r != NULL) {
  ------------------
  |  Branch (322:9): [True: 214, False: 0]
  ------------------
  323|    214|        sk_OSSL_PROPERTY_DEFINITION_sort(sk);
  324|       |
  325|    214|        r->has_optional = 0;
  326|    216|        for (i = 0; i < n; i++) {
  ------------------
  |  Branch (326:21): [True: 2, False: 214]
  ------------------
  327|      2|            r->properties[i] = *sk_OSSL_PROPERTY_DEFINITION_value(sk, i);
  328|      2|            r->has_optional |= r->properties[i].optional;
  329|       |
  330|       |            /* Check for duplicated names */
  331|      2|            if (i > 0 && r->properties[i].name_idx == prev_name_idx) {
  ------------------
  |  Branch (331:17): [True: 0, False: 2]
  |  Branch (331:26): [True: 0, False: 0]
  ------------------
  332|      0|                OPENSSL_free(r);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  333|      0|                ERR_raise_data(ERR_LIB_PROP, PROP_R_PARSE_FAILED,
  ------------------
  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|      0|        ERR_set_error)
  ------------------
                              ERR_raise_data(ERR_LIB_PROP, PROP_R_PARSE_FAILED,
  ------------------
  |  |   99|      0|#define ERR_LIB_PROP 55
  ------------------
                              ERR_raise_data(ERR_LIB_PROP, PROP_R_PARSE_FAILED,
  ------------------
  |  |   35|      0|#define PROP_R_PARSE_FAILED 108
  ------------------
  334|      0|                    "Duplicated name `%s'",
  335|      0|                    ossl_property_name_str(ctx, prev_name_idx));
  336|      0|                return NULL;
  337|      0|            }
  338|      2|            prev_name_idx = r->properties[i].name_idx;
  339|      2|        }
  340|    214|        r->num_properties = n;
  341|    214|    }
  342|    214|    return r;
  343|    214|}
property_parse.c:pd_free:
  301|      2|{
  302|      2|    OPENSSL_free(pd);
  ------------------
  |  |  136|      2|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  303|      2|}
property_parse.c:put_char:
  605|      2|{
  606|      2|    if (*remain == 0) {
  ------------------
  |  Branch (606:9): [True: 1, False: 1]
  ------------------
  607|      1|        ++*needed;
  608|      1|        return;
  609|      1|    }
  610|      1|    if (*remain == 1)
  ------------------
  |  Branch (610:9): [True: 1, False: 0]
  ------------------
  611|      1|        **buf = '\0';
  612|      0|    else
  613|      0|        **buf = ch;
  614|      1|    ++*buf;
  615|      1|    ++*needed;
  616|      1|    --*remain;
  617|      1|}

ossl_property_has_optional:
   62|    211|{
   63|    211|    return query->has_optional ? 1 : 0;
  ------------------
  |  Branch (63:12): [True: 0, False: 211]
  ------------------
   64|    211|}

ossl_property_string_data_new:
   97|      3|{
   98|      3|    PROPERTY_STRING_DATA *propdata = OPENSSL_zalloc(sizeof(*propdata));
  ------------------
  |  |  113|      3|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   99|       |
  100|      3|    if (propdata == NULL)
  ------------------
  |  Branch (100:9): [True: 0, False: 3]
  ------------------
  101|      0|        return NULL;
  102|       |
  103|      3|    propdata->lock = CRYPTO_THREAD_lock_new();
  104|      3|    propdata->prop_names = lh_PROPERTY_STRING_new(&property_hash,
  105|      3|        &property_cmp);
  106|      3|    propdata->prop_values = lh_PROPERTY_STRING_new(&property_hash,
  107|      3|        &property_cmp);
  108|      3|#ifndef OPENSSL_SMALL_FOOTPRINT
  109|      3|    propdata->prop_namelist = sk_OPENSSL_CSTRING_new_null();
  ------------------
  |  |  356|      3|    ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_set_thunks( \
  |  |  357|      3|        OPENSSL_sk_set_copy_thunks( \
  |  |  358|      3|            OPENSSL_sk_set_cmp_thunks( \
  |  |  359|      3|                OPENSSL_sk_new_null(), \
  |  |  360|      3|                sk_OPENSSL_CSTRING_cmpfunc_thunk), \
  |  |  361|      3|            sk_OPENSSL_CSTRING_copyfunc_thunk), \
  |  |  362|      3|        sk_OPENSSL_CSTRING_freefunc_thunk))
  ------------------
  110|      3|    propdata->prop_valuelist = sk_OPENSSL_CSTRING_new_null();
  ------------------
  |  |  356|      3|    ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_set_thunks( \
  |  |  357|      3|        OPENSSL_sk_set_copy_thunks( \
  |  |  358|      3|            OPENSSL_sk_set_cmp_thunks( \
  |  |  359|      3|                OPENSSL_sk_new_null(), \
  |  |  360|      3|                sk_OPENSSL_CSTRING_cmpfunc_thunk), \
  |  |  361|      3|            sk_OPENSSL_CSTRING_copyfunc_thunk), \
  |  |  362|      3|        sk_OPENSSL_CSTRING_freefunc_thunk))
  ------------------
  111|      3|#endif
  112|      3|    if (propdata->lock == NULL
  ------------------
  |  Branch (112:9): [True: 0, False: 3]
  ------------------
  113|      3|#ifndef OPENSSL_SMALL_FOOTPRINT
  114|      3|        || propdata->prop_namelist == NULL
  ------------------
  |  Branch (114:12): [True: 0, False: 3]
  ------------------
  115|      3|        || propdata->prop_valuelist == NULL
  ------------------
  |  Branch (115:12): [True: 0, False: 3]
  ------------------
  116|      3|#endif
  117|      3|        || propdata->prop_names == NULL
  ------------------
  |  Branch (117:12): [True: 0, False: 3]
  ------------------
  118|      3|        || propdata->prop_values == NULL) {
  ------------------
  |  Branch (118:12): [True: 0, False: 3]
  ------------------
  119|      0|        ossl_property_string_data_free(propdata);
  120|      0|        return NULL;
  121|      0|    }
  122|      3|    return propdata;
  123|      3|}
ossl_property_name:
  255|     20|{
  256|     20|    return ossl_property_string(ctx, 1, create, s);
  257|     20|}
ossl_property_value:
  266|      8|{
  267|      8|    return ossl_property_string(ctx, 0, create, s);
  268|      8|}
property_string.c:property_hash:
   51|     80|{
   52|     80|    return OPENSSL_LH_strhash(a->s);
   53|     80|}
property_string.c:property_cmp:
   56|      2|{
   57|      2|    return strcmp(a->s, b->s);
   58|      2|}
property_string.c:ossl_property_string:
  145|     28|{
  146|     28|    PROPERTY_STRING p, *ps, *ps_new;
  147|     28|    PROP_TABLE *t;
  148|     28|    OSSL_PROPERTY_IDX *pidx;
  149|     28|    PROPERTY_STRING_DATA *propdata
  150|     28|        = ossl_lib_ctx_get_data(ctx, OSSL_LIB_CTX_PROPERTY_STRING_INDEX);
  ------------------
  |  |   98|     28|#define OSSL_LIB_CTX_PROPERTY_STRING_INDEX 3
  ------------------
  151|       |
  152|     28|    if (propdata == NULL)
  ------------------
  |  Branch (152:9): [True: 0, False: 28]
  ------------------
  153|      0|        return 0;
  154|       |
  155|     28|    t = name ? propdata->prop_names : propdata->prop_values;
  ------------------
  |  Branch (155:9): [True: 20, False: 8]
  ------------------
  156|     28|    p.s = s;
  157|     28|    if (!CRYPTO_THREAD_read_lock(propdata->lock)) {
  ------------------
  |  Branch (157:9): [True: 0, False: 28]
  ------------------
  158|      0|        ERR_raise(ERR_LIB_CRYPTO, ERR_R_UNABLE_TO_GET_READ_LOCK);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  159|      0|        return 0;
  160|      0|    }
  161|     28|    ps = lh_PROPERTY_STRING_retrieve(t, &p);
  162|     28|    if (ps == NULL && create) {
  ------------------
  |  Branch (162:9): [True: 26, False: 2]
  |  Branch (162:23): [True: 26, False: 0]
  ------------------
  163|     26|        CRYPTO_THREAD_unlock(propdata->lock);
  164|     26|        if (!CRYPTO_THREAD_write_lock(propdata->lock)) {
  ------------------
  |  Branch (164:13): [True: 0, False: 26]
  ------------------
  165|      0|            ERR_raise(ERR_LIB_CRYPTO, ERR_R_UNABLE_TO_GET_WRITE_LOCK);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  166|      0|            return 0;
  167|      0|        }
  168|     26|        pidx = name ? &propdata->prop_name_idx : &propdata->prop_value_idx;
  ------------------
  |  Branch (168:16): [True: 18, False: 8]
  ------------------
  169|     26|        ps = lh_PROPERTY_STRING_retrieve(t, &p);
  170|     26|        if (ps == NULL && (ps_new = new_property_string(s, pidx)) != NULL) {
  ------------------
  |  Branch (170:13): [True: 26, False: 0]
  |  Branch (170:27): [True: 26, False: 0]
  ------------------
  171|     26|#ifndef OPENSSL_SMALL_FOOTPRINT
  172|     26|            STACK_OF(OPENSSL_CSTRING) *slist;
  ------------------
  |  |   33|     26|#define STACK_OF(type) struct stack_st_##type
  ------------------
  173|       |
  174|     26|            slist = name ? propdata->prop_namelist : propdata->prop_valuelist;
  ------------------
  |  Branch (174:21): [True: 18, False: 8]
  ------------------
  175|     26|            if (sk_OPENSSL_CSTRING_push(slist, ps_new->s) <= 0) {
  ------------------
  |  |  376|     26|#define sk_OPENSSL_CSTRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr))
  ------------------
  |  Branch (175:17): [True: 0, False: 26]
  ------------------
  176|      0|                property_free(ps_new);
  177|      0|                CRYPTO_THREAD_unlock(propdata->lock);
  178|      0|                return 0;
  179|      0|            }
  180|     26|#endif
  181|     26|            lh_PROPERTY_STRING_insert(t, ps_new);
  182|     26|            if (lh_PROPERTY_STRING_error(t)) {
  ------------------
  |  Branch (182:17): [True: 0, False: 26]
  ------------------
  183|       |                /*-
  184|       |                 * Undo the previous push which means also decrementing the
  185|       |                 * index and freeing the allocated storage.
  186|       |                 */
  187|      0|#ifndef OPENSSL_SMALL_FOOTPRINT
  188|      0|                sk_OPENSSL_CSTRING_pop(slist);
  ------------------
  |  |  378|      0|#define sk_OPENSSL_CSTRING_pop(sk) ((const char *)OPENSSL_sk_pop(ossl_check_OPENSSL_CSTRING_sk_type(sk)))
  ------------------
  189|      0|#endif
  190|      0|                property_free(ps_new);
  191|      0|                --*pidx;
  192|      0|                CRYPTO_THREAD_unlock(propdata->lock);
  193|      0|                return 0;
  194|      0|            }
  195|     26|            ps = ps_new;
  196|     26|        }
  197|     26|    }
  198|     28|    CRYPTO_THREAD_unlock(propdata->lock);
  199|     28|    return ps != NULL ? ps->idx : 0;
  ------------------
  |  Branch (199:12): [True: 28, False: 0]
  ------------------
  200|     28|}
property_string.c:new_property_string:
  127|     26|{
  128|     26|    const size_t l = strlen(s);
  129|     26|    PROPERTY_STRING *ps = OPENSSL_malloc(sizeof(*ps) + l);
  ------------------
  |  |  111|     26|    CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  130|       |
  131|     26|    if (ps != NULL) {
  ------------------
  |  Branch (131:9): [True: 26, False: 0]
  ------------------
  132|     26|        memcpy(ps->body, s, l + 1);
  133|     26|        ps->s = ps->body;
  134|     26|        ps->idx = ++*pidx;
  135|     26|        if (ps->idx == 0) {
  ------------------
  |  Branch (135:13): [True: 0, False: 26]
  ------------------
  136|      0|            OPENSSL_free(ps);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  137|      0|            return NULL;
  138|      0|        }
  139|     26|    }
  140|     26|    return ps;
  141|     26|}

OSSL_PROVIDER_try_load_ex:
   20|      2|{
   21|      2|    OSSL_PROVIDER *prov = NULL, *actual;
   22|      2|    int isnew = 0;
   23|       |
   24|       |    /* Find it or create it */
   25|      2|    if ((prov = ossl_provider_find(libctx, name, 0)) == NULL) {
  ------------------
  |  Branch (25:9): [True: 2, False: 0]
  ------------------
   26|      2|        if ((prov = ossl_provider_new(libctx, name, NULL, params, 0)) == NULL)
  ------------------
  |  Branch (26:13): [True: 0, False: 2]
  ------------------
   27|      0|            return NULL;
   28|      2|        isnew = 1;
   29|      2|    }
   30|       |
   31|      2|    if (!ossl_provider_activate(prov, 1, 0)) {
  ------------------
  |  Branch (31:9): [True: 0, False: 2]
  ------------------
   32|      0|        ossl_provider_free(prov);
   33|      0|        return NULL;
   34|      0|    }
   35|       |
   36|      2|    actual = prov;
   37|      2|    if (isnew && !ossl_provider_add_to_store(prov, &actual, retain_fallbacks)) {
  ------------------
  |  Branch (37:9): [True: 2, False: 0]
  |  Branch (37:18): [True: 0, False: 2]
  ------------------
   38|      0|        ossl_provider_deactivate(prov, 1);
   39|      0|        ossl_provider_free(prov);
   40|      0|        return NULL;
   41|      0|    }
   42|      2|    if (actual != prov) {
  ------------------
  |  Branch (42:9): [True: 0, False: 2]
  ------------------
   43|      0|        if (!ossl_provider_activate(actual, 1, 0)) {
  ------------------
  |  Branch (43:13): [True: 0, False: 0]
  ------------------
   44|      0|            ossl_provider_free(actual);
   45|      0|            return NULL;
   46|      0|        }
   47|      0|    }
   48|       |
   49|      2|    return actual;
   50|      2|}
OSSL_PROVIDER_try_load:
   54|      2|{
   55|       |    return OSSL_PROVIDER_try_load_ex(libctx, name, NULL, retain_fallbacks);
   56|      2|}
OSSL_PROVIDER_get0_provider_ctx:
  104|      2|{
  105|      2|    return ossl_provider_ctx(prov);
  106|      2|}
OSSL_PROVIDER_get0_dispatch:
  109|      2|{
  110|      2|    return ossl_provider_get0_dispatch(prov);
  111|      2|}
OSSL_PROVIDER_get0_name:
  148|      2|{
  149|      2|    return ossl_provider_name(prov);
  150|      2|}

ossl_child_prov_ctx_new:
   38|      3|{
   39|      3|    return OPENSSL_zalloc(sizeof(struct child_prov_globals));
  ------------------
  |  |  113|      3|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   40|      3|}
ossl_provider_init_as_child:
  195|      1|{
  196|      1|    struct child_prov_globals *gbl;
  197|       |
  198|      1|    if (ctx == NULL)
  ------------------
  |  Branch (198:9): [True: 0, False: 1]
  ------------------
  199|      0|        return 0;
  200|       |
  201|      1|    gbl = ossl_lib_ctx_get_data(ctx, OSSL_LIB_CTX_CHILD_PROVIDER_INDEX);
  ------------------
  |  |  115|      1|#define OSSL_LIB_CTX_CHILD_PROVIDER_INDEX 18
  ------------------
  202|      1|    if (gbl == NULL)
  ------------------
  |  Branch (202:9): [True: 0, False: 1]
  ------------------
  203|      0|        return 0;
  204|       |
  205|      1|    gbl->handle = handle;
  206|     54|    for (; in->function_id != 0; in++) {
  ------------------
  |  Branch (206:12): [True: 53, False: 1]
  ------------------
  207|     53|        switch (in->function_id) {
  208|      1|        case OSSL_FUNC_CORE_GET_LIBCTX:
  ------------------
  |  |   79|      1|#define OSSL_FUNC_CORE_GET_LIBCTX 4
  ------------------
  |  Branch (208:9): [True: 1, False: 52]
  ------------------
  209|      1|            gbl->c_get_libctx = OSSL_FUNC_core_get_libctx(in);
  210|      1|            break;
  211|      1|        case OSSL_FUNC_PROVIDER_REGISTER_CHILD_CB:
  ------------------
  |  |  202|      1|#define OSSL_FUNC_PROVIDER_REGISTER_CHILD_CB 105
  ------------------
  |  Branch (211:9): [True: 1, False: 52]
  ------------------
  212|      1|            gbl->c_provider_register_child_cb
  213|      1|                = OSSL_FUNC_provider_register_child_cb(in);
  214|      1|            break;
  215|      1|        case OSSL_FUNC_PROVIDER_DEREGISTER_CHILD_CB:
  ------------------
  |  |  203|      1|#define OSSL_FUNC_PROVIDER_DEREGISTER_CHILD_CB 106
  ------------------
  |  Branch (215:9): [True: 1, False: 52]
  ------------------
  216|      1|            gbl->c_provider_deregister_child_cb
  217|      1|                = OSSL_FUNC_provider_deregister_child_cb(in);
  218|      1|            break;
  219|      1|        case OSSL_FUNC_PROVIDER_NAME:
  ------------------
  |  |  204|      1|#define OSSL_FUNC_PROVIDER_NAME 107
  ------------------
  |  Branch (219:9): [True: 1, False: 52]
  ------------------
  220|      1|            gbl->c_prov_name = OSSL_FUNC_provider_name(in);
  221|      1|            break;
  222|      1|        case OSSL_FUNC_PROVIDER_GET0_PROVIDER_CTX:
  ------------------
  |  |  205|      1|#define OSSL_FUNC_PROVIDER_GET0_PROVIDER_CTX 108
  ------------------
  |  Branch (222:9): [True: 1, False: 52]
  ------------------
  223|      1|            gbl->c_prov_get0_provider_ctx
  224|      1|                = OSSL_FUNC_provider_get0_provider_ctx(in);
  225|      1|            break;
  226|      1|        case OSSL_FUNC_PROVIDER_GET0_DISPATCH:
  ------------------
  |  |  206|      1|#define OSSL_FUNC_PROVIDER_GET0_DISPATCH 109
  ------------------
  |  Branch (226:9): [True: 1, False: 52]
  ------------------
  227|      1|            gbl->c_prov_get0_dispatch = OSSL_FUNC_provider_get0_dispatch(in);
  228|      1|            break;
  229|      1|        case OSSL_FUNC_PROVIDER_UP_REF:
  ------------------
  |  |  207|      1|#define OSSL_FUNC_PROVIDER_UP_REF 110
  ------------------
  |  Branch (229:9): [True: 1, False: 52]
  ------------------
  230|      1|            gbl->c_prov_up_ref
  231|      1|                = OSSL_FUNC_provider_up_ref(in);
  232|      1|            break;
  233|      1|        case OSSL_FUNC_PROVIDER_FREE:
  ------------------
  |  |  208|      1|#define OSSL_FUNC_PROVIDER_FREE 111
  ------------------
  |  Branch (233:9): [True: 1, False: 52]
  ------------------
  234|      1|            gbl->c_prov_free = OSSL_FUNC_provider_free(in);
  235|      1|            break;
  236|     45|        default:
  ------------------
  |  Branch (236:9): [True: 45, False: 8]
  ------------------
  237|       |            /* Just ignore anything we don't understand */
  238|     45|            break;
  239|     53|        }
  240|     53|    }
  241|       |
  242|      1|    if (gbl->c_get_libctx == NULL
  ------------------
  |  Branch (242:9): [True: 0, False: 1]
  ------------------
  243|      1|        || gbl->c_provider_register_child_cb == NULL
  ------------------
  |  Branch (243:12): [True: 0, False: 1]
  ------------------
  244|      1|        || gbl->c_prov_name == NULL
  ------------------
  |  Branch (244:12): [True: 0, False: 1]
  ------------------
  245|      1|        || gbl->c_prov_get0_provider_ctx == NULL
  ------------------
  |  Branch (245:12): [True: 0, False: 1]
  ------------------
  246|      1|        || gbl->c_prov_get0_dispatch == NULL
  ------------------
  |  Branch (246:12): [True: 0, False: 1]
  ------------------
  247|      1|        || gbl->c_prov_up_ref == NULL
  ------------------
  |  Branch (247:12): [True: 0, False: 1]
  ------------------
  248|      1|        || gbl->c_prov_free == NULL)
  ------------------
  |  Branch (248:12): [True: 0, False: 1]
  ------------------
  249|      0|        return 0;
  250|       |
  251|      1|    gbl->lock = CRYPTO_THREAD_lock_new();
  252|      1|    if (gbl->lock == NULL)
  ------------------
  |  Branch (252:9): [True: 0, False: 1]
  ------------------
  253|      0|        return 0;
  254|       |
  255|      1|    if (!gbl->c_provider_register_child_cb(gbl->handle,
  ------------------
  |  Branch (255:9): [True: 0, False: 1]
  ------------------
  256|      1|            provider_create_child_cb,
  257|      1|            provider_remove_child_cb,
  258|      1|            provider_global_props_cb,
  259|      1|            ctx))
  260|      0|        return 0;
  261|       |
  262|      1|    return 1;
  263|      1|}
provider_child.c:provider_create_child_cb:
   93|      2|{
   94|      2|    OSSL_LIB_CTX *ctx = cbdata;
   95|      2|    struct child_prov_globals *gbl;
   96|      2|    const char *provname;
   97|      2|    OSSL_PROVIDER *cprov;
   98|      2|    int ret = 0;
   99|       |
  100|      2|    gbl = ossl_lib_ctx_get_data(ctx, OSSL_LIB_CTX_CHILD_PROVIDER_INDEX);
  ------------------
  |  |  115|      2|#define OSSL_LIB_CTX_CHILD_PROVIDER_INDEX 18
  ------------------
  101|      2|    if (gbl == NULL)
  ------------------
  |  Branch (101:9): [True: 0, False: 2]
  ------------------
  102|      0|        return 0;
  103|       |
  104|      2|    if (!CRYPTO_THREAD_write_lock(gbl->lock))
  ------------------
  |  Branch (104:9): [True: 0, False: 2]
  ------------------
  105|      0|        return 0;
  106|       |
  107|      2|    provname = gbl->c_prov_name(prov);
  108|       |
  109|       |    /*
  110|       |     * We're operating under a lock so we can store the "current" provider in
  111|       |     * the global data.
  112|       |     */
  113|      2|    gbl->curr_prov = prov;
  114|       |
  115|      2|    if ((cprov = ossl_provider_find(ctx, provname, 1)) != NULL) {
  ------------------
  |  Branch (115:9): [True: 0, False: 2]
  ------------------
  116|       |        /*
  117|       |         * We free the newly created ref. We rely on the provider sticking around
  118|       |         * in the provider store.
  119|       |         */
  120|      0|        ossl_provider_free(cprov);
  121|       |
  122|       |        /*
  123|       |         * The provider already exists. It could be a previously created child,
  124|       |         * or it could have been explicitly loaded. If explicitly loaded we
  125|       |         * ignore it - i.e. we don't start treating it like a child.
  126|       |         */
  127|      0|        if (!ossl_provider_activate(cprov, 0, 1))
  ------------------
  |  Branch (127:13): [True: 0, False: 0]
  ------------------
  128|      0|            goto err;
  129|      2|    } else {
  130|       |        /*
  131|       |         * Create it - passing 1 as final param so we don't try and recursively
  132|       |         * init children
  133|       |         */
  134|      2|        if ((cprov = ossl_provider_new(ctx, provname, ossl_child_provider_init,
  ------------------
  |  Branch (134:13): [True: 0, False: 2]
  ------------------
  135|      2|                 NULL, 1))
  136|      2|            == NULL)
  137|      0|            goto err;
  138|       |
  139|      2|        if (!ossl_provider_activate(cprov, 0, 0)) {
  ------------------
  |  Branch (139:13): [True: 0, False: 2]
  ------------------
  140|      0|            ossl_provider_free(cprov);
  141|      0|            goto err;
  142|      0|        }
  143|       |
  144|      2|        if (!ossl_provider_set_child(cprov, prov)
  ------------------
  |  Branch (144:13): [True: 0, False: 2]
  ------------------
  145|      2|            || !ossl_provider_add_to_store(cprov, NULL, 0)) {
  ------------------
  |  Branch (145:16): [True: 0, False: 2]
  ------------------
  146|      0|            ossl_provider_deactivate(cprov, 0);
  147|      0|            ossl_provider_free(cprov);
  148|      0|            goto err;
  149|      0|        }
  150|      2|    }
  151|       |
  152|      2|    ret = 1;
  153|      2|err:
  154|      2|    CRYPTO_THREAD_unlock(gbl->lock);
  155|      2|    return ret;
  156|      2|}
provider_child.c:ossl_child_provider_init:
   56|      2|{
   57|      2|    OSSL_FUNC_core_get_libctx_fn *c_get_libctx = NULL;
   58|      2|    OSSL_LIB_CTX *ctx;
   59|      2|    struct child_prov_globals *gbl;
   60|       |
   61|    108|    for (; in->function_id != 0; in++) {
  ------------------
  |  Branch (61:12): [True: 106, False: 2]
  ------------------
   62|    106|        switch (in->function_id) {
   63|      2|        case OSSL_FUNC_CORE_GET_LIBCTX:
  ------------------
  |  |   79|      2|#define OSSL_FUNC_CORE_GET_LIBCTX 4
  ------------------
  |  Branch (63:9): [True: 2, False: 104]
  ------------------
   64|      2|            c_get_libctx = OSSL_FUNC_core_get_libctx(in);
   65|      2|            break;
   66|    104|        default:
  ------------------
  |  Branch (66:9): [True: 104, False: 2]
  ------------------
   67|       |            /* Just ignore anything we don't understand */
   68|    104|            break;
   69|    106|        }
   70|    106|    }
   71|       |
   72|      2|    if (c_get_libctx == NULL)
  ------------------
  |  Branch (72:9): [True: 0, False: 2]
  ------------------
   73|      0|        return 0;
   74|       |
   75|       |    /*
   76|       |     * We need an OSSL_LIB_CTX but c_get_libctx returns OPENSSL_CORE_CTX. We are
   77|       |     * a built-in provider and so we can get away with this cast. Normal
   78|       |     * providers can't do this.
   79|       |     */
   80|      2|    ctx = (OSSL_LIB_CTX *)c_get_libctx(handle);
   81|       |
   82|      2|    gbl = ossl_lib_ctx_get_data(ctx, OSSL_LIB_CTX_CHILD_PROVIDER_INDEX);
  ------------------
  |  |  115|      2|#define OSSL_LIB_CTX_CHILD_PROVIDER_INDEX 18
  ------------------
   83|      2|    if (gbl == NULL)
  ------------------
  |  Branch (83:9): [True: 0, False: 2]
  ------------------
   84|      0|        return 0;
   85|       |
   86|      2|    *provctx = gbl->c_prov_get0_provider_ctx(gbl->curr_prov);
   87|      2|    *out = gbl->c_prov_get0_dispatch(gbl->curr_prov);
   88|       |
   89|      2|    return 1;
   90|      2|}
provider_child.c:provider_global_props_cb:
  186|      1|{
  187|      1|    OSSL_LIB_CTX *ctx = cbdata;
  188|       |
  189|      1|    return evp_set_default_properties_int(ctx, props, 0, 1);
  190|      1|}

ossl_prov_conf_ctx_new:
   31|      3|{
   32|      3|    PROVIDER_CONF_GLOBAL *pcgbl = OPENSSL_zalloc(sizeof(*pcgbl));
  ------------------
  |  |  113|      3|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   33|       |
   34|      3|    if (pcgbl == NULL)
  ------------------
  |  Branch (34:9): [True: 0, False: 3]
  ------------------
   35|      0|        return NULL;
   36|       |
   37|      3|    pcgbl->lock = CRYPTO_THREAD_lock_new();
   38|      3|    if (pcgbl->lock == NULL) {
  ------------------
  |  Branch (38:9): [True: 0, False: 3]
  ------------------
   39|      0|        OPENSSL_free(pcgbl);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   40|      0|        return NULL;
   41|      0|    }
   42|       |
   43|      3|    return pcgbl;
   44|      3|}

ossl_provider_store_new:
  310|      3|{
  311|      3|    struct provider_store_st *store = OPENSSL_zalloc(sizeof(*store));
  ------------------
  |  |  113|      3|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  312|       |
  313|      3|    if (store == NULL
  ------------------
  |  Branch (313:9): [True: 0, False: 3]
  ------------------
  314|      3|        || (store->providers = sk_OSSL_PROVIDER_new(ossl_provider_cmp)) == NULL
  ------------------
  |  Branch (314:12): [True: 0, False: 3]
  ------------------
  315|      3|        || (store->default_path_lock = CRYPTO_THREAD_lock_new()) == NULL
  ------------------
  |  Branch (315:12): [True: 0, False: 3]
  ------------------
  316|      3|#ifndef FIPS_MODULE
  317|      3|        || (store->child_cbs = sk_OSSL_PROVIDER_CHILD_CB_new_null()) == NULL
  ------------------
  |  Branch (317:12): [True: 0, False: 3]
  ------------------
  318|      3|#endif
  319|      3|        || (store->lock = CRYPTO_THREAD_lock_new()) == NULL) {
  ------------------
  |  Branch (319:12): [True: 0, False: 3]
  ------------------
  320|      0|        ossl_provider_store_free(store);
  321|      0|        return NULL;
  322|      0|    }
  323|      3|    store->libctx = ctx;
  324|      3|    store->use_fallbacks = 1;
  325|       |
  326|      3|    return store;
  327|      3|}
ossl_provider_find:
  401|      4|{
  402|      4|    struct provider_store_st *store = NULL;
  403|      4|    OSSL_PROVIDER *prov = NULL;
  404|       |
  405|      4|    if ((store = get_provider_store(libctx)) != NULL) {
  ------------------
  |  Branch (405:9): [True: 4, False: 0]
  ------------------
  406|      4|        OSSL_PROVIDER tmpl = {
  407|      4|            0,
  408|      4|        };
  409|      4|        int i;
  410|       |
  411|      4|#if !defined(FIPS_MODULE) && !defined(OPENSSL_NO_AUTOLOAD_CONFIG)
  412|       |        /*
  413|       |         * Make sure any providers are loaded from config before we try to find
  414|       |         * them.
  415|       |         */
  416|      4|        if (!noconfig) {
  ------------------
  |  Branch (416:13): [True: 2, False: 2]
  ------------------
  417|      2|            if (ossl_lib_ctx_is_default(libctx))
  ------------------
  |  Branch (417:17): [True: 0, False: 2]
  ------------------
  418|      0|                OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CONFIG, NULL);
  ------------------
  |  |  553|      0|#define OPENSSL_INIT_LOAD_CONFIG 0x00000040L
  ------------------
  419|      2|        }
  420|      4|#endif
  421|       |
  422|      4|        tmpl.name = (char *)name;
  423|      4|        if (!CRYPTO_THREAD_read_lock(store->lock))
  ------------------
  |  Branch (423:13): [True: 0, False: 4]
  ------------------
  424|      0|            return NULL;
  425|      4|        if (!sk_OSSL_PROVIDER_is_sorted(store->providers)) {
  ------------------
  |  Branch (425:13): [True: 0, False: 4]
  ------------------
  426|      0|            CRYPTO_THREAD_unlock(store->lock);
  427|      0|            if (!CRYPTO_THREAD_write_lock(store->lock))
  ------------------
  |  Branch (427:17): [True: 0, False: 0]
  ------------------
  428|      0|                return NULL;
  429|      0|            if (!sk_OSSL_PROVIDER_is_sorted(store->providers))
  ------------------
  |  Branch (429:17): [True: 0, False: 0]
  ------------------
  430|      0|                sk_OSSL_PROVIDER_sort(store->providers);
  431|      0|        }
  432|      4|        if ((i = sk_OSSL_PROVIDER_find(store->providers, &tmpl)) != -1)
  ------------------
  |  Branch (432:13): [True: 0, False: 4]
  ------------------
  433|      0|            prov = sk_OSSL_PROVIDER_value(store->providers, i);
  434|      4|        CRYPTO_THREAD_unlock(store->lock);
  435|      4|        if (prov != NULL && !ossl_provider_up_ref(prov))
  ------------------
  |  Branch (435:13): [True: 0, False: 4]
  |  Branch (435:29): [True: 0, False: 0]
  ------------------
  436|      0|            prov = NULL;
  437|      4|    }
  438|       |
  439|      4|    return prov;
  440|      4|}
ossl_provider_up_ref:
  486|     36|{
  487|     36|    int ref = 0;
  488|       |
  489|     36|    if (CRYPTO_UP_REF(&prov->refcnt, &ref) <= 0)
  ------------------
  |  Branch (489:9): [True: 0, False: 36]
  ------------------
  490|      0|        return 0;
  491|       |
  492|     36|#ifndef FIPS_MODULE
  493|     36|    if (prov->ischild) {
  ------------------
  |  Branch (493:9): [True: 0, False: 36]
  ------------------
  494|      0|        if (!ossl_provider_up_ref_parent(prov, 0)) {
  ------------------
  |  Branch (494:13): [True: 0, False: 0]
  ------------------
  495|      0|            ossl_provider_free(prov);
  496|      0|            return 0;
  497|      0|        }
  498|      0|    }
  499|     36|#endif
  500|       |
  501|     36|    return ref;
  502|     36|}
ossl_provider_new:
  531|      4|{
  532|      4|    struct provider_store_st *store = NULL;
  533|      4|    OSSL_PROVIDER_INFO template;
  534|      4|    OSSL_PROVIDER *prov = NULL;
  535|       |
  536|      4|    if ((store = get_provider_store(libctx)) == NULL)
  ------------------
  |  Branch (536:9): [True: 0, False: 4]
  ------------------
  537|      0|        return NULL;
  538|       |
  539|      4|    memset(&template, 0, sizeof(template));
  540|      4|    if (init_function == NULL) {
  ------------------
  |  Branch (540:9): [True: 2, False: 2]
  ------------------
  541|      2|        const OSSL_PROVIDER_INFO *p;
  542|      2|        size_t i;
  543|      2|        int chosen = 0;
  544|       |
  545|       |        /* Check if this is a predefined builtin provider */
  546|      3|        for (p = ossl_predefined_providers; p->name != NULL; p++) {
  ------------------
  |  Branch (546:45): [True: 3, False: 0]
  ------------------
  547|      3|            if (strcmp(p->name, name) != 0)
  ------------------
  |  Branch (547:17): [True: 1, False: 2]
  ------------------
  548|      1|                continue;
  549|       |            /* These compile-time templates always have NULL parameters */
  550|      2|            template = *p;
  551|      2|            chosen = 1;
  552|      2|            break;
  553|      3|        }
  554|      2|        if (!CRYPTO_THREAD_read_lock(store->lock))
  ------------------
  |  Branch (554:13): [True: 0, False: 2]
  ------------------
  555|      0|            return NULL;
  556|      2|        for (i = 0, p = store->provinfo; i < store->numprovinfo; p++, i++) {
  ------------------
  |  Branch (556:42): [True: 0, False: 2]
  ------------------
  557|      0|            if (strcmp(p->name, name) != 0)
  ------------------
  |  Branch (557:17): [True: 0, False: 0]
  ------------------
  558|      0|                continue;
  559|       |            /* For built-in providers, copy just implicit parameters. */
  560|      0|            if (!chosen)
  ------------------
  |  Branch (560:17): [True: 0, False: 0]
  ------------------
  561|      0|                template = *p;
  562|       |            /*
  563|       |             * Explicit parameters override config-file defaults.  If an empty
  564|       |             * parameter set is desired, a non-NULL empty set must be provided.
  565|       |             */
  566|      0|            if (params != NULL || p->parameters == NULL) {
  ------------------
  |  Branch (566:17): [True: 0, False: 0]
  |  Branch (566:35): [True: 0, False: 0]
  ------------------
  567|      0|                template.parameters = NULL;
  568|      0|                break;
  569|      0|            }
  570|       |            /* Always copy to avoid sharing/mutation. */
  571|      0|            template.parameters = sk_INFOPAIR_deep_copy(p->parameters,
  572|      0|                infopair_copy,
  573|      0|                infopair_free);
  574|      0|            if (template.parameters == NULL) {
  ------------------
  |  Branch (574:17): [True: 0, False: 0]
  ------------------
  575|      0|                CRYPTO_THREAD_unlock(store->lock);
  576|      0|                return NULL;
  577|      0|            }
  578|      0|            break;
  579|      0|        }
  580|      2|        CRYPTO_THREAD_unlock(store->lock);
  581|      2|    } else {
  582|      2|        template.init = init_function;
  583|      2|    }
  584|       |
  585|      4|    if (params != NULL) {
  ------------------
  |  Branch (585:9): [True: 0, False: 4]
  ------------------
  586|      0|        int i;
  587|       |
  588|       |        /* Don't leak if already non-NULL */
  589|      0|        if (template.parameters == NULL)
  ------------------
  |  Branch (589:13): [True: 0, False: 0]
  ------------------
  590|      0|            template.parameters = sk_INFOPAIR_new_null();
  591|      0|        if (template.parameters == NULL)
  ------------------
  |  Branch (591:13): [True: 0, False: 0]
  ------------------
  592|      0|            return NULL;
  593|       |
  594|      0|        for (i = 0; params[i].key != NULL; i++) {
  ------------------
  |  Branch (594:21): [True: 0, False: 0]
  ------------------
  595|      0|            if (params[i].data_type != OSSL_PARAM_UTF8_STRING)
  ------------------
  |  |  117|      0|#define OSSL_PARAM_UTF8_STRING 4
  ------------------
  |  Branch (595:17): [True: 0, False: 0]
  ------------------
  596|      0|                continue;
  597|      0|            if (ossl_provider_info_add_parameter(&template, params[i].key,
  ------------------
  |  Branch (597:17): [True: 0, False: 0]
  ------------------
  598|      0|                    (char *)params[i].data)
  599|      0|                <= 0) {
  600|      0|                sk_INFOPAIR_pop_free(template.parameters, infopair_free);
  601|      0|                return NULL;
  602|      0|            }
  603|      0|        }
  604|      0|    }
  605|       |
  606|       |    /* provider_new() generates an error, so no need here */
  607|      4|    prov = provider_new(name, template.init, template.parameters);
  608|       |
  609|       |    /* If we copied the parameters, free them */
  610|      4|    if (template.parameters != NULL)
  ------------------
  |  Branch (610:9): [True: 0, False: 4]
  ------------------
  611|      0|        sk_INFOPAIR_pop_free(template.parameters, infopair_free);
  612|       |
  613|      4|    if (prov == NULL)
  ------------------
  |  Branch (613:9): [True: 0, False: 4]
  ------------------
  614|      0|        return NULL;
  615|       |
  616|      4|    if (!ossl_provider_set_module_path(prov, template.path)) {
  ------------------
  |  Branch (616:9): [True: 0, False: 4]
  ------------------
  617|      0|        ossl_provider_free(prov);
  618|      0|        return NULL;
  619|      0|    }
  620|       |
  621|      4|    prov->libctx = libctx;
  622|      4|#ifndef FIPS_MODULE
  623|      4|    prov->error_lib = ERR_get_next_error_library();
  624|      4|#endif
  625|       |
  626|       |    /*
  627|       |     * At this point, the provider is only partially "loaded".  To be
  628|       |     * fully "loaded", ossl_provider_activate() must also be called and it must
  629|       |     * then be added to the provider store.
  630|       |     */
  631|       |
  632|      4|    return prov;
  633|      4|}
ossl_provider_add_to_store:
  660|      4|{
  661|      4|    struct provider_store_st *store;
  662|      4|    int idx;
  663|      4|    OSSL_PROVIDER tmpl = {
  664|      4|        0,
  665|      4|    };
  666|      4|    OSSL_PROVIDER *actualtmp = NULL;
  667|       |
  668|      4|    if (actualprov != NULL)
  ------------------
  |  Branch (668:9): [True: 2, False: 2]
  ------------------
  669|      2|        *actualprov = NULL;
  670|       |
  671|      4|    if ((store = get_provider_store(prov->libctx)) == NULL)
  ------------------
  |  Branch (671:9): [True: 0, False: 4]
  ------------------
  672|      0|        return 0;
  673|       |
  674|      4|    if (!CRYPTO_THREAD_write_lock(store->lock))
  ------------------
  |  Branch (674:9): [True: 0, False: 4]
  ------------------
  675|      0|        return 0;
  676|       |
  677|      4|    tmpl.name = (char *)prov->name;
  678|      4|    idx = sk_OSSL_PROVIDER_find(store->providers, &tmpl);
  679|      4|    if (idx == -1)
  ------------------
  |  Branch (679:9): [True: 4, False: 0]
  ------------------
  680|      4|        actualtmp = prov;
  681|      0|    else
  682|      0|        actualtmp = sk_OSSL_PROVIDER_value(store->providers, idx);
  683|       |
  684|      4|    if (idx == -1) {
  ------------------
  |  Branch (684:9): [True: 4, False: 0]
  ------------------
  685|      4|        if (sk_OSSL_PROVIDER_push(store->providers, prov) == 0)
  ------------------
  |  Branch (685:13): [True: 0, False: 4]
  ------------------
  686|      0|            goto err;
  687|      4|        prov->store = store;
  688|      4|        if (!create_provider_children(prov)) {
  ------------------
  |  Branch (688:13): [True: 0, False: 4]
  ------------------
  689|      0|            sk_OSSL_PROVIDER_delete_ptr(store->providers, prov);
  690|      0|            goto err;
  691|      0|        }
  692|      4|        if (!retain_fallbacks)
  ------------------
  |  Branch (692:13): [True: 4, False: 0]
  ------------------
  693|      4|            store->use_fallbacks = 0;
  694|      4|    }
  695|       |
  696|      4|    CRYPTO_THREAD_unlock(store->lock);
  697|       |
  698|      4|    if (actualprov != NULL) {
  ------------------
  |  Branch (698:9): [True: 2, False: 2]
  ------------------
  699|      2|        if (!ossl_provider_up_ref(actualtmp)) {
  ------------------
  |  Branch (699:13): [True: 0, False: 2]
  ------------------
  700|      0|            ERR_raise(ERR_LIB_CRYPTO, ERR_R_CRYPTO_LIB);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  701|      0|            actualtmp = NULL;
  702|      0|            return 0;
  703|      0|        }
  704|      2|        *actualprov = actualtmp;
  705|      2|    }
  706|       |
  707|      4|    if (idx >= 0) {
  ------------------
  |  Branch (707:9): [True: 0, False: 4]
  ------------------
  708|       |        /*
  709|       |         * The provider is already in the store. Probably two threads
  710|       |         * independently initialised their own provider objects with the same
  711|       |         * name and raced to put them in the store. This thread lost. We
  712|       |         * deactivate the one we just created and use the one that already
  713|       |         * exists instead.
  714|       |         * If we get here then we know we did not create provider children
  715|       |         * above, so we inform ossl_provider_deactivate not to attempt to remove
  716|       |         * any.
  717|       |         */
  718|      0|        ossl_provider_deactivate(prov, 0);
  719|      0|        ossl_provider_free(prov);
  720|      0|    }
  721|      4|#ifndef FIPS_MODULE
  722|      4|    else {
  723|       |        /*
  724|       |         * This can be done outside the lock. We tolerate other threads getting
  725|       |         * the wrong result briefly when creating OSSL_DECODER_CTXs.
  726|       |         */
  727|      4|        ossl_decoder_cache_flush(prov->libctx);
  728|      4|    }
  729|      4|#endif
  730|       |
  731|      4|    return 1;
  732|       |
  733|      0|err:
  734|      0|    CRYPTO_THREAD_unlock(store->lock);
  735|      0|    return 0;
  736|      4|}
ossl_provider_set_module_path:
  799|      4|{
  800|      4|    OPENSSL_free(prov->path);
  ------------------
  |  |  136|      4|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  801|      4|    prov->path = NULL;
  802|      4|    if (module_path == NULL)
  ------------------
  |  Branch (802:9): [True: 4, False: 0]
  ------------------
  803|      4|        return 1;
  804|      0|    if ((prov->path = OPENSSL_strdup(module_path)) != NULL)
  ------------------
  |  |  140|      0|    CRYPTO_strdup(str, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_strdup(str, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  |  Branch (804:9): [True: 0, False: 0]
  ------------------
  805|      0|        return 1;
  806|      0|    return 0;
  807|      0|}
ossl_provider_activate:
 1402|      4|{
 1403|      4|    int count;
 1404|       |
 1405|      4|    if (prov == NULL)
  ------------------
  |  Branch (1405:9): [True: 0, False: 4]
  ------------------
 1406|      0|        return 0;
 1407|      4|#ifndef FIPS_MODULE
 1408|       |    /*
 1409|       |     * If aschild is true, then we only actually do the activation if the
 1410|       |     * provider is a child. If its not, this is still success.
 1411|       |     */
 1412|      4|    if (aschild && !prov->ischild)
  ------------------
  |  Branch (1412:9): [True: 0, False: 4]
  |  Branch (1412:20): [True: 0, False: 0]
  ------------------
 1413|      0|        return 1;
 1414|      4|#endif
 1415|      4|    if ((count = provider_activate(prov, 1, upcalls)) > 0)
  ------------------
  |  Branch (1415:9): [True: 4, False: 0]
  ------------------
 1416|      4|        return count == 1 ? provider_flush_store_cache(prov) : 1;
  ------------------
  |  Branch (1416:16): [True: 4, False: 0]
  ------------------
 1417|       |
 1418|      0|    return 0;
 1419|      4|}
ossl_provider_ctx:
 1432|  9.78k|{
 1433|  9.78k|    return prov != NULL ? prov->provctx : NULL;
  ------------------
  |  Branch (1433:12): [True: 9.78k, False: 0]
  ------------------
 1434|  9.78k|}
ossl_provider_doall_activated:
 1533|    511|{
 1534|    511|    int ret = 0, curr, max, ref = 0;
 1535|    511|    struct provider_store_st *store = get_provider_store(ctx);
 1536|    511|    STACK_OF(OSSL_PROVIDER) *provs = NULL;
  ------------------
  |  |   33|    511|#define STACK_OF(type) struct stack_st_##type
  ------------------
 1537|       |
 1538|    511|#if !defined(FIPS_MODULE) && !defined(OPENSSL_NO_AUTOLOAD_CONFIG)
 1539|       |    /*
 1540|       |     * Make sure any providers are loaded from config before we try to use
 1541|       |     * them.
 1542|       |     */
 1543|    511|    if (ossl_lib_ctx_is_default(ctx))
  ------------------
  |  Branch (1543:9): [True: 0, False: 511]
  ------------------
 1544|      0|        OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CONFIG, NULL);
  ------------------
  |  |  553|      0|#define OPENSSL_INIT_LOAD_CONFIG 0x00000040L
  ------------------
 1545|    511|#endif
 1546|       |
 1547|    511|    if (store == NULL)
  ------------------
  |  Branch (1547:9): [True: 0, False: 511]
  ------------------
 1548|      0|        return 1;
 1549|    511|    if (!provider_activate_fallbacks(store))
  ------------------
  |  Branch (1549:9): [True: 0, False: 511]
  ------------------
 1550|      0|        return 0;
 1551|       |
 1552|       |    /*
 1553|       |     * Under lock, grab a copy of the provider list and up_ref each
 1554|       |     * provider so that they don't disappear underneath us.
 1555|       |     */
 1556|    511|    if (!CRYPTO_THREAD_read_lock(store->lock))
  ------------------
  |  Branch (1556:9): [True: 0, False: 511]
  ------------------
 1557|      0|        return 0;
 1558|    511|    provs = sk_OSSL_PROVIDER_dup(store->providers);
 1559|    511|    if (provs == NULL) {
  ------------------
  |  Branch (1559:9): [True: 0, False: 511]
  ------------------
 1560|      0|        CRYPTO_THREAD_unlock(store->lock);
 1561|      0|        return 0;
 1562|      0|    }
 1563|    511|    max = sk_OSSL_PROVIDER_num(provs);
 1564|       |    /*
 1565|       |     * We work backwards through the stack so that we can safely delete items
 1566|       |     * as we go.
 1567|       |     */
 1568|  1.53k|    for (curr = max - 1; curr >= 0; curr--) {
  ------------------
  |  Branch (1568:26): [True: 1.02k, False: 511]
  ------------------
 1569|  1.02k|        OSSL_PROVIDER *prov = sk_OSSL_PROVIDER_value(provs, curr);
 1570|       |
 1571|  1.02k|        if (!CRYPTO_THREAD_read_lock(prov->flag_lock))
  ------------------
  |  Branch (1571:13): [True: 0, False: 1.02k]
  ------------------
 1572|      0|            goto err_unlock;
 1573|  1.02k|        if (prov->flag_activated) {
  ------------------
  |  Branch (1573:13): [True: 1.02k, False: 0]
  ------------------
 1574|       |            /*
 1575|       |             * We call CRYPTO_UP_REF directly rather than ossl_provider_up_ref
 1576|       |             * to avoid upping the ref count on the parent provider, which we
 1577|       |             * must not do while holding locks.
 1578|       |             */
 1579|  1.02k|            if (CRYPTO_UP_REF(&prov->refcnt, &ref) <= 0) {
  ------------------
  |  Branch (1579:17): [True: 0, False: 1.02k]
  ------------------
 1580|      0|                CRYPTO_THREAD_unlock(prov->flag_lock);
 1581|      0|                goto err_unlock;
 1582|      0|            }
 1583|       |            /*
 1584|       |             * It's already activated, but we up the activated count to ensure
 1585|       |             * it remains activated until after we've called the user callback.
 1586|       |             * In theory this could mean the parent provider goes inactive,
 1587|       |             * whilst still activated in the child for a short period. That's ok.
 1588|       |             */
 1589|  1.02k|            if (!CRYPTO_atomic_add(&prov->activatecnt, 1, &ref,
  ------------------
  |  Branch (1589:17): [True: 0, False: 1.02k]
  ------------------
 1590|  1.02k|                    prov->activatecnt_lock)) {
 1591|      0|                CRYPTO_DOWN_REF(&prov->refcnt, &ref);
 1592|      0|                CRYPTO_THREAD_unlock(prov->flag_lock);
 1593|      0|                goto err_unlock;
 1594|      0|            }
 1595|  1.02k|        } else {
 1596|      0|            sk_OSSL_PROVIDER_delete(provs, curr);
 1597|      0|            max--;
 1598|      0|        }
 1599|  1.02k|        CRYPTO_THREAD_unlock(prov->flag_lock);
 1600|  1.02k|    }
 1601|    511|    CRYPTO_THREAD_unlock(store->lock);
 1602|       |
 1603|       |    /*
 1604|       |     * Now, we sweep through all providers not under lock
 1605|       |     */
 1606|  1.53k|    for (curr = 0; curr < max; curr++) {
  ------------------
  |  Branch (1606:20): [True: 1.02k, False: 511]
  ------------------
 1607|  1.02k|        OSSL_PROVIDER *prov = sk_OSSL_PROVIDER_value(provs, curr);
 1608|       |
 1609|  1.02k|        if (!cb(prov, cbdata)) {
  ------------------
  |  Branch (1609:13): [True: 0, False: 1.02k]
  ------------------
 1610|      0|            curr = -1;
 1611|      0|            goto finish;
 1612|      0|        }
 1613|  1.02k|    }
 1614|    511|    curr = -1;
 1615|       |
 1616|    511|    ret = 1;
 1617|    511|    goto finish;
 1618|       |
 1619|      0|err_unlock:
 1620|      0|    CRYPTO_THREAD_unlock(store->lock);
 1621|    511|finish:
 1622|       |    /*
 1623|       |     * The pop_free call doesn't do what we want on an error condition. We
 1624|       |     * either start from the first item in the stack, or part way through if
 1625|       |     * we only processed some of the items.
 1626|       |     */
 1627|  1.53k|    for (curr++; curr < max; curr++) {
  ------------------
  |  Branch (1627:18): [True: 1.02k, False: 511]
  ------------------
 1628|  1.02k|        OSSL_PROVIDER *prov = sk_OSSL_PROVIDER_value(provs, curr);
 1629|       |
 1630|  1.02k|        if (!CRYPTO_atomic_add(&prov->activatecnt, -1, &ref,
  ------------------
  |  Branch (1630:13): [True: 0, False: 1.02k]
  ------------------
 1631|  1.02k|                prov->activatecnt_lock)) {
 1632|      0|            ret = 0;
 1633|      0|            continue;
 1634|      0|        }
 1635|  1.02k|        if (ref < 1) {
  ------------------
  |  Branch (1635:13): [True: 0, False: 1.02k]
  ------------------
 1636|       |            /*
 1637|       |             * Looks like we need to deactivate properly. We could just have
 1638|       |             * done this originally, but it involves taking a write lock so
 1639|       |             * we avoid it. We up the count again and do a full deactivation
 1640|       |             */
 1641|      0|            if (CRYPTO_atomic_add(&prov->activatecnt, 1, &ref,
  ------------------
  |  Branch (1641:17): [True: 0, False: 0]
  ------------------
 1642|      0|                    prov->activatecnt_lock))
 1643|      0|                provider_deactivate(prov, 0, 1);
 1644|      0|            else
 1645|      0|                ret = 0;
 1646|      0|        }
 1647|       |        /*
 1648|       |         * As above where we did the up-ref, we don't call ossl_provider_free
 1649|       |         * to avoid making upcalls. There should always be at least one ref
 1650|       |         * to the provider in the store, so this should never drop to 0.
 1651|       |         */
 1652|  1.02k|        if (!CRYPTO_DOWN_REF(&prov->refcnt, &ref)) {
  ------------------
  |  Branch (1652:13): [True: 0, False: 1.02k]
  ------------------
 1653|      0|            ret = 0;
 1654|      0|            continue;
 1655|      0|        }
 1656|       |        /*
 1657|       |         * Not much we can do if this assert ever fails. So we don't use
 1658|       |         * ossl_assert here.
 1659|       |         */
 1660|  1.02k|        assert(ref > 0);
 1661|  1.02k|    }
 1662|    511|    sk_OSSL_PROVIDER_free(provs);
 1663|    511|    return ret;
 1664|      0|}
ossl_provider_name:
 1688|      2|{
 1689|      2|    return prov->name;
 1690|      2|}
ossl_provider_get0_dispatch:
 1717|      2|{
 1718|      2|    if (prov != NULL)
  ------------------
  |  Branch (1718:9): [True: 2, False: 0]
  ------------------
 1719|      2|        return prov->dispatch;
 1720|       |
 1721|      0|    return NULL;
 1722|      2|}
ossl_provider_libctx:
 1725|     68|{
 1726|     68|    return prov != NULL ? prov->libctx : NULL;
  ------------------
  |  Branch (1726:12): [True: 68, False: 0]
  ------------------
 1727|     68|}
ossl_provider_query_operation:
 1952|  1.02k|{
 1953|  1.02k|    const OSSL_ALGORITHM *res;
 1954|       |
 1955|  1.02k|    if (prov->query_operation == NULL) {
  ------------------
  |  Branch (1955:9): [True: 0, False: 1.02k]
  ------------------
 1956|      0|#ifndef FIPS_MODULE
 1957|      0|        OSSL_TRACE_BEGIN(PROVIDER)
  ------------------
  |  |  219|      0|    do {                           \
  |  |  220|      0|        BIO *trc_out = NULL;       \
  |  |  221|      0|        if (0)
  |  |  ------------------
  |  |  |  Branch (221:13): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1958|      0|        {
 1959|      0|            BIO_printf(trc_out, "provider %s lacks query operation!\n",
 1960|      0|                prov->name);
 1961|      0|        }
 1962|      0|        OSSL_TRACE_END(PROVIDER);
  ------------------
  |  |  224|      0|    }                            \
  |  |  225|      0|    while (0)
  |  |  ------------------
  |  |  |  Branch (225:12): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1963|      0|#endif
 1964|      0|        return NULL;
 1965|      0|    }
 1966|       |
 1967|  1.02k|    res = prov->query_operation(prov->provctx, operation_id, no_cache);
 1968|  1.02k|#ifndef FIPS_MODULE
 1969|  1.02k|    OSSL_TRACE_BEGIN(PROVIDER)
  ------------------
  |  |  219|  1.02k|    do {                           \
  |  |  220|  1.02k|        BIO *trc_out = NULL;       \
  |  |  221|  1.02k|        if (0)
  |  |  ------------------
  |  |  |  Branch (221:13): [Folded, False: 1.02k]
  |  |  ------------------
  ------------------
 1970|      0|    {
 1971|      0|        const OSSL_ALGORITHM *idx;
 1972|      0|        if (res != NULL) {
  ------------------
  |  Branch (1972:13): [True: 0, False: 0]
  ------------------
 1973|      0|            BIO_printf(trc_out,
 1974|      0|                "(provider %s) Calling query, available algs are:\n", prov->name);
 1975|       |
 1976|      0|            for (idx = res; idx->algorithm_names != NULL; idx++) {
  ------------------
  |  Branch (1976:29): [True: 0, False: 0]
  ------------------
 1977|      0|                BIO_printf(trc_out,
 1978|      0|                    "(provider %s) names %s, prop_def %s, desc %s\n",
 1979|      0|                    prov->name,
 1980|      0|                    idx->algorithm_names == NULL ? "none" : idx->algorithm_names,
  ------------------
  |  Branch (1980:21): [True: 0, False: 0]
  ------------------
 1981|      0|                    idx->property_definition == NULL ? "none" : idx->property_definition,
  ------------------
  |  Branch (1981:21): [True: 0, False: 0]
  ------------------
 1982|      0|                    idx->algorithm_description == NULL ? "none" : idx->algorithm_description);
  ------------------
  |  Branch (1982:21): [True: 0, False: 0]
  ------------------
 1983|      0|            }
 1984|      0|        } else {
 1985|      0|            BIO_printf(trc_out, "(provider %s) query_operation failed\n", prov->name);
 1986|      0|        }
 1987|      0|    }
 1988|  1.02k|    OSSL_TRACE_END(PROVIDER);
  ------------------
  |  |  224|  1.02k|    }                            \
  |  |  225|  1.02k|    while (0)
  |  |  ------------------
  |  |  |  Branch (225:12): [Folded, False: 1.02k]
  |  |  ------------------
  ------------------
 1989|  1.02k|#endif
 1990|       |
 1991|       |#if defined(OPENSSL_NO_CACHED_FETCH)
 1992|       |    /* Forcing the non-caching of queries */
 1993|       |    if (no_cache != NULL)
 1994|       |        *no_cache = 1;
 1995|       |#endif
 1996|  1.02k|    return res;
 1997|  1.02k|}
ossl_provider_unquery_operation:
 2016|  1.02k|{
 2017|  1.02k|    if (prov->unquery_operation != NULL) {
  ------------------
  |  Branch (2017:9): [True: 0, False: 1.02k]
  ------------------
 2018|      0|#ifndef FIPS_MODULE
 2019|      0|        OSSL_TRACE_BEGIN(PROVIDER)
  ------------------
  |  |  219|      0|    do {                           \
  |  |  220|      0|        BIO *trc_out = NULL;       \
  |  |  221|      0|        if (0)
  |  |  ------------------
  |  |  |  Branch (221:13): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2020|      0|        {
 2021|      0|            BIO_printf(trc_out,
 2022|      0|                "(provider %s) Calling unquery"
 2023|      0|                " with operation %d\n",
 2024|      0|                prov->name,
 2025|      0|                operation_id);
 2026|      0|        }
 2027|      0|        OSSL_TRACE_END(PROVIDER);
  ------------------
  |  |  224|      0|    }                            \
  |  |  225|      0|    while (0)
  |  |  ------------------
  |  |  |  Branch (225:12): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2028|      0|#endif
 2029|      0|        prov->unquery_operation(prov->provctx, operation_id, algs);
 2030|      0|    }
 2031|  1.02k|}
ossl_provider_set_operation_bit:
 2034|      2|{
 2035|      2|    size_t byte = bitnum / 8;
 2036|      2|    unsigned char bit = (1 << (bitnum % 8)) & 0xFF;
 2037|       |
 2038|      2|    if (!CRYPTO_THREAD_write_lock(provider->opbits_lock))
  ------------------
  |  Branch (2038:9): [True: 0, False: 2]
  ------------------
 2039|      0|        return 0;
 2040|      2|    if (provider->operation_bits_sz <= byte) {
  ------------------
  |  Branch (2040:9): [True: 2, False: 0]
  ------------------
 2041|      2|        unsigned char *tmp = OPENSSL_realloc(provider->operation_bits,
  ------------------
  |  |  125|      2|    CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
 2042|      2|            byte + 1);
 2043|       |
 2044|      2|        if (tmp == NULL) {
  ------------------
  |  Branch (2044:13): [True: 0, False: 2]
  ------------------
 2045|      0|            CRYPTO_THREAD_unlock(provider->opbits_lock);
 2046|      0|            return 0;
 2047|      0|        }
 2048|      2|        provider->operation_bits = tmp;
 2049|      2|        memset(provider->operation_bits + provider->operation_bits_sz,
 2050|      2|            '\0', byte + 1 - provider->operation_bits_sz);
 2051|      2|        provider->operation_bits_sz = byte + 1;
 2052|      2|    }
 2053|      2|    provider->operation_bits[byte] |= bit;
 2054|      2|    CRYPTO_THREAD_unlock(provider->opbits_lock);
 2055|      2|    return 1;
 2056|      2|}
ossl_provider_test_operation_bit:
 2060|  1.02k|{
 2061|  1.02k|    size_t byte = bitnum / 8;
 2062|  1.02k|    unsigned char bit = (1 << (bitnum % 8)) & 0xFF;
 2063|       |
 2064|  1.02k|    if (!ossl_assert(result != NULL)) {
  ------------------
  |  |   44|  1.02k|#define ossl_assert(x) ossl_likely((x) != 0)
  |  |  ------------------
  |  |  |  |   22|  1.02k|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  ------------------
  |  Branch (2064:9): [True: 0, False: 1.02k]
  ------------------
 2065|      0|        ERR_raise(ERR_LIB_CRYPTO, ERR_R_PASSED_NULL_PARAMETER);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
 2066|      0|        return 0;
 2067|      0|    }
 2068|       |
 2069|  1.02k|    *result = 0;
 2070|  1.02k|    if (!CRYPTO_THREAD_read_lock(provider->opbits_lock))
  ------------------
  |  Branch (2070:9): [True: 0, False: 1.02k]
  ------------------
 2071|      0|        return 0;
 2072|  1.02k|    if (provider->operation_bits_sz > byte)
  ------------------
  |  Branch (2072:9): [True: 1.02k, False: 2]
  ------------------
 2073|  1.02k|        *result = ((provider->operation_bits[byte] & bit) != 0);
 2074|  1.02k|    CRYPTO_THREAD_unlock(provider->opbits_lock);
 2075|  1.02k|    return 1;
 2076|  1.02k|}
ossl_provider_set_child:
 2090|      2|{
 2091|      2|    prov->handle = handle;
 2092|      2|    prov->ischild = 1;
 2093|       |
 2094|      2|    return 1;
 2095|      2|}
ossl_provider_default_props_update:
 2098|      1|{
 2099|      1|#ifndef FIPS_MODULE
 2100|      1|    struct provider_store_st *store = NULL;
 2101|      1|    int i, max;
 2102|      1|    OSSL_PROVIDER_CHILD_CB *child_cb;
 2103|       |
 2104|      1|    if ((store = get_provider_store(libctx)) == NULL)
  ------------------
  |  Branch (2104:9): [True: 0, False: 1]
  ------------------
 2105|      0|        return 0;
 2106|       |
 2107|      1|    if (!CRYPTO_THREAD_read_lock(store->lock))
  ------------------
  |  Branch (2107:9): [True: 0, False: 1]
  ------------------
 2108|      0|        return 0;
 2109|       |
 2110|      1|    max = sk_OSSL_PROVIDER_CHILD_CB_num(store->child_cbs);
 2111|      1|    for (i = 0; i < max; i++) {
  ------------------
  |  Branch (2111:17): [True: 0, False: 1]
  ------------------
 2112|      0|        child_cb = sk_OSSL_PROVIDER_CHILD_CB_value(store->child_cbs, i);
 2113|      0|        child_cb->global_props_cb(props, child_cb->cbdata);
 2114|      0|    }
 2115|       |
 2116|      1|    CRYPTO_THREAD_unlock(store->lock);
 2117|      1|#endif
 2118|      1|    return 1;
 2119|      1|}
provider_core.c:ossl_provider_cmp:
  204|      6|{
  205|      6|    return strcmp((*a)->name, (*b)->name);
  206|      6|}
provider_core.c:get_provider_store:
  330|    529|{
  331|    529|    struct provider_store_st *store = NULL;
  332|       |
  333|    529|    store = ossl_lib_ctx_get_data(libctx, OSSL_LIB_CTX_PROVIDER_STORE_INDEX);
  ------------------
  |  |   96|    529|#define OSSL_LIB_CTX_PROVIDER_STORE_INDEX 1
  ------------------
  334|    529|    if (store == NULL)
  ------------------
  |  Branch (334:9): [True: 0, False: 529]
  ------------------
  335|       |        ERR_raise(ERR_LIB_CRYPTO, ERR_R_INTERNAL_ERROR);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  336|    529|    return store;
  337|    529|}
provider_core.c:provider_new:
  450|      4|{
  451|      4|    OSSL_PROVIDER *prov = NULL;
  452|       |
  453|      4|    if ((prov = OPENSSL_zalloc(sizeof(*prov))) == NULL)
  ------------------
  |  |  113|      4|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  |  Branch (453:9): [True: 0, False: 4]
  ------------------
  454|      0|        return NULL;
  455|      4|    if (!CRYPTO_NEW_REF(&prov->refcnt, 1)) {
  ------------------
  |  Branch (455:9): [True: 0, False: 4]
  ------------------
  456|      0|        OPENSSL_free(prov);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  457|      0|        return NULL;
  458|      0|    }
  459|      4|    if ((prov->activatecnt_lock = CRYPTO_THREAD_lock_new()) == NULL) {
  ------------------
  |  Branch (459:9): [True: 0, False: 4]
  ------------------
  460|      0|        ossl_provider_free(prov);
  461|      0|        ERR_raise(ERR_LIB_CRYPTO, ERR_R_CRYPTO_LIB);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  462|      0|        return NULL;
  463|      0|    }
  464|       |
  465|      4|    if ((prov->opbits_lock = CRYPTO_THREAD_lock_new()) == NULL
  ------------------
  |  Branch (465:9): [True: 0, False: 4]
  ------------------
  466|      4|        || (prov->flag_lock = CRYPTO_THREAD_lock_new()) == NULL
  ------------------
  |  Branch (466:12): [True: 0, False: 4]
  ------------------
  467|      4|        || (prov->parameters = sk_INFOPAIR_deep_copy(parameters,
  ------------------
  |  Branch (467:12): [True: 0, False: 4]
  ------------------
  468|      4|                infopair_copy,
  469|      4|                infopair_free))
  470|      4|            == NULL) {
  471|      0|        ossl_provider_free(prov);
  472|      0|        ERR_raise(ERR_LIB_CRYPTO, ERR_R_CRYPTO_LIB);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  473|      0|        return NULL;
  474|      0|    }
  475|      4|    if ((prov->name = OPENSSL_strdup(name)) == NULL) {
  ------------------
  |  |  140|      4|    CRYPTO_strdup(str, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_strdup(str, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  |  Branch (475:9): [True: 0, False: 4]
  ------------------
  476|      0|        ossl_provider_free(prov);
  477|      0|        return NULL;
  478|      0|    }
  479|       |
  480|      4|    prov->init_function = init_function;
  481|       |
  482|      4|    return prov;
  483|      4|}
provider_core.c:create_provider_children:
  637|      4|{
  638|      4|    int ret = 1;
  639|      4|#ifndef FIPS_MODULE
  640|      4|    struct provider_store_st *store = prov->store;
  641|      4|    OSSL_PROVIDER_CHILD_CB *child_cb;
  642|      4|    int i, max;
  643|       |
  644|      4|    max = sk_OSSL_PROVIDER_CHILD_CB_num(store->child_cbs);
  645|      5|    for (i = 0; i < max; i++) {
  ------------------
  |  Branch (645:17): [True: 1, False: 4]
  ------------------
  646|       |        /*
  647|       |         * This is newly activated (activatecnt == 1), so we need to
  648|       |         * create child providers as necessary.
  649|       |         */
  650|      1|        child_cb = sk_OSSL_PROVIDER_CHILD_CB_value(store->child_cbs, i);
  651|      1|        ret &= child_cb->create_cb((OSSL_CORE_HANDLE *)prov, child_cb->cbdata);
  652|      1|    }
  653|      4|#endif
  654|       |
  655|      4|    return ret;
  656|      4|}
provider_core.c:provider_activate:
 1262|      4|{
 1263|      4|    int count = -1;
 1264|      4|    struct provider_store_st *store;
 1265|      4|    int ret = 1;
 1266|       |
 1267|      4|    store = prov->store;
 1268|       |    /*
 1269|       |     * If the provider hasn't been added to the store, then we don't need
 1270|       |     * any locks because we've not shared it with other threads.
 1271|       |     */
 1272|      4|    if (store == NULL) {
  ------------------
  |  Branch (1272:9): [True: 4, False: 0]
  ------------------
 1273|      4|        lock = 0;
 1274|      4|        if (!provider_init(prov))
  ------------------
  |  Branch (1274:13): [True: 0, False: 4]
  ------------------
 1275|      0|            return -1;
 1276|      4|    }
 1277|       |
 1278|      4|#ifndef FIPS_MODULE
 1279|      4|    if (prov->random_bytes != NULL
  ------------------
  |  Branch (1279:9): [True: 0, False: 4]
  ------------------
 1280|      0|        && !ossl_rand_check_random_provider_on_load(prov->libctx, prov))
  ------------------
  |  Branch (1280:12): [True: 0, False: 0]
  ------------------
 1281|      0|        return -1;
 1282|       |
 1283|      4|    if (prov->ischild && upcalls && !ossl_provider_up_ref_parent(prov, 1))
  ------------------
  |  Branch (1283:9): [True: 0, False: 4]
  |  Branch (1283:26): [True: 0, False: 0]
  |  Branch (1283:37): [True: 0, False: 0]
  ------------------
 1284|      0|        return -1;
 1285|      4|#endif
 1286|       |
 1287|      4|    if (lock && !CRYPTO_THREAD_read_lock(store->lock)) {
  ------------------
  |  Branch (1287:9): [True: 0, False: 4]
  |  Branch (1287:17): [True: 0, False: 0]
  ------------------
 1288|      0|#ifndef FIPS_MODULE
 1289|      0|        if (prov->ischild && upcalls)
  ------------------
  |  Branch (1289:13): [True: 0, False: 0]
  |  Branch (1289:30): [True: 0, False: 0]
  ------------------
 1290|      0|            ossl_provider_free_parent(prov, 1);
 1291|      0|#endif
 1292|      0|        return -1;
 1293|      0|    }
 1294|       |
 1295|      4|    if (lock && !CRYPTO_THREAD_write_lock(prov->flag_lock)) {
  ------------------
  |  Branch (1295:9): [True: 0, False: 4]
  |  Branch (1295:17): [True: 0, False: 0]
  ------------------
 1296|      0|        CRYPTO_THREAD_unlock(store->lock);
 1297|      0|#ifndef FIPS_MODULE
 1298|      0|        if (prov->ischild && upcalls)
  ------------------
  |  Branch (1298:13): [True: 0, False: 0]
  |  Branch (1298:30): [True: 0, False: 0]
  ------------------
 1299|      0|            ossl_provider_free_parent(prov, 1);
 1300|      0|#endif
 1301|      0|        return -1;
 1302|      0|    }
 1303|      4|    if (CRYPTO_atomic_add(&prov->activatecnt, 1, &count, prov->activatecnt_lock)) {
  ------------------
  |  Branch (1303:9): [True: 4, False: 0]
  ------------------
 1304|      4|        prov->flag_activated = 1;
 1305|       |
 1306|      4|        if (count == 1 && store != NULL) {
  ------------------
  |  Branch (1306:13): [True: 4, False: 0]
  |  Branch (1306:27): [True: 0, False: 4]
  ------------------
 1307|      0|            ret = create_provider_children(prov);
 1308|      0|        }
 1309|      4|    }
 1310|      4|    if (lock) {
  ------------------
  |  Branch (1310:9): [True: 0, False: 4]
  ------------------
 1311|      0|        CRYPTO_THREAD_unlock(prov->flag_lock);
 1312|      0|        CRYPTO_THREAD_unlock(store->lock);
 1313|       |        /*
 1314|       |         * This can be done outside the lock. We tolerate other threads getting
 1315|       |         * the wrong result briefly when creating OSSL_DECODER_CTXs.
 1316|       |         */
 1317|      0|#ifndef FIPS_MODULE
 1318|      0|        if (count == 1)
  ------------------
  |  Branch (1318:13): [True: 0, False: 0]
  ------------------
 1319|      0|            ossl_decoder_cache_flush(prov->libctx);
 1320|      0|#endif
 1321|      0|    }
 1322|       |
 1323|      4|    if (!ret)
  ------------------
  |  Branch (1323:9): [True: 0, False: 4]
  ------------------
 1324|      0|        return -1;
 1325|       |
 1326|      4|    return count;
 1327|      4|}
provider_core.c:provider_init:
  954|      4|{
  955|      4|    const OSSL_DISPATCH *provider_dispatch = NULL;
  956|      4|    void *tmp_provctx = NULL; /* safety measure */
  957|      4|#ifndef OPENSSL_NO_ERR
  958|      4|#ifndef FIPS_MODULE
  959|      4|    OSSL_FUNC_provider_get_reason_strings_fn *p_get_reason_strings = NULL;
  960|      4|#endif
  961|      4|#endif
  962|      4|    int ok = 0;
  963|       |
  964|      4|    if (!ossl_assert(!prov->flag_initialized)) {
  ------------------
  |  |   44|      4|#define ossl_assert(x) ossl_likely((x) != 0)
  |  |  ------------------
  |  |  |  |   22|      4|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  ------------------
  |  Branch (964:9): [True: 0, False: 4]
  ------------------
  965|      0|        ERR_raise(ERR_LIB_CRYPTO, ERR_R_INTERNAL_ERROR);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  966|      0|        goto end;
  967|      0|    }
  968|       |
  969|       |    /*
  970|       |     * If the init function isn't set, it indicates that this provider is
  971|       |     * a loadable module.
  972|       |     */
  973|      4|    if (prov->init_function == NULL) {
  ------------------
  |  Branch (973:9): [True: 0, False: 4]
  ------------------
  974|       |#ifdef FIPS_MODULE
  975|       |        goto end;
  976|       |#else
  977|      0|        if (prov->module == NULL) {
  ------------------
  |  Branch (977:13): [True: 0, False: 0]
  ------------------
  978|      0|            char *allocated_path = NULL;
  979|      0|            const char *module_path = NULL;
  980|      0|            char *merged_path = NULL;
  981|      0|            const char *load_dir = NULL;
  982|      0|            char *allocated_load_dir = NULL;
  983|      0|            struct provider_store_st *store;
  984|       |
  985|      0|            if ((prov->module = DSO_new()) == NULL) {
  ------------------
  |  Branch (985:17): [True: 0, False: 0]
  ------------------
  986|       |                /* DSO_new() generates an error already */
  987|      0|                goto end;
  988|      0|            }
  989|       |
  990|      0|            if ((store = get_provider_store(prov->libctx)) == NULL
  ------------------
  |  Branch (990:17): [True: 0, False: 0]
  ------------------
  991|      0|                || !CRYPTO_THREAD_read_lock(store->default_path_lock))
  ------------------
  |  Branch (991:20): [True: 0, False: 0]
  ------------------
  992|      0|                goto end;
  993|       |
  994|      0|            if (store->default_path != NULL) {
  ------------------
  |  Branch (994:17): [True: 0, False: 0]
  ------------------
  995|      0|                allocated_load_dir = OPENSSL_strdup(store->default_path);
  ------------------
  |  |  140|      0|    CRYPTO_strdup(str, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_strdup(str, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  996|      0|                CRYPTO_THREAD_unlock(store->default_path_lock);
  997|      0|                if (allocated_load_dir == NULL)
  ------------------
  |  Branch (997:21): [True: 0, False: 0]
  ------------------
  998|      0|                    goto end;
  999|      0|                load_dir = allocated_load_dir;
 1000|      0|            } else {
 1001|      0|                CRYPTO_THREAD_unlock(store->default_path_lock);
 1002|      0|            }
 1003|       |
 1004|      0|            if (load_dir == NULL) {
  ------------------
  |  Branch (1004:17): [True: 0, False: 0]
  ------------------
 1005|      0|                load_dir = ossl_safe_getenv("OPENSSL_MODULES");
 1006|      0|                if (load_dir == NULL)
  ------------------
  |  Branch (1006:21): [True: 0, False: 0]
  ------------------
 1007|      0|                    load_dir = ossl_get_modulesdir();
 1008|      0|            }
 1009|       |
 1010|      0|            DSO_ctrl(prov->module, DSO_CTRL_SET_FLAGS,
  ------------------
  |  |   19|      0|#define DSO_CTRL_SET_FLAGS 2
  ------------------
 1011|      0|                DSO_FLAG_NAME_TRANSLATION_EXT_ONLY, NULL);
  ------------------
  |  |   41|      0|#define DSO_FLAG_NAME_TRANSLATION_EXT_ONLY 0x02
  ------------------
 1012|       |
 1013|      0|            module_path = prov->path;
 1014|      0|            if (module_path == NULL)
  ------------------
  |  Branch (1014:17): [True: 0, False: 0]
  ------------------
 1015|      0|                module_path = allocated_path = DSO_convert_filename(prov->module, prov->name);
 1016|      0|            if (module_path != NULL)
  ------------------
  |  Branch (1016:17): [True: 0, False: 0]
  ------------------
 1017|      0|                merged_path = DSO_merge(prov->module, module_path, load_dir);
 1018|       |
 1019|      0|            if (merged_path == NULL
  ------------------
  |  Branch (1019:17): [True: 0, False: 0]
  ------------------
 1020|      0|                || (DSO_load(prov->module, merged_path, NULL, 0)) == NULL) {
  ------------------
  |  Branch (1020:20): [True: 0, False: 0]
  ------------------
 1021|      0|                DSO_free(prov->module);
 1022|      0|                prov->module = NULL;
 1023|      0|            }
 1024|       |
 1025|      0|            OPENSSL_free(merged_path);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
 1026|      0|            OPENSSL_free(allocated_path);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
 1027|      0|            OPENSSL_free(allocated_load_dir);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
 1028|      0|        }
 1029|       |
 1030|      0|        if (prov->module == NULL) {
  ------------------
  |  Branch (1030:13): [True: 0, False: 0]
  ------------------
 1031|       |            /* DSO has already recorded errors, this is just a tracepoint */
 1032|      0|            ERR_raise_data(ERR_LIB_CRYPTO, ERR_R_DSO_LIB,
  ------------------
  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|      0|        ERR_set_error)
  ------------------
                          ERR_raise_data(ERR_LIB_CRYPTO, ERR_R_DSO_LIB,
  ------------------
  |  |   68|      0|#define ERR_LIB_CRYPTO 15
  ------------------
                          ERR_raise_data(ERR_LIB_CRYPTO, ERR_R_DSO_LIB,
  ------------------
  |  |  289|      0|#define ERR_R_DSO_LIB (ERR_LIB_DSO /* 37 */ | ERR_RFLAG_COMMON)
  |  |  ------------------
  |  |  |  |   81|      0|#define ERR_LIB_DSO 37
  |  |  ------------------
  |  |               #define ERR_R_DSO_LIB (ERR_LIB_DSO /* 37 */ | ERR_RFLAG_COMMON)
  |  |  ------------------
  |  |  |  |  220|      0|#define ERR_RFLAG_COMMON (0x2 << ERR_RFLAGS_OFFSET)
  |  |  |  |  ------------------
  |  |  |  |  |  |  211|      0|#define ERR_RFLAGS_OFFSET 18L
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1033|      0|                "name=%s", prov->name);
 1034|      0|            goto end;
 1035|      0|        }
 1036|       |
 1037|      0|        prov->init_function = (OSSL_provider_init_fn *)
 1038|      0|            DSO_bind_func(prov->module, "OSSL_provider_init");
 1039|      0|#endif
 1040|      0|    }
 1041|       |
 1042|       |    /* Check for and call the initialise function for the provider. */
 1043|      4|    if (prov->init_function == NULL) {
  ------------------
  |  Branch (1043:9): [True: 0, False: 4]
  ------------------
 1044|      0|        ERR_raise_data(ERR_LIB_CRYPTO, ERR_R_UNSUPPORTED,
  ------------------
  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|      0|        ERR_set_error)
  ------------------
                      ERR_raise_data(ERR_LIB_CRYPTO, ERR_R_UNSUPPORTED,
  ------------------
  |  |   68|      0|#define ERR_LIB_CRYPTO 15
  ------------------
                      ERR_raise_data(ERR_LIB_CRYPTO, ERR_R_UNSUPPORTED,
  ------------------
  |  |  317|      0|#define ERR_R_UNSUPPORTED (268 | ERR_RFLAG_COMMON)
  |  |  ------------------
  |  |  |  |  220|      0|#define ERR_RFLAG_COMMON (0x2 << ERR_RFLAGS_OFFSET)
  |  |  |  |  ------------------
  |  |  |  |  |  |  211|      0|#define ERR_RFLAGS_OFFSET 18L
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1045|      0|            "name=%s, provider has no provider init function",
 1046|      0|            prov->name);
 1047|      0|        goto end;
 1048|      0|    }
 1049|      4|#ifndef FIPS_MODULE
 1050|      4|    OSSL_TRACE_BEGIN(PROVIDER)
  ------------------
  |  |  219|      4|    do {                           \
  |  |  220|      4|        BIO *trc_out = NULL;       \
  |  |  221|      4|        if (0)
  |  |  ------------------
  |  |  |  Branch (221:13): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1051|      0|    {
 1052|      0|        BIO_printf(trc_out,
 1053|      0|            "(provider %s) initializing\n", prov->name);
 1054|      0|    }
 1055|      4|    OSSL_TRACE_END(PROVIDER);
  ------------------
  |  |  224|      4|    }                            \
  |  |  225|      4|    while (0)
  |  |  ------------------
  |  |  |  Branch (225:12): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1056|      4|#endif
 1057|       |
 1058|      4|    if (!prov->init_function((OSSL_CORE_HANDLE *)prov, core_dispatch,
  ------------------
  |  Branch (1058:9): [True: 0, False: 4]
  ------------------
 1059|      4|            &provider_dispatch, &tmp_provctx)) {
 1060|      0|        ERR_raise_data(ERR_LIB_CRYPTO, ERR_R_INIT_FAIL,
  ------------------
  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|      0|        ERR_set_error)
  ------------------
                      ERR_raise_data(ERR_LIB_CRYPTO, ERR_R_INIT_FAIL,
  ------------------
  |  |   68|      0|#define ERR_LIB_CRYPTO 15
  ------------------
                      ERR_raise_data(ERR_LIB_CRYPTO, ERR_R_INIT_FAIL,
  ------------------
  |  |  310|      0|#define ERR_R_INIT_FAIL (261 | ERR_R_FATAL)
  |  |  ------------------
  |  |  |  |  304|      0|#define ERR_R_FATAL (ERR_RFLAG_FATAL | ERR_RFLAG_COMMON)
  |  |  |  |  ------------------
  |  |  |  |  |  |  219|      0|#define ERR_RFLAG_FATAL (0x1 << ERR_RFLAGS_OFFSET)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  211|      0|#define ERR_RFLAGS_OFFSET 18L
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ERR_R_FATAL (ERR_RFLAG_FATAL | ERR_RFLAG_COMMON)
  |  |  |  |  ------------------
  |  |  |  |  |  |  220|      0|#define ERR_RFLAG_COMMON (0x2 << ERR_RFLAGS_OFFSET)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  211|      0|#define ERR_RFLAGS_OFFSET 18L
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1061|      0|            "name=%s", prov->name);
 1062|      0|        goto end;
 1063|      0|    }
 1064|      4|    prov->provctx = tmp_provctx;
 1065|      4|    prov->dispatch = provider_dispatch;
 1066|       |
 1067|      4|    if (provider_dispatch != NULL) {
  ------------------
  |  Branch (1067:9): [True: 4, False: 0]
  ------------------
 1068|     22|        for (; provider_dispatch->function_id != 0; provider_dispatch++) {
  ------------------
  |  Branch (1068:16): [True: 18, False: 4]
  ------------------
 1069|     18|            switch (provider_dispatch->function_id) {
  ------------------
  |  Branch (1069:21): [True: 18, False: 0]
  ------------------
 1070|      4|            case OSSL_FUNC_PROVIDER_TEARDOWN:
  ------------------
  |  |  234|      4|#define OSSL_FUNC_PROVIDER_TEARDOWN 1024
  ------------------
  |  Branch (1070:13): [True: 4, False: 14]
  ------------------
 1071|      4|                prov->teardown = OSSL_FUNC_provider_teardown(provider_dispatch);
 1072|      4|                break;
 1073|      4|            case OSSL_FUNC_PROVIDER_GETTABLE_PARAMS:
  ------------------
  |  |  236|      4|#define OSSL_FUNC_PROVIDER_GETTABLE_PARAMS 1025
  ------------------
  |  Branch (1073:13): [True: 4, False: 14]
  ------------------
 1074|      4|                prov->gettable_params = OSSL_FUNC_provider_gettable_params(provider_dispatch);
 1075|      4|                break;
 1076|      4|            case OSSL_FUNC_PROVIDER_GET_PARAMS:
  ------------------
  |  |  239|      4|#define OSSL_FUNC_PROVIDER_GET_PARAMS 1026
  ------------------
  |  Branch (1076:13): [True: 4, False: 14]
  ------------------
 1077|      4|                prov->get_params = OSSL_FUNC_provider_get_params(provider_dispatch);
 1078|      4|                break;
 1079|      0|            case OSSL_FUNC_PROVIDER_SELF_TEST:
  ------------------
  |  |  252|      0|#define OSSL_FUNC_PROVIDER_SELF_TEST 1031
  ------------------
  |  Branch (1079:13): [True: 0, False: 18]
  ------------------
 1080|      0|                prov->self_test = OSSL_FUNC_provider_self_test(provider_dispatch);
 1081|      0|                break;
 1082|      0|            case OSSL_FUNC_PROVIDER_RANDOM_BYTES:
  ------------------
  |  |  254|      0|#define OSSL_FUNC_PROVIDER_RANDOM_BYTES 1032
  ------------------
  |  Branch (1082:13): [True: 0, False: 18]
  ------------------
 1083|      0|                prov->random_bytes = OSSL_FUNC_provider_random_bytes(provider_dispatch);
 1084|      0|                break;
 1085|      2|            case OSSL_FUNC_PROVIDER_GET_CAPABILITIES:
  ------------------
  |  |  250|      2|#define OSSL_FUNC_PROVIDER_GET_CAPABILITIES 1030
  ------------------
  |  Branch (1085:13): [True: 2, False: 16]
  ------------------
 1086|      2|                prov->get_capabilities = OSSL_FUNC_provider_get_capabilities(provider_dispatch);
 1087|      2|                break;
 1088|      4|            case OSSL_FUNC_PROVIDER_QUERY_OPERATION:
  ------------------
  |  |  241|      4|#define OSSL_FUNC_PROVIDER_QUERY_OPERATION 1027
  ------------------
  |  Branch (1088:13): [True: 4, False: 14]
  ------------------
 1089|      4|                prov->query_operation = OSSL_FUNC_provider_query_operation(provider_dispatch);
 1090|      4|                break;
 1091|      0|            case OSSL_FUNC_PROVIDER_UNQUERY_OPERATION:
  ------------------
  |  |  244|      0|#define OSSL_FUNC_PROVIDER_UNQUERY_OPERATION 1028
  ------------------
  |  Branch (1091:13): [True: 0, False: 18]
  ------------------
 1092|      0|                prov->unquery_operation = OSSL_FUNC_provider_unquery_operation(provider_dispatch);
 1093|      0|                break;
 1094|      0|#ifndef OPENSSL_NO_ERR
 1095|      0|#ifndef FIPS_MODULE
 1096|      0|            case OSSL_FUNC_PROVIDER_GET_REASON_STRINGS:
  ------------------
  |  |  247|      0|#define OSSL_FUNC_PROVIDER_GET_REASON_STRINGS 1029
  ------------------
  |  Branch (1096:13): [True: 0, False: 18]
  ------------------
 1097|      0|                p_get_reason_strings = OSSL_FUNC_provider_get_reason_strings(provider_dispatch);
 1098|      0|                break;
 1099|     18|#endif
 1100|     18|#endif
 1101|     18|            }
 1102|     18|        }
 1103|      4|    }
 1104|       |
 1105|      4|#ifndef OPENSSL_NO_ERR
 1106|      4|#ifndef FIPS_MODULE
 1107|      4|    if (p_get_reason_strings != NULL) {
  ------------------
  |  Branch (1107:9): [True: 0, False: 4]
  ------------------
 1108|      0|        const OSSL_ITEM *reasonstrings = p_get_reason_strings(prov->provctx);
 1109|      0|        size_t cnt, cnt2;
 1110|       |
 1111|       |        /*
 1112|       |         * ERR_load_strings() handles ERR_STRING_DATA rather than OSSL_ITEM,
 1113|       |         * although they are essentially the same type.
 1114|       |         * Furthermore, ERR_load_strings() patches the array's error number
 1115|       |         * with the error library number, so we need to make a copy of that
 1116|       |         * array either way.
 1117|       |         */
 1118|      0|        cnt = 0;
 1119|      0|        while (reasonstrings[cnt].id != 0) {
  ------------------
  |  Branch (1119:16): [True: 0, False: 0]
  ------------------
 1120|      0|            if (ERR_GET_LIB(reasonstrings[cnt].id) != 0)
  ------------------
  |  Branch (1120:17): [True: 0, False: 0]
  ------------------
 1121|      0|                goto end;
 1122|      0|            cnt++;
 1123|      0|        }
 1124|      0|        cnt++; /* One for the terminating item */
 1125|       |
 1126|       |        /* Allocate one extra item for the "library" name */
 1127|      0|        prov->error_strings = OPENSSL_calloc(cnt + 1, sizeof(ERR_STRING_DATA));
  ------------------
  |  |  117|      0|    CRYPTO_calloc(num, size, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_calloc(num, size, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
 1128|      0|        if (prov->error_strings == NULL)
  ------------------
  |  Branch (1128:13): [True: 0, False: 0]
  ------------------
 1129|      0|            goto end;
 1130|       |
 1131|       |        /*
 1132|       |         * Set the "library" name.
 1133|       |         */
 1134|      0|        prov->error_strings[0].error = ERR_PACK(prov->error_lib, 0, 0);
  ------------------
  |  |  262|      0|    ((((unsigned long)(lib) & ERR_LIB_MASK) << ERR_LIB_OFFSET) | (((unsigned long)(reason) & ERR_REASON_MASK)))
  |  |  ------------------
  |  |  |  |  210|      0|#define ERR_LIB_MASK 0xFF
  |  |  ------------------
  |  |                   ((((unsigned long)(lib) & ERR_LIB_MASK) << ERR_LIB_OFFSET) | (((unsigned long)(reason) & ERR_REASON_MASK)))
  |  |  ------------------
  |  |  |  |  209|      0|#define ERR_LIB_OFFSET 23L
  |  |  ------------------
  |  |                   ((((unsigned long)(lib) & ERR_LIB_MASK) << ERR_LIB_OFFSET) | (((unsigned long)(reason) & ERR_REASON_MASK)))
  |  |  ------------------
  |  |  |  |  213|      0|#define ERR_REASON_MASK 0X7FFFFF
  |  |  ------------------
  ------------------
 1135|      0|        prov->error_strings[0].string = prov->name;
 1136|       |        /*
 1137|       |         * Copy reasonstrings item 0..cnt-1 to prov->error_strings positions
 1138|       |         * 1..cnt.
 1139|       |         */
 1140|      0|        for (cnt2 = 1; cnt2 <= cnt; cnt2++) {
  ------------------
  |  Branch (1140:24): [True: 0, False: 0]
  ------------------
 1141|      0|            prov->error_strings[cnt2].error = (int)reasonstrings[cnt2 - 1].id;
 1142|      0|            prov->error_strings[cnt2].string = reasonstrings[cnt2 - 1].ptr;
 1143|      0|        }
 1144|       |
 1145|      0|        ERR_load_strings(prov->error_lib, prov->error_strings);
 1146|      0|    }
 1147|      4|#endif
 1148|      4|#endif
 1149|       |
 1150|       |    /* With this flag set, this provider has become fully "loaded". */
 1151|      4|    prov->flag_initialized = 1;
 1152|      4|    ok = 1;
 1153|       |
 1154|      4|end:
 1155|      4|    return ok;
 1156|      4|}
provider_core.c:core_get_libctx:
 2352|      3|{
 2353|       |    /*
 2354|       |     * We created this object originally and we know it is actually an
 2355|       |     * OSSL_PROVIDER *, so the cast is safe
 2356|       |     */
 2357|      3|    OSSL_PROVIDER *prov = (OSSL_PROVIDER *)handle;
 2358|       |
 2359|       |    /*
 2360|       |     * Using ossl_provider_libctx would be wrong as that returns
 2361|       |     * NULL for |prov| == NULL and NULL libctx has a special meaning
 2362|       |     * that does not apply here. Here |prov| == NULL can happen only in
 2363|       |     * case of a coding error.
 2364|       |     */
 2365|       |    assert(prov != NULL);
 2366|      3|    return (OPENSSL_CORE_CTX *)prov->libctx;
 2367|      3|}
provider_core.c:ossl_provider_register_child_cb:
 2132|      1|{
 2133|       |    /*
 2134|       |     * This is really an OSSL_PROVIDER that we created and cast to
 2135|       |     * OSSL_CORE_HANDLE originally. Therefore it is safe to cast it back.
 2136|       |     */
 2137|      1|    OSSL_PROVIDER *thisprov = (OSSL_PROVIDER *)handle;
 2138|      1|    OSSL_PROVIDER *prov;
 2139|      1|    OSSL_LIB_CTX *libctx = thisprov->libctx;
 2140|      1|    struct provider_store_st *store = NULL;
 2141|      1|    int ret = 0, i, max;
 2142|      1|    OSSL_PROVIDER_CHILD_CB *child_cb;
 2143|      1|    char *propsstr = NULL;
 2144|       |
 2145|      1|    if ((store = get_provider_store(libctx)) == NULL)
  ------------------
  |  Branch (2145:9): [True: 0, False: 1]
  ------------------
 2146|      0|        return 0;
 2147|       |
 2148|      1|    child_cb = OPENSSL_malloc(sizeof(*child_cb));
  ------------------
  |  |  111|      1|    CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
 2149|      1|    if (child_cb == NULL)
  ------------------
  |  Branch (2149:9): [True: 0, False: 1]
  ------------------
 2150|      0|        return 0;
 2151|      1|    child_cb->prov = thisprov;
 2152|      1|    child_cb->create_cb = create_cb;
 2153|      1|    child_cb->remove_cb = remove_cb;
 2154|      1|    child_cb->global_props_cb = global_props_cb;
 2155|      1|    child_cb->cbdata = cbdata;
 2156|       |
 2157|      1|    if (!CRYPTO_THREAD_write_lock(store->lock)) {
  ------------------
  |  Branch (2157:9): [True: 0, False: 1]
  ------------------
 2158|      0|        OPENSSL_free(child_cb);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
 2159|      0|        return 0;
 2160|      0|    }
 2161|      1|    propsstr = evp_get_global_properties_str(libctx, 0);
 2162|       |
 2163|      1|    if (propsstr != NULL) {
  ------------------
  |  Branch (2163:9): [True: 1, False: 0]
  ------------------
 2164|      1|        global_props_cb(propsstr, cbdata);
 2165|      1|        OPENSSL_free(propsstr);
  ------------------
  |  |  136|      1|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
 2166|      1|    }
 2167|      1|    max = sk_OSSL_PROVIDER_num(store->providers);
 2168|      2|    for (i = 0; i < max; i++) {
  ------------------
  |  Branch (2168:17): [True: 1, False: 1]
  ------------------
 2169|      1|        int activated;
 2170|       |
 2171|      1|        prov = sk_OSSL_PROVIDER_value(store->providers, i);
 2172|       |
 2173|      1|        if (!CRYPTO_THREAD_read_lock(prov->flag_lock))
  ------------------
  |  Branch (2173:13): [True: 0, False: 1]
  ------------------
 2174|      0|            break;
 2175|      1|        activated = prov->flag_activated;
 2176|      1|        CRYPTO_THREAD_unlock(prov->flag_lock);
 2177|       |        /*
 2178|       |         * We hold the store lock while calling the user callback. This means
 2179|       |         * that the user callback must be short and simple and not do anything
 2180|       |         * likely to cause a deadlock. We don't hold the flag_lock during this
 2181|       |         * call. In theory this means that another thread could deactivate it
 2182|       |         * while we are calling create. This is ok because the other thread
 2183|       |         * will also call remove_cb, but won't be able to do so until we release
 2184|       |         * the store lock.
 2185|       |         */
 2186|      1|        if (activated && !create_cb((OSSL_CORE_HANDLE *)prov, cbdata))
  ------------------
  |  Branch (2186:13): [True: 1, False: 0]
  |  Branch (2186:26): [True: 0, False: 1]
  ------------------
 2187|      0|            break;
 2188|      1|    }
 2189|      1|    if (i == max) {
  ------------------
  |  Branch (2189:9): [True: 1, False: 0]
  ------------------
 2190|       |        /* Success */
 2191|      1|        ret = sk_OSSL_PROVIDER_CHILD_CB_push(store->child_cbs, child_cb);
 2192|      1|    }
 2193|      1|    if (i != max || ret <= 0) {
  ------------------
  |  Branch (2193:9): [True: 0, False: 1]
  |  Branch (2193:21): [True: 0, False: 1]
  ------------------
 2194|       |        /* Failed during creation. Remove everything we just added */
 2195|      0|        for (; i >= 0; i--) {
  ------------------
  |  Branch (2195:16): [True: 0, False: 0]
  ------------------
 2196|      0|            prov = sk_OSSL_PROVIDER_value(store->providers, i);
 2197|      0|            remove_cb((OSSL_CORE_HANDLE *)prov, cbdata);
 2198|      0|        }
 2199|      0|        OPENSSL_free(child_cb);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
 2200|      0|        ret = 0;
 2201|      0|    }
 2202|      1|    CRYPTO_THREAD_unlock(store->lock);
 2203|       |
 2204|      1|    return ret;
 2205|      1|}
provider_core.c:core_provider_get0_name:
 2522|      2|{
 2523|      2|    return OSSL_PROVIDER_get0_name((const OSSL_PROVIDER *)prov);
 2524|      2|}
provider_core.c:core_provider_get0_provider_ctx:
 2527|      2|{
 2528|      2|    return OSSL_PROVIDER_get0_provider_ctx((const OSSL_PROVIDER *)prov);
 2529|      2|}
provider_core.c:core_provider_get0_dispatch:
 2533|      2|{
 2534|      2|    return OSSL_PROVIDER_get0_dispatch((const OSSL_PROVIDER *)prov);
 2535|      2|}
provider_core.c:provider_flush_store_cache:
 1330|      4|{
 1331|      4|    struct provider_store_st *store;
 1332|      4|    int freeing;
 1333|       |
 1334|      4|    if ((store = get_provider_store(prov->libctx)) == NULL)
  ------------------
  |  Branch (1334:9): [True: 0, False: 4]
  ------------------
 1335|      0|        return 0;
 1336|       |
 1337|      4|    if (!CRYPTO_THREAD_read_lock(store->lock))
  ------------------
  |  Branch (1337:9): [True: 0, False: 4]
  ------------------
 1338|      0|        return 0;
 1339|      4|    freeing = store->freeing;
 1340|      4|    CRYPTO_THREAD_unlock(store->lock);
 1341|       |
 1342|      4|    if (!freeing) {
  ------------------
  |  Branch (1342:9): [True: 4, False: 0]
  ------------------
 1343|      4|        int acc
 1344|      4|            = evp_method_store_cache_flush(prov->libctx)
 1345|      4|#ifndef FIPS_MODULE
 1346|      4|            + ossl_encoder_store_cache_flush(prov->libctx)
 1347|      4|            + ossl_decoder_store_cache_flush(prov->libctx)
 1348|      4|            + ossl_store_loader_store_cache_flush(prov->libctx)
 1349|      4|#endif
 1350|      4|            ;
 1351|       |
 1352|      4|#ifndef FIPS_MODULE
 1353|      4|        return acc == 4;
 1354|       |#else
 1355|       |        return acc == 1;
 1356|       |#endif
 1357|      4|    }
 1358|      0|    return 1;
 1359|      4|}
provider_core.c:provider_activate_fallbacks:
 1442|    511|{
 1443|    511|    int use_fallbacks;
 1444|    511|    int activated_fallback_count = 0;
 1445|    511|    int ret = 0;
 1446|    511|    const OSSL_PROVIDER_INFO *p;
 1447|       |
 1448|    511|    if (!CRYPTO_THREAD_read_lock(store->lock))
  ------------------
  |  Branch (1448:9): [True: 0, False: 511]
  ------------------
 1449|      0|        return 0;
 1450|    511|    use_fallbacks = store->use_fallbacks;
 1451|    511|    CRYPTO_THREAD_unlock(store->lock);
 1452|    511|    if (!use_fallbacks)
  ------------------
  |  Branch (1452:9): [True: 511, False: 0]
  ------------------
 1453|    511|        return 1;
 1454|       |
 1455|      0|    if (!CRYPTO_THREAD_write_lock(store->lock))
  ------------------
  |  Branch (1455:9): [True: 0, False: 0]
  ------------------
 1456|      0|        return 0;
 1457|       |    /* Check again, just in case another thread changed it */
 1458|      0|    use_fallbacks = store->use_fallbacks;
 1459|      0|    if (!use_fallbacks) {
  ------------------
  |  Branch (1459:9): [True: 0, False: 0]
  ------------------
 1460|      0|        CRYPTO_THREAD_unlock(store->lock);
 1461|      0|        return 1;
 1462|      0|    }
 1463|       |
 1464|      0|    for (p = ossl_predefined_providers; p->name != NULL; p++) {
  ------------------
  |  Branch (1464:41): [True: 0, False: 0]
  ------------------
 1465|      0|        OSSL_PROVIDER *prov = NULL;
 1466|      0|        OSSL_PROVIDER_INFO *info = store->provinfo;
 1467|      0|        STACK_OF(INFOPAIR) *params = NULL;
  ------------------
  |  |   33|      0|#define STACK_OF(type) struct stack_st_##type
  ------------------
 1468|      0|        size_t i;
 1469|       |
 1470|      0|        if (!p->is_fallback)
  ------------------
  |  Branch (1470:13): [True: 0, False: 0]
  ------------------
 1471|      0|            continue;
 1472|       |
 1473|      0|        for (i = 0; i < store->numprovinfo; info++, i++) {
  ------------------
  |  Branch (1473:21): [True: 0, False: 0]
  ------------------
 1474|      0|            if (strcmp(info->name, p->name) != 0)
  ------------------
  |  Branch (1474:17): [True: 0, False: 0]
  ------------------
 1475|      0|                continue;
 1476|      0|            params = info->parameters;
 1477|      0|            break;
 1478|      0|        }
 1479|       |
 1480|       |        /*
 1481|       |         * We use the internal constructor directly here,
 1482|       |         * otherwise we get a call loop
 1483|       |         */
 1484|      0|        prov = provider_new(p->name, p->init, params);
 1485|      0|        if (prov == NULL)
  ------------------
  |  Branch (1485:13): [True: 0, False: 0]
  ------------------
 1486|      0|            goto err;
 1487|      0|        prov->libctx = store->libctx;
 1488|      0|#ifndef FIPS_MODULE
 1489|      0|        prov->error_lib = ERR_get_next_error_library();
 1490|      0|#endif
 1491|       |
 1492|       |        /*
 1493|       |         * We are calling provider_activate while holding the store lock. This
 1494|       |         * means the init function will be called while holding a lock. Normally
 1495|       |         * we try to avoid calling a user callback while holding a lock.
 1496|       |         * However, fallbacks are never third party providers so we accept this.
 1497|       |         */
 1498|      0|        if (provider_activate(prov, 0, 0) < 0) {
  ------------------
  |  Branch (1498:13): [True: 0, False: 0]
  ------------------
 1499|      0|            ossl_provider_free(prov);
 1500|      0|            goto err;
 1501|      0|        }
 1502|      0|        prov->store = store;
 1503|      0|        if (sk_OSSL_PROVIDER_push(store->providers, prov) == 0) {
  ------------------
  |  Branch (1503:13): [True: 0, False: 0]
  ------------------
 1504|      0|            ossl_provider_free(prov);
 1505|      0|            goto err;
 1506|      0|        }
 1507|      0|        activated_fallback_count++;
 1508|      0|    }
 1509|       |
 1510|      0|    if (activated_fallback_count > 0) {
  ------------------
  |  Branch (1510:9): [True: 0, False: 0]
  ------------------
 1511|      0|        store->use_fallbacks = 0;
 1512|      0|        ret = 1;
 1513|      0|    }
 1514|      0|err:
 1515|      0|    CRYPTO_THREAD_unlock(store->lock);
 1516|      0|    return ret;
 1517|      0|}

ossl_err_load_RAND_strings:
  105|      1|{
  106|      1|#ifndef OPENSSL_NO_ERR
  107|      1|    if (ERR_reason_error_string(RAND_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (107:9): [True: 1, False: 0]
  ------------------
  108|      1|        ERR_load_strings_const(RAND_str_reasons);
  109|      1|#endif
  110|      1|    return 1;
  111|      1|}

ossl_rand_ctx_new:
  454|      3|{
  455|      3|    RAND_GLOBAL *dgbl = OPENSSL_zalloc(sizeof(*dgbl));
  ------------------
  |  |  113|      3|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  456|       |
  457|      3|    if (dgbl == NULL)
  ------------------
  |  Branch (457:9): [True: 0, False: 3]
  ------------------
  458|      0|        return NULL;
  459|       |
  460|      3|#ifndef FIPS_MODULE
  461|       |    /*
  462|       |     * We need to ensure that base libcrypto thread handling has been
  463|       |     * initialised.
  464|       |     */
  465|      3|    OPENSSL_init_crypto(OPENSSL_INIT_BASE_ONLY, NULL);
  ------------------
  |  |   31|      3|#define OPENSSL_INIT_BASE_ONLY 0x00040000L
  ------------------
  466|       |
  467|       |    /* Prepopulate the random provider name */
  468|      3|    dgbl->random_provider_name = OPENSSL_strdup(random_provider_fips_name);
  ------------------
  |  |  140|      3|    CRYPTO_strdup(str, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_strdup(str, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  469|      3|    if (dgbl->random_provider_name == NULL)
  ------------------
  |  Branch (469:9): [True: 0, False: 3]
  ------------------
  470|      0|        goto err0;
  471|      3|#endif
  472|       |
  473|      3|    dgbl->lock = CRYPTO_THREAD_lock_new();
  474|      3|    if (dgbl->lock == NULL)
  ------------------
  |  Branch (474:9): [True: 0, False: 3]
  ------------------
  475|      0|        goto err1;
  476|       |
  477|      3|    return dgbl;
  478|       |
  479|      0|err1:
  480|      0|    CRYPTO_THREAD_lock_free(dgbl->lock);
  481|      0|#ifndef FIPS_MODULE
  482|      0|err0:
  483|      0|    OPENSSL_free(dgbl->random_provider_name);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  484|      0|#endif
  485|      0|    OPENSSL_free(dgbl);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  486|       |    return NULL;
  487|      0|}

RIPEMD160_Init:
   28|    134|{
   29|    134|    memset(c, 0, sizeof(*c));
   30|    134|    c->A = RIPEMD160_A;
  ------------------
  |  |   67|    134|#define RIPEMD160_A 0x67452301L
  ------------------
   31|    134|    c->B = RIPEMD160_B;
  ------------------
  |  |   68|    134|#define RIPEMD160_B 0xEFCDAB89L
  ------------------
   32|    134|    c->C = RIPEMD160_C;
  ------------------
  |  |   69|    134|#define RIPEMD160_C 0x98BADCFEL
  ------------------
   33|    134|    c->D = RIPEMD160_D;
  ------------------
  |  |   70|    134|#define RIPEMD160_D 0x10325476L
  ------------------
   34|    134|    c->E = RIPEMD160_E;
  ------------------
  |  |   71|    134|#define RIPEMD160_E 0xC3D2E1F0L
  ------------------
   35|    134|    return 1;
   36|    134|}
ripemd160_block_data_order:
   43|    226|{
   44|    226|    const unsigned char *data = p;
   45|    226|    register unsigned MD32_REG_T A, B, C, D, E;
   46|    226|    unsigned MD32_REG_T a, b, c, d, e, l;
   47|    226|#ifndef MD32_XARRAY
   48|       |    /* See comment in crypto/sha/sha_local.h for details. */
   49|    226|    unsigned MD32_REG_T XX0, XX1, XX2, XX3, XX4, XX5, XX6, XX7,
   50|    226|        XX8, XX9, XX10, XX11, XX12, XX13, XX14, XX15;
   51|    226|#define X(i) XX##i
   52|       |#else
   53|       |    RIPEMD160_LONG XX[16];
   54|       |#define X(i) XX[i]
   55|       |#endif
   56|       |
   57|  1.75M|    for (; num--;) {
  ------------------
  |  Branch (57:12): [True: 1.75M, False: 226]
  ------------------
   58|       |
   59|  1.75M|        A = ctx->A;
   60|  1.75M|        B = ctx->B;
   61|  1.75M|        C = ctx->C;
   62|  1.75M|        D = ctx->D;
   63|  1.75M|        E = ctx->E;
   64|       |
   65|  1.75M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.75M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.75M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.75M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.75M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   66|  1.75M|        X(0) = l;
  ------------------
  |  |   51|  1.75M|#define X(i) XX##i
  ------------------
   67|  1.75M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.75M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.75M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.75M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.75M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   68|  1.75M|        X(1) = l;
  ------------------
  |  |   51|  1.75M|#define X(i) XX##i
  ------------------
   69|  1.75M|        RIP1(A, B, C, D, E, WL00, SL00);
  ------------------
  |  |   76|  1.75M|    {                             \
  |  |   77|  1.75M|        a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   61|  1.75M|#define F1(x, y, z) ((x) ^ (y) ^ (z))
  |  |  ------------------
  |  |                       a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   78|  1.75M|        a = ROTATE(a, s) + e;     \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   79|  1.75M|        c = ROTATE(c, 10);        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   80|  1.75M|    }
  ------------------
   70|  1.75M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.75M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.75M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.75M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.75M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   71|  1.75M|        X(2) = l;
  ------------------
  |  |   51|  1.75M|#define X(i) XX##i
  ------------------
   72|  1.75M|        RIP1(E, A, B, C, D, WL01, SL01);
  ------------------
  |  |   76|  1.75M|    {                             \
  |  |   77|  1.75M|        a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   61|  1.75M|#define F1(x, y, z) ((x) ^ (y) ^ (z))
  |  |  ------------------
  |  |                       a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   78|  1.75M|        a = ROTATE(a, s) + e;     \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   79|  1.75M|        c = ROTATE(c, 10);        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   80|  1.75M|    }
  ------------------
   73|  1.75M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.75M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.75M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.75M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.75M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   74|  1.75M|        X(3) = l;
  ------------------
  |  |   51|  1.75M|#define X(i) XX##i
  ------------------
   75|  1.75M|        RIP1(D, E, A, B, C, WL02, SL02);
  ------------------
  |  |   76|  1.75M|    {                             \
  |  |   77|  1.75M|        a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   61|  1.75M|#define F1(x, y, z) ((x) ^ (y) ^ (z))
  |  |  ------------------
  |  |                       a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   78|  1.75M|        a = ROTATE(a, s) + e;     \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   79|  1.75M|        c = ROTATE(c, 10);        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   80|  1.75M|    }
  ------------------
   76|  1.75M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.75M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.75M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.75M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.75M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   77|  1.75M|        X(4) = l;
  ------------------
  |  |   51|  1.75M|#define X(i) XX##i
  ------------------
   78|  1.75M|        RIP1(C, D, E, A, B, WL03, SL03);
  ------------------
  |  |   76|  1.75M|    {                             \
  |  |   77|  1.75M|        a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   61|  1.75M|#define F1(x, y, z) ((x) ^ (y) ^ (z))
  |  |  ------------------
  |  |                       a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   78|  1.75M|        a = ROTATE(a, s) + e;     \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   79|  1.75M|        c = ROTATE(c, 10);        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   80|  1.75M|    }
  ------------------
   79|  1.75M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.75M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.75M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.75M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.75M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   80|  1.75M|        X(5) = l;
  ------------------
  |  |   51|  1.75M|#define X(i) XX##i
  ------------------
   81|  1.75M|        RIP1(B, C, D, E, A, WL04, SL04);
  ------------------
  |  |   76|  1.75M|    {                             \
  |  |   77|  1.75M|        a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   61|  1.75M|#define F1(x, y, z) ((x) ^ (y) ^ (z))
  |  |  ------------------
  |  |                       a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   78|  1.75M|        a = ROTATE(a, s) + e;     \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   79|  1.75M|        c = ROTATE(c, 10);        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   80|  1.75M|    }
  ------------------
   82|  1.75M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.75M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.75M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.75M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.75M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   83|  1.75M|        X(6) = l;
  ------------------
  |  |   51|  1.75M|#define X(i) XX##i
  ------------------
   84|  1.75M|        RIP1(A, B, C, D, E, WL05, SL05);
  ------------------
  |  |   76|  1.75M|    {                             \
  |  |   77|  1.75M|        a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   61|  1.75M|#define F1(x, y, z) ((x) ^ (y) ^ (z))
  |  |  ------------------
  |  |                       a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   78|  1.75M|        a = ROTATE(a, s) + e;     \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   79|  1.75M|        c = ROTATE(c, 10);        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   80|  1.75M|    }
  ------------------
   85|  1.75M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.75M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.75M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.75M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.75M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   86|  1.75M|        X(7) = l;
  ------------------
  |  |   51|  1.75M|#define X(i) XX##i
  ------------------
   87|  1.75M|        RIP1(E, A, B, C, D, WL06, SL06);
  ------------------
  |  |   76|  1.75M|    {                             \
  |  |   77|  1.75M|        a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   61|  1.75M|#define F1(x, y, z) ((x) ^ (y) ^ (z))
  |  |  ------------------
  |  |                       a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   78|  1.75M|        a = ROTATE(a, s) + e;     \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   79|  1.75M|        c = ROTATE(c, 10);        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   80|  1.75M|    }
  ------------------
   88|  1.75M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.75M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.75M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.75M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.75M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   89|  1.75M|        X(8) = l;
  ------------------
  |  |   51|  1.75M|#define X(i) XX##i
  ------------------
   90|  1.75M|        RIP1(D, E, A, B, C, WL07, SL07);
  ------------------
  |  |   76|  1.75M|    {                             \
  |  |   77|  1.75M|        a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   61|  1.75M|#define F1(x, y, z) ((x) ^ (y) ^ (z))
  |  |  ------------------
  |  |                       a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   78|  1.75M|        a = ROTATE(a, s) + e;     \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   79|  1.75M|        c = ROTATE(c, 10);        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   80|  1.75M|    }
  ------------------
   91|  1.75M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.75M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.75M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.75M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.75M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   92|  1.75M|        X(9) = l;
  ------------------
  |  |   51|  1.75M|#define X(i) XX##i
  ------------------
   93|  1.75M|        RIP1(C, D, E, A, B, WL08, SL08);
  ------------------
  |  |   76|  1.75M|    {                             \
  |  |   77|  1.75M|        a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   61|  1.75M|#define F1(x, y, z) ((x) ^ (y) ^ (z))
  |  |  ------------------
  |  |                       a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   78|  1.75M|        a = ROTATE(a, s) + e;     \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   79|  1.75M|        c = ROTATE(c, 10);        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   80|  1.75M|    }
  ------------------
   94|  1.75M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.75M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.75M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.75M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.75M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   95|  1.75M|        X(10) = l;
  ------------------
  |  |   51|  1.75M|#define X(i) XX##i
  ------------------
   96|  1.75M|        RIP1(B, C, D, E, A, WL09, SL09);
  ------------------
  |  |   76|  1.75M|    {                             \
  |  |   77|  1.75M|        a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   61|  1.75M|#define F1(x, y, z) ((x) ^ (y) ^ (z))
  |  |  ------------------
  |  |                       a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   78|  1.75M|        a = ROTATE(a, s) + e;     \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   79|  1.75M|        c = ROTATE(c, 10);        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   80|  1.75M|    }
  ------------------
   97|  1.75M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.75M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.75M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.75M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.75M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   98|  1.75M|        X(11) = l;
  ------------------
  |  |   51|  1.75M|#define X(i) XX##i
  ------------------
   99|  1.75M|        RIP1(A, B, C, D, E, WL10, SL10);
  ------------------
  |  |   76|  1.75M|    {                             \
  |  |   77|  1.75M|        a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   61|  1.75M|#define F1(x, y, z) ((x) ^ (y) ^ (z))
  |  |  ------------------
  |  |                       a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   78|  1.75M|        a = ROTATE(a, s) + e;     \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   79|  1.75M|        c = ROTATE(c, 10);        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   80|  1.75M|    }
  ------------------
  100|  1.75M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.75M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.75M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.75M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.75M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
  101|  1.75M|        X(12) = l;
  ------------------
  |  |   51|  1.75M|#define X(i) XX##i
  ------------------
  102|  1.75M|        RIP1(E, A, B, C, D, WL11, SL11);
  ------------------
  |  |   76|  1.75M|    {                             \
  |  |   77|  1.75M|        a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   61|  1.75M|#define F1(x, y, z) ((x) ^ (y) ^ (z))
  |  |  ------------------
  |  |                       a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   78|  1.75M|        a = ROTATE(a, s) + e;     \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   79|  1.75M|        c = ROTATE(c, 10);        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   80|  1.75M|    }
  ------------------
  103|  1.75M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.75M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.75M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.75M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.75M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
  104|  1.75M|        X(13) = l;
  ------------------
  |  |   51|  1.75M|#define X(i) XX##i
  ------------------
  105|  1.75M|        RIP1(D, E, A, B, C, WL12, SL12);
  ------------------
  |  |   76|  1.75M|    {                             \
  |  |   77|  1.75M|        a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   61|  1.75M|#define F1(x, y, z) ((x) ^ (y) ^ (z))
  |  |  ------------------
  |  |                       a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   78|  1.75M|        a = ROTATE(a, s) + e;     \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   79|  1.75M|        c = ROTATE(c, 10);        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   80|  1.75M|    }
  ------------------
  106|  1.75M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.75M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.75M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.75M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.75M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
  107|  1.75M|        X(14) = l;
  ------------------
  |  |   51|  1.75M|#define X(i) XX##i
  ------------------
  108|  1.75M|        RIP1(C, D, E, A, B, WL13, SL13);
  ------------------
  |  |   76|  1.75M|    {                             \
  |  |   77|  1.75M|        a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   61|  1.75M|#define F1(x, y, z) ((x) ^ (y) ^ (z))
  |  |  ------------------
  |  |                       a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   78|  1.75M|        a = ROTATE(a, s) + e;     \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   79|  1.75M|        c = ROTATE(c, 10);        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   80|  1.75M|    }
  ------------------
  109|  1.75M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  141|  1.75M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  142|  1.75M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  143|  1.75M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  144|  1.75M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
  110|  1.75M|        X(15) = l;
  ------------------
  |  |   51|  1.75M|#define X(i) XX##i
  ------------------
  111|  1.75M|        RIP1(B, C, D, E, A, WL14, SL14);
  ------------------
  |  |   76|  1.75M|    {                             \
  |  |   77|  1.75M|        a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   61|  1.75M|#define F1(x, y, z) ((x) ^ (y) ^ (z))
  |  |  ------------------
  |  |                       a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   78|  1.75M|        a = ROTATE(a, s) + e;     \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   79|  1.75M|        c = ROTATE(c, 10);        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   80|  1.75M|    }
  ------------------
  112|  1.75M|        RIP1(A, B, C, D, E, WL15, SL15);
  ------------------
  |  |   76|  1.75M|    {                             \
  |  |   77|  1.75M|        a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   61|  1.75M|#define F1(x, y, z) ((x) ^ (y) ^ (z))
  |  |  ------------------
  |  |                       a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   78|  1.75M|        a = ROTATE(a, s) + e;     \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   79|  1.75M|        c = ROTATE(c, 10);        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   80|  1.75M|    }
  ------------------
  113|       |
  114|  1.75M|        RIP2(E, A, B, C, D, WL16, SL16, KL1);
  ------------------
  |  |   83|  1.75M|    {                                \
  |  |   84|  1.75M|        a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   62|  1.75M|#define F2(x, y, z) ((((y) ^ (z)) & (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   85|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   86|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   87|  1.75M|    }
  ------------------
  115|  1.75M|        RIP2(D, E, A, B, C, WL17, SL17, KL1);
  ------------------
  |  |   83|  1.75M|    {                                \
  |  |   84|  1.75M|        a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   62|  1.75M|#define F2(x, y, z) ((((y) ^ (z)) & (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   85|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   86|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   87|  1.75M|    }
  ------------------
  116|  1.75M|        RIP2(C, D, E, A, B, WL18, SL18, KL1);
  ------------------
  |  |   83|  1.75M|    {                                \
  |  |   84|  1.75M|        a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   62|  1.75M|#define F2(x, y, z) ((((y) ^ (z)) & (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   85|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   86|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   87|  1.75M|    }
  ------------------
  117|  1.75M|        RIP2(B, C, D, E, A, WL19, SL19, KL1);
  ------------------
  |  |   83|  1.75M|    {                                \
  |  |   84|  1.75M|        a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   62|  1.75M|#define F2(x, y, z) ((((y) ^ (z)) & (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   85|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   86|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   87|  1.75M|    }
  ------------------
  118|  1.75M|        RIP2(A, B, C, D, E, WL20, SL20, KL1);
  ------------------
  |  |   83|  1.75M|    {                                \
  |  |   84|  1.75M|        a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   62|  1.75M|#define F2(x, y, z) ((((y) ^ (z)) & (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   85|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   86|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   87|  1.75M|    }
  ------------------
  119|  1.75M|        RIP2(E, A, B, C, D, WL21, SL21, KL1);
  ------------------
  |  |   83|  1.75M|    {                                \
  |  |   84|  1.75M|        a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   62|  1.75M|#define F2(x, y, z) ((((y) ^ (z)) & (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   85|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   86|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   87|  1.75M|    }
  ------------------
  120|  1.75M|        RIP2(D, E, A, B, C, WL22, SL22, KL1);
  ------------------
  |  |   83|  1.75M|    {                                \
  |  |   84|  1.75M|        a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   62|  1.75M|#define F2(x, y, z) ((((y) ^ (z)) & (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   85|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   86|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   87|  1.75M|    }
  ------------------
  121|  1.75M|        RIP2(C, D, E, A, B, WL23, SL23, KL1);
  ------------------
  |  |   83|  1.75M|    {                                \
  |  |   84|  1.75M|        a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   62|  1.75M|#define F2(x, y, z) ((((y) ^ (z)) & (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   85|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   86|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   87|  1.75M|    }
  ------------------
  122|  1.75M|        RIP2(B, C, D, E, A, WL24, SL24, KL1);
  ------------------
  |  |   83|  1.75M|    {                                \
  |  |   84|  1.75M|        a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   62|  1.75M|#define F2(x, y, z) ((((y) ^ (z)) & (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   85|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   86|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   87|  1.75M|    }
  ------------------
  123|  1.75M|        RIP2(A, B, C, D, E, WL25, SL25, KL1);
  ------------------
  |  |   83|  1.75M|    {                                \
  |  |   84|  1.75M|        a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   62|  1.75M|#define F2(x, y, z) ((((y) ^ (z)) & (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   85|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   86|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   87|  1.75M|    }
  ------------------
  124|  1.75M|        RIP2(E, A, B, C, D, WL26, SL26, KL1);
  ------------------
  |  |   83|  1.75M|    {                                \
  |  |   84|  1.75M|        a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   62|  1.75M|#define F2(x, y, z) ((((y) ^ (z)) & (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   85|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   86|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   87|  1.75M|    }
  ------------------
  125|  1.75M|        RIP2(D, E, A, B, C, WL27, SL27, KL1);
  ------------------
  |  |   83|  1.75M|    {                                \
  |  |   84|  1.75M|        a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   62|  1.75M|#define F2(x, y, z) ((((y) ^ (z)) & (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   85|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   86|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   87|  1.75M|    }
  ------------------
  126|  1.75M|        RIP2(C, D, E, A, B, WL28, SL28, KL1);
  ------------------
  |  |   83|  1.75M|    {                                \
  |  |   84|  1.75M|        a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   62|  1.75M|#define F2(x, y, z) ((((y) ^ (z)) & (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   85|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   86|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   87|  1.75M|    }
  ------------------
  127|  1.75M|        RIP2(B, C, D, E, A, WL29, SL29, KL1);
  ------------------
  |  |   83|  1.75M|    {                                \
  |  |   84|  1.75M|        a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   62|  1.75M|#define F2(x, y, z) ((((y) ^ (z)) & (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   85|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   86|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   87|  1.75M|    }
  ------------------
  128|  1.75M|        RIP2(A, B, C, D, E, WL30, SL30, KL1);
  ------------------
  |  |   83|  1.75M|    {                                \
  |  |   84|  1.75M|        a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   62|  1.75M|#define F2(x, y, z) ((((y) ^ (z)) & (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   85|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   86|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   87|  1.75M|    }
  ------------------
  129|  1.75M|        RIP2(E, A, B, C, D, WL31, SL31, KL1);
  ------------------
  |  |   83|  1.75M|    {                                \
  |  |   84|  1.75M|        a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   62|  1.75M|#define F2(x, y, z) ((((y) ^ (z)) & (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   85|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   86|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   87|  1.75M|    }
  ------------------
  130|       |
  131|  1.75M|        RIP3(D, E, A, B, C, WL32, SL32, KL2);
  ------------------
  |  |   90|  1.75M|    {                                \
  |  |   91|  1.75M|        a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   63|  1.75M|#define F3(x, y, z) (((~(y)) | (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   92|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   93|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   94|  1.75M|    }
  ------------------
  132|  1.75M|        RIP3(C, D, E, A, B, WL33, SL33, KL2);
  ------------------
  |  |   90|  1.75M|    {                                \
  |  |   91|  1.75M|        a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   63|  1.75M|#define F3(x, y, z) (((~(y)) | (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   92|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   93|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   94|  1.75M|    }
  ------------------
  133|  1.75M|        RIP3(B, C, D, E, A, WL34, SL34, KL2);
  ------------------
  |  |   90|  1.75M|    {                                \
  |  |   91|  1.75M|        a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   63|  1.75M|#define F3(x, y, z) (((~(y)) | (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   92|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   93|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   94|  1.75M|    }
  ------------------
  134|  1.75M|        RIP3(A, B, C, D, E, WL35, SL35, KL2);
  ------------------
  |  |   90|  1.75M|    {                                \
  |  |   91|  1.75M|        a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   63|  1.75M|#define F3(x, y, z) (((~(y)) | (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   92|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   93|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   94|  1.75M|    }
  ------------------
  135|  1.75M|        RIP3(E, A, B, C, D, WL36, SL36, KL2);
  ------------------
  |  |   90|  1.75M|    {                                \
  |  |   91|  1.75M|        a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   63|  1.75M|#define F3(x, y, z) (((~(y)) | (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   92|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   93|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   94|  1.75M|    }
  ------------------
  136|  1.75M|        RIP3(D, E, A, B, C, WL37, SL37, KL2);
  ------------------
  |  |   90|  1.75M|    {                                \
  |  |   91|  1.75M|        a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   63|  1.75M|#define F3(x, y, z) (((~(y)) | (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   92|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   93|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   94|  1.75M|    }
  ------------------
  137|  1.75M|        RIP3(C, D, E, A, B, WL38, SL38, KL2);
  ------------------
  |  |   90|  1.75M|    {                                \
  |  |   91|  1.75M|        a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   63|  1.75M|#define F3(x, y, z) (((~(y)) | (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   92|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   93|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   94|  1.75M|    }
  ------------------
  138|  1.75M|        RIP3(B, C, D, E, A, WL39, SL39, KL2);
  ------------------
  |  |   90|  1.75M|    {                                \
  |  |   91|  1.75M|        a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   63|  1.75M|#define F3(x, y, z) (((~(y)) | (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   92|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   93|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   94|  1.75M|    }
  ------------------
  139|  1.75M|        RIP3(A, B, C, D, E, WL40, SL40, KL2);
  ------------------
  |  |   90|  1.75M|    {                                \
  |  |   91|  1.75M|        a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   63|  1.75M|#define F3(x, y, z) (((~(y)) | (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   92|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   93|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   94|  1.75M|    }
  ------------------
  140|  1.75M|        RIP3(E, A, B, C, D, WL41, SL41, KL2);
  ------------------
  |  |   90|  1.75M|    {                                \
  |  |   91|  1.75M|        a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   63|  1.75M|#define F3(x, y, z) (((~(y)) | (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   92|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   93|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   94|  1.75M|    }
  ------------------
  141|  1.75M|        RIP3(D, E, A, B, C, WL42, SL42, KL2);
  ------------------
  |  |   90|  1.75M|    {                                \
  |  |   91|  1.75M|        a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   63|  1.75M|#define F3(x, y, z) (((~(y)) | (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   92|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   93|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   94|  1.75M|    }
  ------------------
  142|  1.75M|        RIP3(C, D, E, A, B, WL43, SL43, KL2);
  ------------------
  |  |   90|  1.75M|    {                                \
  |  |   91|  1.75M|        a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   63|  1.75M|#define F3(x, y, z) (((~(y)) | (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   92|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   93|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   94|  1.75M|    }
  ------------------
  143|  1.75M|        RIP3(B, C, D, E, A, WL44, SL44, KL2);
  ------------------
  |  |   90|  1.75M|    {                                \
  |  |   91|  1.75M|        a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   63|  1.75M|#define F3(x, y, z) (((~(y)) | (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   92|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   93|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   94|  1.75M|    }
  ------------------
  144|  1.75M|        RIP3(A, B, C, D, E, WL45, SL45, KL2);
  ------------------
  |  |   90|  1.75M|    {                                \
  |  |   91|  1.75M|        a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   63|  1.75M|#define F3(x, y, z) (((~(y)) | (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   92|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   93|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   94|  1.75M|    }
  ------------------
  145|  1.75M|        RIP3(E, A, B, C, D, WL46, SL46, KL2);
  ------------------
  |  |   90|  1.75M|    {                                \
  |  |   91|  1.75M|        a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   63|  1.75M|#define F3(x, y, z) (((~(y)) | (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   92|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   93|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   94|  1.75M|    }
  ------------------
  146|  1.75M|        RIP3(D, E, A, B, C, WL47, SL47, KL2);
  ------------------
  |  |   90|  1.75M|    {                                \
  |  |   91|  1.75M|        a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   63|  1.75M|#define F3(x, y, z) (((~(y)) | (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   92|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   93|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   94|  1.75M|    }
  ------------------
  147|       |
  148|  1.75M|        RIP4(C, D, E, A, B, WL48, SL48, KL3);
  ------------------
  |  |   97|  1.75M|    {                                \
  |  |   98|  1.75M|        a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   64|  1.75M|#define F4(x, y, z) ((((x) ^ (y)) & (z)) ^ (y))
  |  |  ------------------
  |  |                       a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   99|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  100|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  101|  1.75M|    }
  ------------------
  149|  1.75M|        RIP4(B, C, D, E, A, WL49, SL49, KL3);
  ------------------
  |  |   97|  1.75M|    {                                \
  |  |   98|  1.75M|        a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   64|  1.75M|#define F4(x, y, z) ((((x) ^ (y)) & (z)) ^ (y))
  |  |  ------------------
  |  |                       a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   99|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  100|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  101|  1.75M|    }
  ------------------
  150|  1.75M|        RIP4(A, B, C, D, E, WL50, SL50, KL3);
  ------------------
  |  |   97|  1.75M|    {                                \
  |  |   98|  1.75M|        a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   64|  1.75M|#define F4(x, y, z) ((((x) ^ (y)) & (z)) ^ (y))
  |  |  ------------------
  |  |                       a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   99|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  100|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  101|  1.75M|    }
  ------------------
  151|  1.75M|        RIP4(E, A, B, C, D, WL51, SL51, KL3);
  ------------------
  |  |   97|  1.75M|    {                                \
  |  |   98|  1.75M|        a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   64|  1.75M|#define F4(x, y, z) ((((x) ^ (y)) & (z)) ^ (y))
  |  |  ------------------
  |  |                       a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   99|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  100|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  101|  1.75M|    }
  ------------------
  152|  1.75M|        RIP4(D, E, A, B, C, WL52, SL52, KL3);
  ------------------
  |  |   97|  1.75M|    {                                \
  |  |   98|  1.75M|        a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   64|  1.75M|#define F4(x, y, z) ((((x) ^ (y)) & (z)) ^ (y))
  |  |  ------------------
  |  |                       a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   99|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  100|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  101|  1.75M|    }
  ------------------
  153|  1.75M|        RIP4(C, D, E, A, B, WL53, SL53, KL3);
  ------------------
  |  |   97|  1.75M|    {                                \
  |  |   98|  1.75M|        a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   64|  1.75M|#define F4(x, y, z) ((((x) ^ (y)) & (z)) ^ (y))
  |  |  ------------------
  |  |                       a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   99|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  100|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  101|  1.75M|    }
  ------------------
  154|  1.75M|        RIP4(B, C, D, E, A, WL54, SL54, KL3);
  ------------------
  |  |   97|  1.75M|    {                                \
  |  |   98|  1.75M|        a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   64|  1.75M|#define F4(x, y, z) ((((x) ^ (y)) & (z)) ^ (y))
  |  |  ------------------
  |  |                       a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   99|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  100|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  101|  1.75M|    }
  ------------------
  155|  1.75M|        RIP4(A, B, C, D, E, WL55, SL55, KL3);
  ------------------
  |  |   97|  1.75M|    {                                \
  |  |   98|  1.75M|        a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   64|  1.75M|#define F4(x, y, z) ((((x) ^ (y)) & (z)) ^ (y))
  |  |  ------------------
  |  |                       a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   99|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  100|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  101|  1.75M|    }
  ------------------
  156|  1.75M|        RIP4(E, A, B, C, D, WL56, SL56, KL3);
  ------------------
  |  |   97|  1.75M|    {                                \
  |  |   98|  1.75M|        a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   64|  1.75M|#define F4(x, y, z) ((((x) ^ (y)) & (z)) ^ (y))
  |  |  ------------------
  |  |                       a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   99|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  100|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  101|  1.75M|    }
  ------------------
  157|  1.75M|        RIP4(D, E, A, B, C, WL57, SL57, KL3);
  ------------------
  |  |   97|  1.75M|    {                                \
  |  |   98|  1.75M|        a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   64|  1.75M|#define F4(x, y, z) ((((x) ^ (y)) & (z)) ^ (y))
  |  |  ------------------
  |  |                       a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   99|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  100|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  101|  1.75M|    }
  ------------------
  158|  1.75M|        RIP4(C, D, E, A, B, WL58, SL58, KL3);
  ------------------
  |  |   97|  1.75M|    {                                \
  |  |   98|  1.75M|        a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   64|  1.75M|#define F4(x, y, z) ((((x) ^ (y)) & (z)) ^ (y))
  |  |  ------------------
  |  |                       a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   99|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  100|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  101|  1.75M|    }
  ------------------
  159|  1.75M|        RIP4(B, C, D, E, A, WL59, SL59, KL3);
  ------------------
  |  |   97|  1.75M|    {                                \
  |  |   98|  1.75M|        a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   64|  1.75M|#define F4(x, y, z) ((((x) ^ (y)) & (z)) ^ (y))
  |  |  ------------------
  |  |                       a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   99|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  100|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  101|  1.75M|    }
  ------------------
  160|  1.75M|        RIP4(A, B, C, D, E, WL60, SL60, KL3);
  ------------------
  |  |   97|  1.75M|    {                                \
  |  |   98|  1.75M|        a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   64|  1.75M|#define F4(x, y, z) ((((x) ^ (y)) & (z)) ^ (y))
  |  |  ------------------
  |  |                       a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   99|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  100|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  101|  1.75M|    }
  ------------------
  161|  1.75M|        RIP4(E, A, B, C, D, WL61, SL61, KL3);
  ------------------
  |  |   97|  1.75M|    {                                \
  |  |   98|  1.75M|        a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   64|  1.75M|#define F4(x, y, z) ((((x) ^ (y)) & (z)) ^ (y))
  |  |  ------------------
  |  |                       a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   99|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  100|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  101|  1.75M|    }
  ------------------
  162|  1.75M|        RIP4(D, E, A, B, C, WL62, SL62, KL3);
  ------------------
  |  |   97|  1.75M|    {                                \
  |  |   98|  1.75M|        a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   64|  1.75M|#define F4(x, y, z) ((((x) ^ (y)) & (z)) ^ (y))
  |  |  ------------------
  |  |                       a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   99|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  100|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  101|  1.75M|    }
  ------------------
  163|  1.75M|        RIP4(C, D, E, A, B, WL63, SL63, KL3);
  ------------------
  |  |   97|  1.75M|    {                                \
  |  |   98|  1.75M|        a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   64|  1.75M|#define F4(x, y, z) ((((x) ^ (y)) & (z)) ^ (y))
  |  |  ------------------
  |  |                       a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   99|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  100|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  101|  1.75M|    }
  ------------------
  164|       |
  165|  1.75M|        RIP5(B, C, D, E, A, WL64, SL64, KL4);
  ------------------
  |  |  104|  1.75M|    {                                \
  |  |  105|  1.75M|        a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   65|  1.75M|#define F5(x, y, z) (((~(z)) | (y)) ^ (x))
  |  |  ------------------
  |  |                       a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |  106|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  107|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  108|  1.75M|    }
  ------------------
  166|  1.75M|        RIP5(A, B, C, D, E, WL65, SL65, KL4);
  ------------------
  |  |  104|  1.75M|    {                                \
  |  |  105|  1.75M|        a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   65|  1.75M|#define F5(x, y, z) (((~(z)) | (y)) ^ (x))
  |  |  ------------------
  |  |                       a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |  106|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  107|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  108|  1.75M|    }
  ------------------
  167|  1.75M|        RIP5(E, A, B, C, D, WL66, SL66, KL4);
  ------------------
  |  |  104|  1.75M|    {                                \
  |  |  105|  1.75M|        a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   65|  1.75M|#define F5(x, y, z) (((~(z)) | (y)) ^ (x))
  |  |  ------------------
  |  |                       a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |  106|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  107|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  108|  1.75M|    }
  ------------------
  168|  1.75M|        RIP5(D, E, A, B, C, WL67, SL67, KL4);
  ------------------
  |  |  104|  1.75M|    {                                \
  |  |  105|  1.75M|        a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   65|  1.75M|#define F5(x, y, z) (((~(z)) | (y)) ^ (x))
  |  |  ------------------
  |  |                       a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |  106|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  107|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  108|  1.75M|    }
  ------------------
  169|  1.75M|        RIP5(C, D, E, A, B, WL68, SL68, KL4);
  ------------------
  |  |  104|  1.75M|    {                                \
  |  |  105|  1.75M|        a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   65|  1.75M|#define F5(x, y, z) (((~(z)) | (y)) ^ (x))
  |  |  ------------------
  |  |                       a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |  106|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  107|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  108|  1.75M|    }
  ------------------
  170|  1.75M|        RIP5(B, C, D, E, A, WL69, SL69, KL4);
  ------------------
  |  |  104|  1.75M|    {                                \
  |  |  105|  1.75M|        a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   65|  1.75M|#define F5(x, y, z) (((~(z)) | (y)) ^ (x))
  |  |  ------------------
  |  |                       a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |  106|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  107|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  108|  1.75M|    }
  ------------------
  171|  1.75M|        RIP5(A, B, C, D, E, WL70, SL70, KL4);
  ------------------
  |  |  104|  1.75M|    {                                \
  |  |  105|  1.75M|        a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   65|  1.75M|#define F5(x, y, z) (((~(z)) | (y)) ^ (x))
  |  |  ------------------
  |  |                       a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |  106|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  107|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  108|  1.75M|    }
  ------------------
  172|  1.75M|        RIP5(E, A, B, C, D, WL71, SL71, KL4);
  ------------------
  |  |  104|  1.75M|    {                                \
  |  |  105|  1.75M|        a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   65|  1.75M|#define F5(x, y, z) (((~(z)) | (y)) ^ (x))
  |  |  ------------------
  |  |                       a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |  106|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  107|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  108|  1.75M|    }
  ------------------
  173|  1.75M|        RIP5(D, E, A, B, C, WL72, SL72, KL4);
  ------------------
  |  |  104|  1.75M|    {                                \
  |  |  105|  1.75M|        a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   65|  1.75M|#define F5(x, y, z) (((~(z)) | (y)) ^ (x))
  |  |  ------------------
  |  |                       a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |  106|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  107|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  108|  1.75M|    }
  ------------------
  174|  1.75M|        RIP5(C, D, E, A, B, WL73, SL73, KL4);
  ------------------
  |  |  104|  1.75M|    {                                \
  |  |  105|  1.75M|        a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   65|  1.75M|#define F5(x, y, z) (((~(z)) | (y)) ^ (x))
  |  |  ------------------
  |  |                       a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |  106|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  107|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  108|  1.75M|    }
  ------------------
  175|  1.75M|        RIP5(B, C, D, E, A, WL74, SL74, KL4);
  ------------------
  |  |  104|  1.75M|    {                                \
  |  |  105|  1.75M|        a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   65|  1.75M|#define F5(x, y, z) (((~(z)) | (y)) ^ (x))
  |  |  ------------------
  |  |                       a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |  106|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  107|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  108|  1.75M|    }
  ------------------
  176|  1.75M|        RIP5(A, B, C, D, E, WL75, SL75, KL4);
  ------------------
  |  |  104|  1.75M|    {                                \
  |  |  105|  1.75M|        a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   65|  1.75M|#define F5(x, y, z) (((~(z)) | (y)) ^ (x))
  |  |  ------------------
  |  |                       a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |  106|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  107|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  108|  1.75M|    }
  ------------------
  177|  1.75M|        RIP5(E, A, B, C, D, WL76, SL76, KL4);
  ------------------
  |  |  104|  1.75M|    {                                \
  |  |  105|  1.75M|        a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   65|  1.75M|#define F5(x, y, z) (((~(z)) | (y)) ^ (x))
  |  |  ------------------
  |  |                       a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |  106|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  107|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  108|  1.75M|    }
  ------------------
  178|  1.75M|        RIP5(D, E, A, B, C, WL77, SL77, KL4);
  ------------------
  |  |  104|  1.75M|    {                                \
  |  |  105|  1.75M|        a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   65|  1.75M|#define F5(x, y, z) (((~(z)) | (y)) ^ (x))
  |  |  ------------------
  |  |                       a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |  106|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  107|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  108|  1.75M|    }
  ------------------
  179|  1.75M|        RIP5(C, D, E, A, B, WL78, SL78, KL4);
  ------------------
  |  |  104|  1.75M|    {                                \
  |  |  105|  1.75M|        a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   65|  1.75M|#define F5(x, y, z) (((~(z)) | (y)) ^ (x))
  |  |  ------------------
  |  |                       a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |  106|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  107|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  108|  1.75M|    }
  ------------------
  180|  1.75M|        RIP5(B, C, D, E, A, WL79, SL79, KL4);
  ------------------
  |  |  104|  1.75M|    {                                \
  |  |  105|  1.75M|        a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   65|  1.75M|#define F5(x, y, z) (((~(z)) | (y)) ^ (x))
  |  |  ------------------
  |  |                       a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |  106|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  107|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  108|  1.75M|    }
  ------------------
  181|       |
  182|  1.75M|        a = A;
  183|  1.75M|        b = B;
  184|  1.75M|        c = C;
  185|  1.75M|        d = D;
  186|  1.75M|        e = E;
  187|       |        /* Do other half */
  188|  1.75M|        A = ctx->A;
  189|  1.75M|        B = ctx->B;
  190|  1.75M|        C = ctx->C;
  191|  1.75M|        D = ctx->D;
  192|  1.75M|        E = ctx->E;
  193|       |
  194|  1.75M|        RIP5(A, B, C, D, E, WR00, SR00, KR0);
  ------------------
  |  |  104|  1.75M|    {                                \
  |  |  105|  1.75M|        a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   65|  1.75M|#define F5(x, y, z) (((~(z)) | (y)) ^ (x))
  |  |  ------------------
  |  |                       a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |  106|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  107|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  108|  1.75M|    }
  ------------------
  195|  1.75M|        RIP5(E, A, B, C, D, WR01, SR01, KR0);
  ------------------
  |  |  104|  1.75M|    {                                \
  |  |  105|  1.75M|        a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   65|  1.75M|#define F5(x, y, z) (((~(z)) | (y)) ^ (x))
  |  |  ------------------
  |  |                       a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |  106|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  107|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  108|  1.75M|    }
  ------------------
  196|  1.75M|        RIP5(D, E, A, B, C, WR02, SR02, KR0);
  ------------------
  |  |  104|  1.75M|    {                                \
  |  |  105|  1.75M|        a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   65|  1.75M|#define F5(x, y, z) (((~(z)) | (y)) ^ (x))
  |  |  ------------------
  |  |                       a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |  106|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  107|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  108|  1.75M|    }
  ------------------
  197|  1.75M|        RIP5(C, D, E, A, B, WR03, SR03, KR0);
  ------------------
  |  |  104|  1.75M|    {                                \
  |  |  105|  1.75M|        a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   65|  1.75M|#define F5(x, y, z) (((~(z)) | (y)) ^ (x))
  |  |  ------------------
  |  |                       a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |  106|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  107|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  108|  1.75M|    }
  ------------------
  198|  1.75M|        RIP5(B, C, D, E, A, WR04, SR04, KR0);
  ------------------
  |  |  104|  1.75M|    {                                \
  |  |  105|  1.75M|        a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   65|  1.75M|#define F5(x, y, z) (((~(z)) | (y)) ^ (x))
  |  |  ------------------
  |  |                       a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |  106|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  107|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  108|  1.75M|    }
  ------------------
  199|  1.75M|        RIP5(A, B, C, D, E, WR05, SR05, KR0);
  ------------------
  |  |  104|  1.75M|    {                                \
  |  |  105|  1.75M|        a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   65|  1.75M|#define F5(x, y, z) (((~(z)) | (y)) ^ (x))
  |  |  ------------------
  |  |                       a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |  106|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  107|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  108|  1.75M|    }
  ------------------
  200|  1.75M|        RIP5(E, A, B, C, D, WR06, SR06, KR0);
  ------------------
  |  |  104|  1.75M|    {                                \
  |  |  105|  1.75M|        a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   65|  1.75M|#define F5(x, y, z) (((~(z)) | (y)) ^ (x))
  |  |  ------------------
  |  |                       a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |  106|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  107|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  108|  1.75M|    }
  ------------------
  201|  1.75M|        RIP5(D, E, A, B, C, WR07, SR07, KR0);
  ------------------
  |  |  104|  1.75M|    {                                \
  |  |  105|  1.75M|        a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   65|  1.75M|#define F5(x, y, z) (((~(z)) | (y)) ^ (x))
  |  |  ------------------
  |  |                       a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |  106|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  107|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  108|  1.75M|    }
  ------------------
  202|  1.75M|        RIP5(C, D, E, A, B, WR08, SR08, KR0);
  ------------------
  |  |  104|  1.75M|    {                                \
  |  |  105|  1.75M|        a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   65|  1.75M|#define F5(x, y, z) (((~(z)) | (y)) ^ (x))
  |  |  ------------------
  |  |                       a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |  106|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  107|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  108|  1.75M|    }
  ------------------
  203|  1.75M|        RIP5(B, C, D, E, A, WR09, SR09, KR0);
  ------------------
  |  |  104|  1.75M|    {                                \
  |  |  105|  1.75M|        a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   65|  1.75M|#define F5(x, y, z) (((~(z)) | (y)) ^ (x))
  |  |  ------------------
  |  |                       a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |  106|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  107|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  108|  1.75M|    }
  ------------------
  204|  1.75M|        RIP5(A, B, C, D, E, WR10, SR10, KR0);
  ------------------
  |  |  104|  1.75M|    {                                \
  |  |  105|  1.75M|        a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   65|  1.75M|#define F5(x, y, z) (((~(z)) | (y)) ^ (x))
  |  |  ------------------
  |  |                       a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |  106|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  107|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  108|  1.75M|    }
  ------------------
  205|  1.75M|        RIP5(E, A, B, C, D, WR11, SR11, KR0);
  ------------------
  |  |  104|  1.75M|    {                                \
  |  |  105|  1.75M|        a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   65|  1.75M|#define F5(x, y, z) (((~(z)) | (y)) ^ (x))
  |  |  ------------------
  |  |                       a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |  106|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  107|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  108|  1.75M|    }
  ------------------
  206|  1.75M|        RIP5(D, E, A, B, C, WR12, SR12, KR0);
  ------------------
  |  |  104|  1.75M|    {                                \
  |  |  105|  1.75M|        a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   65|  1.75M|#define F5(x, y, z) (((~(z)) | (y)) ^ (x))
  |  |  ------------------
  |  |                       a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |  106|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  107|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  108|  1.75M|    }
  ------------------
  207|  1.75M|        RIP5(C, D, E, A, B, WR13, SR13, KR0);
  ------------------
  |  |  104|  1.75M|    {                                \
  |  |  105|  1.75M|        a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   65|  1.75M|#define F5(x, y, z) (((~(z)) | (y)) ^ (x))
  |  |  ------------------
  |  |                       a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |  106|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  107|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  108|  1.75M|    }
  ------------------
  208|  1.75M|        RIP5(B, C, D, E, A, WR14, SR14, KR0);
  ------------------
  |  |  104|  1.75M|    {                                \
  |  |  105|  1.75M|        a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   65|  1.75M|#define F5(x, y, z) (((~(z)) | (y)) ^ (x))
  |  |  ------------------
  |  |                       a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |  106|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  107|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  108|  1.75M|    }
  ------------------
  209|  1.75M|        RIP5(A, B, C, D, E, WR15, SR15, KR0);
  ------------------
  |  |  104|  1.75M|    {                                \
  |  |  105|  1.75M|        a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   65|  1.75M|#define F5(x, y, z) (((~(z)) | (y)) ^ (x))
  |  |  ------------------
  |  |                       a += F5(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |  106|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  107|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  108|  1.75M|    }
  ------------------
  210|       |
  211|  1.75M|        RIP4(E, A, B, C, D, WR16, SR16, KR1);
  ------------------
  |  |   97|  1.75M|    {                                \
  |  |   98|  1.75M|        a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   64|  1.75M|#define F4(x, y, z) ((((x) ^ (y)) & (z)) ^ (y))
  |  |  ------------------
  |  |                       a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   99|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  100|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  101|  1.75M|    }
  ------------------
  212|  1.75M|        RIP4(D, E, A, B, C, WR17, SR17, KR1);
  ------------------
  |  |   97|  1.75M|    {                                \
  |  |   98|  1.75M|        a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   64|  1.75M|#define F4(x, y, z) ((((x) ^ (y)) & (z)) ^ (y))
  |  |  ------------------
  |  |                       a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   99|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  100|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  101|  1.75M|    }
  ------------------
  213|  1.75M|        RIP4(C, D, E, A, B, WR18, SR18, KR1);
  ------------------
  |  |   97|  1.75M|    {                                \
  |  |   98|  1.75M|        a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   64|  1.75M|#define F4(x, y, z) ((((x) ^ (y)) & (z)) ^ (y))
  |  |  ------------------
  |  |                       a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   99|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  100|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  101|  1.75M|    }
  ------------------
  214|  1.75M|        RIP4(B, C, D, E, A, WR19, SR19, KR1);
  ------------------
  |  |   97|  1.75M|    {                                \
  |  |   98|  1.75M|        a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   64|  1.75M|#define F4(x, y, z) ((((x) ^ (y)) & (z)) ^ (y))
  |  |  ------------------
  |  |                       a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   99|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  100|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  101|  1.75M|    }
  ------------------
  215|  1.75M|        RIP4(A, B, C, D, E, WR20, SR20, KR1);
  ------------------
  |  |   97|  1.75M|    {                                \
  |  |   98|  1.75M|        a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   64|  1.75M|#define F4(x, y, z) ((((x) ^ (y)) & (z)) ^ (y))
  |  |  ------------------
  |  |                       a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   99|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  100|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  101|  1.75M|    }
  ------------------
  216|  1.75M|        RIP4(E, A, B, C, D, WR21, SR21, KR1);
  ------------------
  |  |   97|  1.75M|    {                                \
  |  |   98|  1.75M|        a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   64|  1.75M|#define F4(x, y, z) ((((x) ^ (y)) & (z)) ^ (y))
  |  |  ------------------
  |  |                       a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   99|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  100|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  101|  1.75M|    }
  ------------------
  217|  1.75M|        RIP4(D, E, A, B, C, WR22, SR22, KR1);
  ------------------
  |  |   97|  1.75M|    {                                \
  |  |   98|  1.75M|        a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   64|  1.75M|#define F4(x, y, z) ((((x) ^ (y)) & (z)) ^ (y))
  |  |  ------------------
  |  |                       a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   99|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  100|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  101|  1.75M|    }
  ------------------
  218|  1.75M|        RIP4(C, D, E, A, B, WR23, SR23, KR1);
  ------------------
  |  |   97|  1.75M|    {                                \
  |  |   98|  1.75M|        a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   64|  1.75M|#define F4(x, y, z) ((((x) ^ (y)) & (z)) ^ (y))
  |  |  ------------------
  |  |                       a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   99|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  100|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  101|  1.75M|    }
  ------------------
  219|  1.75M|        RIP4(B, C, D, E, A, WR24, SR24, KR1);
  ------------------
  |  |   97|  1.75M|    {                                \
  |  |   98|  1.75M|        a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   64|  1.75M|#define F4(x, y, z) ((((x) ^ (y)) & (z)) ^ (y))
  |  |  ------------------
  |  |                       a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   99|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  100|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  101|  1.75M|    }
  ------------------
  220|  1.75M|        RIP4(A, B, C, D, E, WR25, SR25, KR1);
  ------------------
  |  |   97|  1.75M|    {                                \
  |  |   98|  1.75M|        a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   64|  1.75M|#define F4(x, y, z) ((((x) ^ (y)) & (z)) ^ (y))
  |  |  ------------------
  |  |                       a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   99|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  100|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  101|  1.75M|    }
  ------------------
  221|  1.75M|        RIP4(E, A, B, C, D, WR26, SR26, KR1);
  ------------------
  |  |   97|  1.75M|    {                                \
  |  |   98|  1.75M|        a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   64|  1.75M|#define F4(x, y, z) ((((x) ^ (y)) & (z)) ^ (y))
  |  |  ------------------
  |  |                       a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   99|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  100|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  101|  1.75M|    }
  ------------------
  222|  1.75M|        RIP4(D, E, A, B, C, WR27, SR27, KR1);
  ------------------
  |  |   97|  1.75M|    {                                \
  |  |   98|  1.75M|        a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   64|  1.75M|#define F4(x, y, z) ((((x) ^ (y)) & (z)) ^ (y))
  |  |  ------------------
  |  |                       a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   99|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  100|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  101|  1.75M|    }
  ------------------
  223|  1.75M|        RIP4(C, D, E, A, B, WR28, SR28, KR1);
  ------------------
  |  |   97|  1.75M|    {                                \
  |  |   98|  1.75M|        a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   64|  1.75M|#define F4(x, y, z) ((((x) ^ (y)) & (z)) ^ (y))
  |  |  ------------------
  |  |                       a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   99|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  100|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  101|  1.75M|    }
  ------------------
  224|  1.75M|        RIP4(B, C, D, E, A, WR29, SR29, KR1);
  ------------------
  |  |   97|  1.75M|    {                                \
  |  |   98|  1.75M|        a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   64|  1.75M|#define F4(x, y, z) ((((x) ^ (y)) & (z)) ^ (y))
  |  |  ------------------
  |  |                       a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   99|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  100|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  101|  1.75M|    }
  ------------------
  225|  1.75M|        RIP4(A, B, C, D, E, WR30, SR30, KR1);
  ------------------
  |  |   97|  1.75M|    {                                \
  |  |   98|  1.75M|        a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   64|  1.75M|#define F4(x, y, z) ((((x) ^ (y)) & (z)) ^ (y))
  |  |  ------------------
  |  |                       a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   99|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  100|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  101|  1.75M|    }
  ------------------
  226|  1.75M|        RIP4(E, A, B, C, D, WR31, SR31, KR1);
  ------------------
  |  |   97|  1.75M|    {                                \
  |  |   98|  1.75M|        a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   64|  1.75M|#define F4(x, y, z) ((((x) ^ (y)) & (z)) ^ (y))
  |  |  ------------------
  |  |                       a += F4(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   99|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  100|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |  101|  1.75M|    }
  ------------------
  227|       |
  228|  1.75M|        RIP3(D, E, A, B, C, WR32, SR32, KR2);
  ------------------
  |  |   90|  1.75M|    {                                \
  |  |   91|  1.75M|        a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   63|  1.75M|#define F3(x, y, z) (((~(y)) | (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   92|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   93|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   94|  1.75M|    }
  ------------------
  229|  1.75M|        RIP3(C, D, E, A, B, WR33, SR33, KR2);
  ------------------
  |  |   90|  1.75M|    {                                \
  |  |   91|  1.75M|        a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   63|  1.75M|#define F3(x, y, z) (((~(y)) | (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   92|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   93|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   94|  1.75M|    }
  ------------------
  230|  1.75M|        RIP3(B, C, D, E, A, WR34, SR34, KR2);
  ------------------
  |  |   90|  1.75M|    {                                \
  |  |   91|  1.75M|        a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   63|  1.75M|#define F3(x, y, z) (((~(y)) | (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   92|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   93|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   94|  1.75M|    }
  ------------------
  231|  1.75M|        RIP3(A, B, C, D, E, WR35, SR35, KR2);
  ------------------
  |  |   90|  1.75M|    {                                \
  |  |   91|  1.75M|        a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   63|  1.75M|#define F3(x, y, z) (((~(y)) | (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   92|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   93|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   94|  1.75M|    }
  ------------------
  232|  1.75M|        RIP3(E, A, B, C, D, WR36, SR36, KR2);
  ------------------
  |  |   90|  1.75M|    {                                \
  |  |   91|  1.75M|        a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   63|  1.75M|#define F3(x, y, z) (((~(y)) | (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   92|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   93|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   94|  1.75M|    }
  ------------------
  233|  1.75M|        RIP3(D, E, A, B, C, WR37, SR37, KR2);
  ------------------
  |  |   90|  1.75M|    {                                \
  |  |   91|  1.75M|        a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   63|  1.75M|#define F3(x, y, z) (((~(y)) | (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   92|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   93|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   94|  1.75M|    }
  ------------------
  234|  1.75M|        RIP3(C, D, E, A, B, WR38, SR38, KR2);
  ------------------
  |  |   90|  1.75M|    {                                \
  |  |   91|  1.75M|        a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   63|  1.75M|#define F3(x, y, z) (((~(y)) | (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   92|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   93|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   94|  1.75M|    }
  ------------------
  235|  1.75M|        RIP3(B, C, D, E, A, WR39, SR39, KR2);
  ------------------
  |  |   90|  1.75M|    {                                \
  |  |   91|  1.75M|        a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   63|  1.75M|#define F3(x, y, z) (((~(y)) | (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   92|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   93|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   94|  1.75M|    }
  ------------------
  236|  1.75M|        RIP3(A, B, C, D, E, WR40, SR40, KR2);
  ------------------
  |  |   90|  1.75M|    {                                \
  |  |   91|  1.75M|        a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   63|  1.75M|#define F3(x, y, z) (((~(y)) | (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   92|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   93|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   94|  1.75M|    }
  ------------------
  237|  1.75M|        RIP3(E, A, B, C, D, WR41, SR41, KR2);
  ------------------
  |  |   90|  1.75M|    {                                \
  |  |   91|  1.75M|        a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   63|  1.75M|#define F3(x, y, z) (((~(y)) | (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   92|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   93|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   94|  1.75M|    }
  ------------------
  238|  1.75M|        RIP3(D, E, A, B, C, WR42, SR42, KR2);
  ------------------
  |  |   90|  1.75M|    {                                \
  |  |   91|  1.75M|        a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   63|  1.75M|#define F3(x, y, z) (((~(y)) | (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   92|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   93|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   94|  1.75M|    }
  ------------------
  239|  1.75M|        RIP3(C, D, E, A, B, WR43, SR43, KR2);
  ------------------
  |  |   90|  1.75M|    {                                \
  |  |   91|  1.75M|        a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   63|  1.75M|#define F3(x, y, z) (((~(y)) | (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   92|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   93|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   94|  1.75M|    }
  ------------------
  240|  1.75M|        RIP3(B, C, D, E, A, WR44, SR44, KR2);
  ------------------
  |  |   90|  1.75M|    {                                \
  |  |   91|  1.75M|        a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   63|  1.75M|#define F3(x, y, z) (((~(y)) | (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   92|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   93|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   94|  1.75M|    }
  ------------------
  241|  1.75M|        RIP3(A, B, C, D, E, WR45, SR45, KR2);
  ------------------
  |  |   90|  1.75M|    {                                \
  |  |   91|  1.75M|        a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   63|  1.75M|#define F3(x, y, z) (((~(y)) | (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   92|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   93|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   94|  1.75M|    }
  ------------------
  242|  1.75M|        RIP3(E, A, B, C, D, WR46, SR46, KR2);
  ------------------
  |  |   90|  1.75M|    {                                \
  |  |   91|  1.75M|        a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   63|  1.75M|#define F3(x, y, z) (((~(y)) | (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   92|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   93|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   94|  1.75M|    }
  ------------------
  243|  1.75M|        RIP3(D, E, A, B, C, WR47, SR47, KR2);
  ------------------
  |  |   90|  1.75M|    {                                \
  |  |   91|  1.75M|        a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   63|  1.75M|#define F3(x, y, z) (((~(y)) | (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F3(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   92|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   93|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   94|  1.75M|    }
  ------------------
  244|       |
  245|  1.75M|        RIP2(C, D, E, A, B, WR48, SR48, KR3);
  ------------------
  |  |   83|  1.75M|    {                                \
  |  |   84|  1.75M|        a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   62|  1.75M|#define F2(x, y, z) ((((y) ^ (z)) & (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   85|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   86|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   87|  1.75M|    }
  ------------------
  246|  1.75M|        RIP2(B, C, D, E, A, WR49, SR49, KR3);
  ------------------
  |  |   83|  1.75M|    {                                \
  |  |   84|  1.75M|        a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   62|  1.75M|#define F2(x, y, z) ((((y) ^ (z)) & (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   85|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   86|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   87|  1.75M|    }
  ------------------
  247|  1.75M|        RIP2(A, B, C, D, E, WR50, SR50, KR3);
  ------------------
  |  |   83|  1.75M|    {                                \
  |  |   84|  1.75M|        a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   62|  1.75M|#define F2(x, y, z) ((((y) ^ (z)) & (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   85|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   86|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   87|  1.75M|    }
  ------------------
  248|  1.75M|        RIP2(E, A, B, C, D, WR51, SR51, KR3);
  ------------------
  |  |   83|  1.75M|    {                                \
  |  |   84|  1.75M|        a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   62|  1.75M|#define F2(x, y, z) ((((y) ^ (z)) & (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   85|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   86|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   87|  1.75M|    }
  ------------------
  249|  1.75M|        RIP2(D, E, A, B, C, WR52, SR52, KR3);
  ------------------
  |  |   83|  1.75M|    {                                \
  |  |   84|  1.75M|        a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   62|  1.75M|#define F2(x, y, z) ((((y) ^ (z)) & (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   85|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   86|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   87|  1.75M|    }
  ------------------
  250|  1.75M|        RIP2(C, D, E, A, B, WR53, SR53, KR3);
  ------------------
  |  |   83|  1.75M|    {                                \
  |  |   84|  1.75M|        a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   62|  1.75M|#define F2(x, y, z) ((((y) ^ (z)) & (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   85|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   86|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   87|  1.75M|    }
  ------------------
  251|  1.75M|        RIP2(B, C, D, E, A, WR54, SR54, KR3);
  ------------------
  |  |   83|  1.75M|    {                                \
  |  |   84|  1.75M|        a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   62|  1.75M|#define F2(x, y, z) ((((y) ^ (z)) & (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   85|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   86|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   87|  1.75M|    }
  ------------------
  252|  1.75M|        RIP2(A, B, C, D, E, WR55, SR55, KR3);
  ------------------
  |  |   83|  1.75M|    {                                \
  |  |   84|  1.75M|        a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   62|  1.75M|#define F2(x, y, z) ((((y) ^ (z)) & (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   85|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   86|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   87|  1.75M|    }
  ------------------
  253|  1.75M|        RIP2(E, A, B, C, D, WR56, SR56, KR3);
  ------------------
  |  |   83|  1.75M|    {                                \
  |  |   84|  1.75M|        a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   62|  1.75M|#define F2(x, y, z) ((((y) ^ (z)) & (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   85|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   86|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   87|  1.75M|    }
  ------------------
  254|  1.75M|        RIP2(D, E, A, B, C, WR57, SR57, KR3);
  ------------------
  |  |   83|  1.75M|    {                                \
  |  |   84|  1.75M|        a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   62|  1.75M|#define F2(x, y, z) ((((y) ^ (z)) & (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   85|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   86|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   87|  1.75M|    }
  ------------------
  255|  1.75M|        RIP2(C, D, E, A, B, WR58, SR58, KR3);
  ------------------
  |  |   83|  1.75M|    {                                \
  |  |   84|  1.75M|        a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   62|  1.75M|#define F2(x, y, z) ((((y) ^ (z)) & (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   85|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   86|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   87|  1.75M|    }
  ------------------
  256|  1.75M|        RIP2(B, C, D, E, A, WR59, SR59, KR3);
  ------------------
  |  |   83|  1.75M|    {                                \
  |  |   84|  1.75M|        a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   62|  1.75M|#define F2(x, y, z) ((((y) ^ (z)) & (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   85|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   86|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   87|  1.75M|    }
  ------------------
  257|  1.75M|        RIP2(A, B, C, D, E, WR60, SR60, KR3);
  ------------------
  |  |   83|  1.75M|    {                                \
  |  |   84|  1.75M|        a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   62|  1.75M|#define F2(x, y, z) ((((y) ^ (z)) & (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   85|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   86|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   87|  1.75M|    }
  ------------------
  258|  1.75M|        RIP2(E, A, B, C, D, WR61, SR61, KR3);
  ------------------
  |  |   83|  1.75M|    {                                \
  |  |   84|  1.75M|        a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   62|  1.75M|#define F2(x, y, z) ((((y) ^ (z)) & (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   85|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   86|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   87|  1.75M|    }
  ------------------
  259|  1.75M|        RIP2(D, E, A, B, C, WR62, SR62, KR3);
  ------------------
  |  |   83|  1.75M|    {                                \
  |  |   84|  1.75M|        a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   62|  1.75M|#define F2(x, y, z) ((((y) ^ (z)) & (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   85|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   86|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   87|  1.75M|    }
  ------------------
  260|  1.75M|        RIP2(C, D, E, A, B, WR63, SR63, KR3);
  ------------------
  |  |   83|  1.75M|    {                                \
  |  |   84|  1.75M|        a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   62|  1.75M|#define F2(x, y, z) ((((y) ^ (z)) & (x)) ^ (z))
  |  |  ------------------
  |  |                       a += F2(b, c, d) + X(w) + K; \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   85|  1.75M|        a = ROTATE(a, s) + e;        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   86|  1.75M|        c = ROTATE(c, 10);           \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   87|  1.75M|    }
  ------------------
  261|       |
  262|  1.75M|        RIP1(B, C, D, E, A, WR64, SR64);
  ------------------
  |  |   76|  1.75M|    {                             \
  |  |   77|  1.75M|        a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   61|  1.75M|#define F1(x, y, z) ((x) ^ (y) ^ (z))
  |  |  ------------------
  |  |                       a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   78|  1.75M|        a = ROTATE(a, s) + e;     \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   79|  1.75M|        c = ROTATE(c, 10);        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   80|  1.75M|    }
  ------------------
  263|  1.75M|        RIP1(A, B, C, D, E, WR65, SR65);
  ------------------
  |  |   76|  1.75M|    {                             \
  |  |   77|  1.75M|        a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   61|  1.75M|#define F1(x, y, z) ((x) ^ (y) ^ (z))
  |  |  ------------------
  |  |                       a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   78|  1.75M|        a = ROTATE(a, s) + e;     \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   79|  1.75M|        c = ROTATE(c, 10);        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   80|  1.75M|    }
  ------------------
  264|  1.75M|        RIP1(E, A, B, C, D, WR66, SR66);
  ------------------
  |  |   76|  1.75M|    {                             \
  |  |   77|  1.75M|        a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   61|  1.75M|#define F1(x, y, z) ((x) ^ (y) ^ (z))
  |  |  ------------------
  |  |                       a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   78|  1.75M|        a = ROTATE(a, s) + e;     \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   79|  1.75M|        c = ROTATE(c, 10);        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   80|  1.75M|    }
  ------------------
  265|  1.75M|        RIP1(D, E, A, B, C, WR67, SR67);
  ------------------
  |  |   76|  1.75M|    {                             \
  |  |   77|  1.75M|        a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   61|  1.75M|#define F1(x, y, z) ((x) ^ (y) ^ (z))
  |  |  ------------------
  |  |                       a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   78|  1.75M|        a = ROTATE(a, s) + e;     \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   79|  1.75M|        c = ROTATE(c, 10);        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   80|  1.75M|    }
  ------------------
  266|  1.75M|        RIP1(C, D, E, A, B, WR68, SR68);
  ------------------
  |  |   76|  1.75M|    {                             \
  |  |   77|  1.75M|        a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   61|  1.75M|#define F1(x, y, z) ((x) ^ (y) ^ (z))
  |  |  ------------------
  |  |                       a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   78|  1.75M|        a = ROTATE(a, s) + e;     \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   79|  1.75M|        c = ROTATE(c, 10);        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   80|  1.75M|    }
  ------------------
  267|  1.75M|        RIP1(B, C, D, E, A, WR69, SR69);
  ------------------
  |  |   76|  1.75M|    {                             \
  |  |   77|  1.75M|        a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   61|  1.75M|#define F1(x, y, z) ((x) ^ (y) ^ (z))
  |  |  ------------------
  |  |                       a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   78|  1.75M|        a = ROTATE(a, s) + e;     \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   79|  1.75M|        c = ROTATE(c, 10);        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   80|  1.75M|    }
  ------------------
  268|  1.75M|        RIP1(A, B, C, D, E, WR70, SR70);
  ------------------
  |  |   76|  1.75M|    {                             \
  |  |   77|  1.75M|        a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   61|  1.75M|#define F1(x, y, z) ((x) ^ (y) ^ (z))
  |  |  ------------------
  |  |                       a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   78|  1.75M|        a = ROTATE(a, s) + e;     \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   79|  1.75M|        c = ROTATE(c, 10);        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   80|  1.75M|    }
  ------------------
  269|  1.75M|        RIP1(E, A, B, C, D, WR71, SR71);
  ------------------
  |  |   76|  1.75M|    {                             \
  |  |   77|  1.75M|        a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   61|  1.75M|#define F1(x, y, z) ((x) ^ (y) ^ (z))
  |  |  ------------------
  |  |                       a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   78|  1.75M|        a = ROTATE(a, s) + e;     \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   79|  1.75M|        c = ROTATE(c, 10);        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   80|  1.75M|    }
  ------------------
  270|  1.75M|        RIP1(D, E, A, B, C, WR72, SR72);
  ------------------
  |  |   76|  1.75M|    {                             \
  |  |   77|  1.75M|        a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   61|  1.75M|#define F1(x, y, z) ((x) ^ (y) ^ (z))
  |  |  ------------------
  |  |                       a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   78|  1.75M|        a = ROTATE(a, s) + e;     \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   79|  1.75M|        c = ROTATE(c, 10);        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   80|  1.75M|    }
  ------------------
  271|  1.75M|        RIP1(C, D, E, A, B, WR73, SR73);
  ------------------
  |  |   76|  1.75M|    {                             \
  |  |   77|  1.75M|        a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   61|  1.75M|#define F1(x, y, z) ((x) ^ (y) ^ (z))
  |  |  ------------------
  |  |                       a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   78|  1.75M|        a = ROTATE(a, s) + e;     \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   79|  1.75M|        c = ROTATE(c, 10);        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   80|  1.75M|    }
  ------------------
  272|  1.75M|        RIP1(B, C, D, E, A, WR74, SR74);
  ------------------
  |  |   76|  1.75M|    {                             \
  |  |   77|  1.75M|        a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   61|  1.75M|#define F1(x, y, z) ((x) ^ (y) ^ (z))
  |  |  ------------------
  |  |                       a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   78|  1.75M|        a = ROTATE(a, s) + e;     \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   79|  1.75M|        c = ROTATE(c, 10);        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   80|  1.75M|    }
  ------------------
  273|  1.75M|        RIP1(A, B, C, D, E, WR75, SR75);
  ------------------
  |  |   76|  1.75M|    {                             \
  |  |   77|  1.75M|        a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   61|  1.75M|#define F1(x, y, z) ((x) ^ (y) ^ (z))
  |  |  ------------------
  |  |                       a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   78|  1.75M|        a = ROTATE(a, s) + e;     \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   79|  1.75M|        c = ROTATE(c, 10);        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   80|  1.75M|    }
  ------------------
  274|  1.75M|        RIP1(E, A, B, C, D, WR76, SR76);
  ------------------
  |  |   76|  1.75M|    {                             \
  |  |   77|  1.75M|        a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   61|  1.75M|#define F1(x, y, z) ((x) ^ (y) ^ (z))
  |  |  ------------------
  |  |                       a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   78|  1.75M|        a = ROTATE(a, s) + e;     \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   79|  1.75M|        c = ROTATE(c, 10);        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   80|  1.75M|    }
  ------------------
  275|  1.75M|        RIP1(D, E, A, B, C, WR77, SR77);
  ------------------
  |  |   76|  1.75M|    {                             \
  |  |   77|  1.75M|        a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   61|  1.75M|#define F1(x, y, z) ((x) ^ (y) ^ (z))
  |  |  ------------------
  |  |                       a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   78|  1.75M|        a = ROTATE(a, s) + e;     \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   79|  1.75M|        c = ROTATE(c, 10);        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   80|  1.75M|    }
  ------------------
  276|  1.75M|        RIP1(C, D, E, A, B, WR78, SR78);
  ------------------
  |  |   76|  1.75M|    {                             \
  |  |   77|  1.75M|        a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   61|  1.75M|#define F1(x, y, z) ((x) ^ (y) ^ (z))
  |  |  ------------------
  |  |                       a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   78|  1.75M|        a = ROTATE(a, s) + e;     \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   79|  1.75M|        c = ROTATE(c, 10);        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   80|  1.75M|    }
  ------------------
  277|  1.75M|        RIP1(B, C, D, E, A, WR79, SR79);
  ------------------
  |  |   76|  1.75M|    {                             \
  |  |   77|  1.75M|        a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   61|  1.75M|#define F1(x, y, z) ((x) ^ (y) ^ (z))
  |  |  ------------------
  |  |                       a += F1(b, c, d) + X(w);  \
  |  |  ------------------
  |  |  |  |   51|  1.75M|#define X(i) XX##i
  |  |  ------------------
  |  |   78|  1.75M|        a = ROTATE(a, s) + e;     \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   79|  1.75M|        c = ROTATE(c, 10);        \
  |  |  ------------------
  |  |  |  |  104|  1.75M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   80|  1.75M|    }
  ------------------
  278|       |
  279|  1.75M|        D = ctx->B + c + D;
  280|  1.75M|        ctx->B = ctx->C + d + E;
  281|  1.75M|        ctx->C = ctx->D + e + A;
  282|  1.75M|        ctx->D = ctx->E + a + B;
  283|  1.75M|        ctx->E = ctx->A + b + C;
  284|  1.75M|        ctx->A = D;
  285|  1.75M|    }
  286|    226|}

ossl_err_load_RSA_strings:
  158|      1|{
  159|      1|#ifndef OPENSSL_NO_ERR
  160|      1|    if (ERR_reason_error_string(RSA_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (160:9): [True: 1, False: 0]
  ------------------
  161|      1|        ERR_load_strings_const(RSA_str_reasons);
  162|      1|#endif
  163|      1|    return 1;
  164|      1|}

ossl_self_test_set_callback_new:
   35|      3|{
   36|      3|    SELF_TEST_CB *stcb;
   37|       |
   38|      3|    stcb = OPENSSL_zalloc(sizeof(*stcb));
  ------------------
  |  |  113|      3|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   39|      3|    return stcb;
   40|      3|}

SHA3_absorb:
 1097|    252|{
 1098|    252|    uint64_t *A_flat = (uint64_t *)A;
 1099|    252|    size_t i, w = r / 8;
 1100|       |
 1101|    252|    assert(r < (25 * sizeof(A[0][0])) && (r % 8) == 0);
 1102|       |
 1103|  1.19M|    while (len >= r) {
  ------------------
  |  Branch (1103:12): [True: 1.19M, False: 252]
  ------------------
 1104|  17.0M|        for (i = 0; i < w; i++) {
  ------------------
  |  Branch (1104:21): [True: 15.8M, False: 1.19M]
  ------------------
 1105|  15.8M|            uint64_t Ai = (uint64_t)inp[0] | (uint64_t)inp[1] << 8 | (uint64_t)inp[2] << 16 | (uint64_t)inp[3] << 24 | (uint64_t)inp[4] << 32 | (uint64_t)inp[5] << 40 | (uint64_t)inp[6] << 48 | (uint64_t)inp[7] << 56;
 1106|  15.8M|            inp += 8;
 1107|       |
 1108|  15.8M|            A_flat[i] ^= BitInterleave(Ai);
 1109|  15.8M|        }
 1110|  1.19M|        KeccakF1600(A);
 1111|  1.19M|        len -= r;
 1112|  1.19M|    }
 1113|       |
 1114|    252|    return len;
 1115|    252|}
SHA3_squeeze:
 1128|     63|{
 1129|     63|    uint64_t *A_flat = (uint64_t *)A;
 1130|     63|    size_t i, w = r / 8;
 1131|       |
 1132|     63|    assert(r < (25 * sizeof(A[0][0])) && (r % 8) == 0);
 1133|       |
 1134|    107|    while (len != 0) {
  ------------------
  |  Branch (1134:12): [True: 63, False: 44]
  ------------------
 1135|     63|        if (next)
  ------------------
  |  Branch (1135:13): [True: 0, False: 63]
  ------------------
 1136|      0|            KeccakF1600(A);
 1137|     63|        next = 1;
 1138|    384|        for (i = 0; i < w && len != 0; i++) {
  ------------------
  |  Branch (1138:21): [True: 384, False: 0]
  |  Branch (1138:30): [True: 340, False: 44]
  ------------------
 1139|    340|            uint64_t Ai = BitDeinterleave(A_flat[i]);
 1140|       |
 1141|    340|            if (len < 8) {
  ------------------
  |  Branch (1141:17): [True: 19, False: 321]
  ------------------
 1142|     95|                for (i = 0; i < len; i++) {
  ------------------
  |  Branch (1142:29): [True: 76, False: 19]
  ------------------
 1143|     76|                    *out++ = (unsigned char)Ai;
 1144|     76|                    Ai >>= 8;
 1145|     76|                }
 1146|     19|                return;
 1147|     19|            }
 1148|       |
 1149|    321|            out[0] = (unsigned char)(Ai);
 1150|    321|            out[1] = (unsigned char)(Ai >> 8);
 1151|    321|            out[2] = (unsigned char)(Ai >> 16);
 1152|    321|            out[3] = (unsigned char)(Ai >> 24);
 1153|    321|            out[4] = (unsigned char)(Ai >> 32);
 1154|    321|            out[5] = (unsigned char)(Ai >> 40);
 1155|    321|            out[6] = (unsigned char)(Ai >> 48);
 1156|    321|            out[7] = (unsigned char)(Ai >> 56);
 1157|    321|            out += 8;
 1158|    321|            len -= 8;
 1159|    321|        }
 1160|     63|    }
 1161|     63|}
keccak1600.c:BitInterleave:
  982|  15.8M|{
  983|  15.8M|    if (BIT_INTERLEAVE) {
  ------------------
  |  |   43|  15.8M|#define BIT_INTERLEAVE (0)
  |  |  ------------------
  |  |  |  Branch (43:24): [Folded, False: 15.8M]
  |  |  ------------------
  ------------------
  984|      0|        uint32_t hi = (uint32_t)(Ai >> 32), lo = (uint32_t)Ai;
  985|      0|        uint32_t t0, t1;
  986|       |
  987|      0|        t0 = lo & 0x55555555;
  988|      0|        t0 |= t0 >> 1;
  989|      0|        t0 &= 0x33333333;
  990|      0|        t0 |= t0 >> 2;
  991|      0|        t0 &= 0x0f0f0f0f;
  992|      0|        t0 |= t0 >> 4;
  993|      0|        t0 &= 0x00ff00ff;
  994|      0|        t0 |= t0 >> 8;
  995|      0|        t0 &= 0x0000ffff;
  996|       |
  997|      0|        t1 = hi & 0x55555555;
  998|      0|        t1 |= t1 >> 1;
  999|      0|        t1 &= 0x33333333;
 1000|      0|        t1 |= t1 >> 2;
 1001|      0|        t1 &= 0x0f0f0f0f;
 1002|      0|        t1 |= t1 >> 4;
 1003|      0|        t1 &= 0x00ff00ff;
 1004|      0|        t1 |= t1 >> 8;
 1005|      0|        t1 <<= 16;
 1006|       |
 1007|      0|        lo &= 0xaaaaaaaa;
 1008|      0|        lo |= lo << 1;
 1009|      0|        lo &= 0xcccccccc;
 1010|      0|        lo |= lo << 2;
 1011|      0|        lo &= 0xf0f0f0f0;
 1012|      0|        lo |= lo << 4;
 1013|      0|        lo &= 0xff00ff00;
 1014|      0|        lo |= lo << 8;
 1015|      0|        lo >>= 16;
 1016|       |
 1017|      0|        hi &= 0xaaaaaaaa;
 1018|      0|        hi |= hi << 1;
 1019|      0|        hi &= 0xcccccccc;
 1020|      0|        hi |= hi << 2;
 1021|      0|        hi &= 0xf0f0f0f0;
 1022|      0|        hi |= hi << 4;
 1023|      0|        hi &= 0xff00ff00;
 1024|      0|        hi |= hi << 8;
 1025|      0|        hi &= 0xffff0000;
 1026|       |
 1027|      0|        Ai = ((uint64_t)(hi | lo) << 32) | (t1 | t0);
 1028|      0|    }
 1029|       |
 1030|  15.8M|    return Ai;
 1031|  15.8M|}
keccak1600.c:KeccakF1600:
  651|  1.19M|{
  652|  1.19M|    uint64_t T[5][5];
  653|  1.19M|    size_t i;
  654|       |
  655|  1.19M|#ifdef KECCAK_COMPLEMENTING_TRANSFORM
  656|  1.19M|    A[0][1] = ~A[0][1];
  657|  1.19M|    A[0][2] = ~A[0][2];
  658|  1.19M|    A[1][3] = ~A[1][3];
  659|  1.19M|    A[2][2] = ~A[2][2];
  660|  1.19M|    A[3][2] = ~A[3][2];
  661|  1.19M|    A[4][0] = ~A[4][0];
  662|  1.19M|#endif
  663|       |
  664|  15.4M|    for (i = 0; i < 24; i += 2) {
  ------------------
  |  Branch (664:17): [True: 14.2M, False: 1.19M]
  ------------------
  665|  14.2M|        Round(T, A, i);
  666|  14.2M|        Round(A, T, i + 1);
  667|  14.2M|    }
  668|       |
  669|  1.19M|#ifdef KECCAK_COMPLEMENTING_TRANSFORM
  670|  1.19M|    A[0][1] = ~A[0][1];
  671|  1.19M|    A[0][2] = ~A[0][2];
  672|  1.19M|    A[1][3] = ~A[1][3];
  673|  1.19M|    A[2][2] = ~A[2][2];
  674|  1.19M|    A[3][2] = ~A[3][2];
  675|  1.19M|    A[4][0] = ~A[4][0];
  676|  1.19M|#endif
  677|  1.19M|}
keccak1600.c:Round:
  532|  28.5M|{
  533|  28.5M|    uint64_t C[5], D[5];
  534|       |
  535|  28.5M|    assert(i < OSSL_NELEM(iotas));
  536|       |
  537|  28.5M|    C[0] = A[0][0] ^ A[1][0] ^ A[2][0] ^ A[3][0] ^ A[4][0];
  538|  28.5M|    C[1] = A[0][1] ^ A[1][1] ^ A[2][1] ^ A[3][1] ^ A[4][1];
  539|  28.5M|    C[2] = A[0][2] ^ A[1][2] ^ A[2][2] ^ A[3][2] ^ A[4][2];
  540|  28.5M|    C[3] = A[0][3] ^ A[1][3] ^ A[2][3] ^ A[3][3] ^ A[4][3];
  541|  28.5M|    C[4] = A[0][4] ^ A[1][4] ^ A[2][4] ^ A[3][4] ^ A[4][4];
  542|       |
  543|  28.5M|    D[0] = ROL64(C[1], 1) ^ C[4];
  544|  28.5M|    D[1] = ROL64(C[2], 1) ^ C[0];
  545|  28.5M|    D[2] = ROL64(C[3], 1) ^ C[1];
  546|  28.5M|    D[3] = ROL64(C[4], 1) ^ C[2];
  547|  28.5M|    D[4] = ROL64(C[0], 1) ^ C[3];
  548|       |
  549|  28.5M|    C[0] = A[0][0] ^ D[0]; /* rotate by 0 */
  550|  28.5M|    C[1] = ROL64(A[1][1] ^ D[1], rhotates[1][1]);
  551|  28.5M|    C[2] = ROL64(A[2][2] ^ D[2], rhotates[2][2]);
  552|  28.5M|    C[3] = ROL64(A[3][3] ^ D[3], rhotates[3][3]);
  553|  28.5M|    C[4] = ROL64(A[4][4] ^ D[4], rhotates[4][4]);
  554|       |
  555|  28.5M|#ifdef KECCAK_COMPLEMENTING_TRANSFORM
  556|  28.5M|    R[0][0] = C[0] ^ (C[1] | C[2]) ^ iotas[i];
  557|  28.5M|    R[0][1] = C[1] ^ (~C[2] | C[3]);
  558|  28.5M|    R[0][2] = C[2] ^ (C[3] & C[4]);
  559|  28.5M|    R[0][3] = C[3] ^ (C[4] | C[0]);
  560|  28.5M|    R[0][4] = C[4] ^ (C[0] & C[1]);
  561|       |#else
  562|       |    R[0][0] = C[0] ^ (~C[1] & C[2]) ^ iotas[i];
  563|       |    R[0][1] = C[1] ^ (~C[2] & C[3]);
  564|       |    R[0][2] = C[2] ^ (~C[3] & C[4]);
  565|       |    R[0][3] = C[3] ^ (~C[4] & C[0]);
  566|       |    R[0][4] = C[4] ^ (~C[0] & C[1]);
  567|       |#endif
  568|       |
  569|  28.5M|    C[0] = ROL64(A[0][3] ^ D[3], rhotates[0][3]);
  570|  28.5M|    C[1] = ROL64(A[1][4] ^ D[4], rhotates[1][4]);
  571|  28.5M|    C[2] = ROL64(A[2][0] ^ D[0], rhotates[2][0]);
  572|  28.5M|    C[3] = ROL64(A[3][1] ^ D[1], rhotates[3][1]);
  573|  28.5M|    C[4] = ROL64(A[4][2] ^ D[2], rhotates[4][2]);
  574|       |
  575|  28.5M|#ifdef KECCAK_COMPLEMENTING_TRANSFORM
  576|  28.5M|    R[1][0] = C[0] ^ (C[1] | C[2]);
  577|  28.5M|    R[1][1] = C[1] ^ (C[2] & C[3]);
  578|  28.5M|    R[1][2] = C[2] ^ (C[3] | ~C[4]);
  579|  28.5M|    R[1][3] = C[3] ^ (C[4] | C[0]);
  580|  28.5M|    R[1][4] = C[4] ^ (C[0] & C[1]);
  581|       |#else
  582|       |    R[1][0] = C[0] ^ (~C[1] & C[2]);
  583|       |    R[1][1] = C[1] ^ (~C[2] & C[3]);
  584|       |    R[1][2] = C[2] ^ (~C[3] & C[4]);
  585|       |    R[1][3] = C[3] ^ (~C[4] & C[0]);
  586|       |    R[1][4] = C[4] ^ (~C[0] & C[1]);
  587|       |#endif
  588|       |
  589|  28.5M|    C[0] = ROL64(A[0][1] ^ D[1], rhotates[0][1]);
  590|  28.5M|    C[1] = ROL64(A[1][2] ^ D[2], rhotates[1][2]);
  591|  28.5M|    C[2] = ROL64(A[2][3] ^ D[3], rhotates[2][3]);
  592|  28.5M|    C[3] = ROL64(A[3][4] ^ D[4], rhotates[3][4]);
  593|  28.5M|    C[4] = ROL64(A[4][0] ^ D[0], rhotates[4][0]);
  594|       |
  595|  28.5M|#ifdef KECCAK_COMPLEMENTING_TRANSFORM
  596|  28.5M|    R[2][0] = C[0] ^ (C[1] | C[2]);
  597|  28.5M|    R[2][1] = C[1] ^ (C[2] & C[3]);
  598|  28.5M|    R[2][2] = C[2] ^ (~C[3] & C[4]);
  599|  28.5M|    R[2][3] = ~C[3] ^ (C[4] | C[0]);
  600|  28.5M|    R[2][4] = C[4] ^ (C[0] & C[1]);
  601|       |#else
  602|       |    R[2][0] = C[0] ^ (~C[1] & C[2]);
  603|       |    R[2][1] = C[1] ^ (~C[2] & C[3]);
  604|       |    R[2][2] = C[2] ^ (~C[3] & C[4]);
  605|       |    R[2][3] = C[3] ^ (~C[4] & C[0]);
  606|       |    R[2][4] = C[4] ^ (~C[0] & C[1]);
  607|       |#endif
  608|       |
  609|  28.5M|    C[0] = ROL64(A[0][4] ^ D[4], rhotates[0][4]);
  610|  28.5M|    C[1] = ROL64(A[1][0] ^ D[0], rhotates[1][0]);
  611|  28.5M|    C[2] = ROL64(A[2][1] ^ D[1], rhotates[2][1]);
  612|  28.5M|    C[3] = ROL64(A[3][2] ^ D[2], rhotates[3][2]);
  613|  28.5M|    C[4] = ROL64(A[4][3] ^ D[3], rhotates[4][3]);
  614|       |
  615|  28.5M|#ifdef KECCAK_COMPLEMENTING_TRANSFORM
  616|  28.5M|    R[3][0] = C[0] ^ (C[1] & C[2]);
  617|  28.5M|    R[3][1] = C[1] ^ (C[2] | C[3]);
  618|  28.5M|    R[3][2] = C[2] ^ (~C[3] | C[4]);
  619|  28.5M|    R[3][3] = ~C[3] ^ (C[4] & C[0]);
  620|  28.5M|    R[3][4] = C[4] ^ (C[0] | C[1]);
  621|       |#else
  622|       |    R[3][0] = C[0] ^ (~C[1] & C[2]);
  623|       |    R[3][1] = C[1] ^ (~C[2] & C[3]);
  624|       |    R[3][2] = C[2] ^ (~C[3] & C[4]);
  625|       |    R[3][3] = C[3] ^ (~C[4] & C[0]);
  626|       |    R[3][4] = C[4] ^ (~C[0] & C[1]);
  627|       |#endif
  628|       |
  629|  28.5M|    C[0] = ROL64(A[0][2] ^ D[2], rhotates[0][2]);
  630|  28.5M|    C[1] = ROL64(A[1][3] ^ D[3], rhotates[1][3]);
  631|  28.5M|    C[2] = ROL64(A[2][4] ^ D[4], rhotates[2][4]);
  632|  28.5M|    C[3] = ROL64(A[3][0] ^ D[0], rhotates[3][0]);
  633|  28.5M|    C[4] = ROL64(A[4][1] ^ D[1], rhotates[4][1]);
  634|       |
  635|  28.5M|#ifdef KECCAK_COMPLEMENTING_TRANSFORM
  636|  28.5M|    R[4][0] = C[0] ^ (~C[1] & C[2]);
  637|  28.5M|    R[4][1] = ~C[1] ^ (C[2] | C[3]);
  638|  28.5M|    R[4][2] = C[2] ^ (C[3] & C[4]);
  639|  28.5M|    R[4][3] = C[3] ^ (C[4] | C[0]);
  640|  28.5M|    R[4][4] = C[4] ^ (C[0] & C[1]);
  641|       |#else
  642|       |    R[4][0] = C[0] ^ (~C[1] & C[2]);
  643|       |    R[4][1] = C[1] ^ (~C[2] & C[3]);
  644|       |    R[4][2] = C[2] ^ (~C[3] & C[4]);
  645|       |    R[4][3] = C[3] ^ (~C[4] & C[0]);
  646|       |    R[4][4] = C[4] ^ (~C[0] & C[1]);
  647|       |#endif
  648|  28.5M|}
keccak1600.c:ROL64:
   51|   828M|{
   52|   828M|    if (offset == 0) {
  ------------------
  |  Branch (52:9): [True: 0, False: 828M]
  ------------------
   53|      0|        return val;
   54|   828M|    } else if (!BIT_INTERLEAVE) {
  ------------------
  |  |   43|   828M|#define BIT_INTERLEAVE (0)
  ------------------
  |  Branch (54:16): [True: 828M, Folded]
  ------------------
   55|   828M|        return (val << offset) | (val >> (64 - offset));
   56|   828M|    } else {
   57|      0|        uint32_t hi = (uint32_t)(val >> 32), lo = (uint32_t)val;
   58|       |
   59|      0|        if (offset & 1) {
  ------------------
  |  Branch (59:13): [True: 0, False: 0]
  ------------------
   60|      0|            uint32_t tmp = hi;
   61|       |
   62|      0|            offset >>= 1;
   63|      0|            hi = ROL32(lo, offset);
  ------------------
  |  |   48|      0|#define ROL32(a, offset) (((a) << (offset)) | ((a) >> ((32 - (offset)) & 31)))
  ------------------
   64|      0|            lo = ROL32(tmp, offset + 1);
  ------------------
  |  |   48|      0|#define ROL32(a, offset) (((a) << (offset)) | ((a) >> ((32 - (offset)) & 31)))
  ------------------
   65|      0|        } else {
   66|      0|            offset >>= 1;
   67|      0|            lo = ROL32(lo, offset);
  ------------------
  |  |   48|      0|#define ROL32(a, offset) (((a) << (offset)) | ((a) >> ((32 - (offset)) & 31)))
  ------------------
   68|      0|            hi = ROL32(hi, offset);
  ------------------
  |  |   48|      0|#define ROL32(a, offset) (((a) << (offset)) | ((a) >> ((32 - (offset)) & 31)))
  ------------------
   69|      0|        }
   70|       |
   71|      0|        return ((uint64_t)hi << 32) | lo;
   72|      0|    }
   73|   828M|}
keccak1600.c:BitDeinterleave:
 1034|    340|{
 1035|    340|    if (BIT_INTERLEAVE) {
  ------------------
  |  |   43|    340|#define BIT_INTERLEAVE (0)
  |  |  ------------------
  |  |  |  Branch (43:24): [Folded, False: 340]
  |  |  ------------------
  ------------------
 1036|      0|        uint32_t hi = (uint32_t)(Ai >> 32), lo = (uint32_t)Ai;
 1037|      0|        uint32_t t0, t1;
 1038|       |
 1039|      0|        t0 = lo & 0x0000ffff;
 1040|      0|        t0 |= t0 << 8;
 1041|      0|        t0 &= 0x00ff00ff;
 1042|      0|        t0 |= t0 << 4;
 1043|      0|        t0 &= 0x0f0f0f0f;
 1044|      0|        t0 |= t0 << 2;
 1045|      0|        t0 &= 0x33333333;
 1046|      0|        t0 |= t0 << 1;
 1047|      0|        t0 &= 0x55555555;
 1048|       |
 1049|      0|        t1 = hi << 16;
 1050|      0|        t1 |= t1 >> 8;
 1051|      0|        t1 &= 0xff00ff00;
 1052|      0|        t1 |= t1 >> 4;
 1053|      0|        t1 &= 0xf0f0f0f0;
 1054|      0|        t1 |= t1 >> 2;
 1055|      0|        t1 &= 0xcccccccc;
 1056|      0|        t1 |= t1 >> 1;
 1057|      0|        t1 &= 0xaaaaaaaa;
 1058|       |
 1059|      0|        lo >>= 16;
 1060|      0|        lo |= lo << 8;
 1061|      0|        lo &= 0x00ff00ff;
 1062|      0|        lo |= lo << 4;
 1063|      0|        lo &= 0x0f0f0f0f;
 1064|      0|        lo |= lo << 2;
 1065|      0|        lo &= 0x33333333;
 1066|      0|        lo |= lo << 1;
 1067|      0|        lo &= 0x55555555;
 1068|       |
 1069|      0|        hi &= 0xffff0000;
 1070|      0|        hi |= hi >> 8;
 1071|      0|        hi &= 0xff00ff00;
 1072|      0|        hi |= hi >> 4;
 1073|      0|        hi &= 0xf0f0f0f0;
 1074|      0|        hi |= hi >> 2;
 1075|      0|        hi &= 0xcccccccc;
 1076|      0|        hi |= hi >> 1;
 1077|      0|        hi &= 0xaaaaaaaa;
 1078|       |
 1079|      0|        Ai = ((uint64_t)(hi | lo) << 32) | (t1 | t0);
 1080|      0|    }
 1081|       |
 1082|    340|    return Ai;
 1083|    340|}

SHA224_Init:
   28|    110|{
   29|    110|    memset(c, 0, sizeof(*c));
   30|    110|    c->h[0] = 0xc1059ed8UL;
   31|    110|    c->h[1] = 0x367cd507UL;
   32|    110|    c->h[2] = 0x3070dd17UL;
   33|    110|    c->h[3] = 0xf70e5939UL;
   34|    110|    c->h[4] = 0xffc00b31UL;
   35|    110|    c->h[5] = 0x68581511UL;
   36|    110|    c->h[6] = 0x64f98fa7UL;
   37|    110|    c->h[7] = 0xbefa4fa4UL;
   38|    110|    c->md_len = SHA224_DIGEST_LENGTH;
  ------------------
  |  |   86|    110|#define SHA224_DIGEST_LENGTH 28
  ------------------
   39|    110|    return 1;
   40|    110|}
SHA256_Init:
   43|  10.6k|{
   44|  10.6k|    memset(c, 0, sizeof(*c));
   45|  10.6k|    c->h[0] = 0x6a09e667UL;
   46|  10.6k|    c->h[1] = 0xbb67ae85UL;
   47|  10.6k|    c->h[2] = 0x3c6ef372UL;
   48|  10.6k|    c->h[3] = 0xa54ff53aUL;
   49|  10.6k|    c->h[4] = 0x510e527fUL;
   50|  10.6k|    c->h[5] = 0x9b05688cUL;
   51|  10.6k|    c->h[6] = 0x1f83d9abUL;
   52|  10.6k|    c->h[7] = 0x5be0cd19UL;
   53|  10.6k|    c->md_len = SHA256_DIGEST_LENGTH;
  ------------------
  |  |   87|  10.6k|#define SHA256_DIGEST_LENGTH 32
  ------------------
   54|  10.6k|    return 1;
   55|  10.6k|}
ossl_sha256_192_init:
   58|      2|{
   59|      2|    SHA256_Init(c);
   60|      2|    c->md_len = SHA256_192_DIGEST_LENGTH;
  ------------------
  |  |   85|      2|#define SHA256_192_DIGEST_LENGTH 24
  ------------------
   61|      2|    return 1;
   62|      2|}
SHA224_Final:
   70|     55|{
   71|     55|    return SHA256_Final(md, c);
   72|     55|}
sha256.c:sha256_block_data_order:
  315|  16.1k|{
  316|  16.1k|    unsigned MD32_REG_T a, b, c, d, e, f, g, h, s0, s1, T1;
  317|  16.1k|    SHA_LONG X[16];
  318|  16.1k|    int i;
  319|  16.1k|    const unsigned char *data = in;
  320|  16.1k|    DECLARE_IS_ENDIAN;
  ------------------
  |  |   25|  16.1k|#define DECLARE_IS_ENDIAN const int ossl_is_little_endian = __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
  ------------------
  321|       |
  322|  6.63M|    while (num--) {
  ------------------
  |  Branch (322:12): [True: 6.61M, False: 16.1k]
  ------------------
  323|       |
  324|  6.61M|        a = ctx->h[0];
  325|  6.61M|        b = ctx->h[1];
  326|  6.61M|        c = ctx->h[2];
  327|  6.61M|        d = ctx->h[3];
  328|  6.61M|        e = ctx->h[4];
  329|  6.61M|        f = ctx->h[5];
  330|  6.61M|        g = ctx->h[6];
  331|  6.61M|        h = ctx->h[7];
  332|       |
  333|  6.61M|        if (!IS_LITTLE_ENDIAN && sizeof(SHA_LONG) == 4
  ------------------
  |  |   26|  13.2M|#define IS_LITTLE_ENDIAN (ossl_is_little_endian)
  ------------------
  |  Branch (333:13): [Folded, False: 6.61M]
  |  Branch (333:34): [True: 0, Folded]
  ------------------
  334|      0|            && ((size_t)in % 4) == 0) {
  ------------------
  |  Branch (334:16): [True: 0, False: 0]
  ------------------
  335|      0|            const SHA_LONG *W = (const SHA_LONG *)data;
  336|       |
  337|      0|            T1 = X[0] = W[0];
  338|      0|            ROUND_00_15(0, a, b, c, d, e, f, g, h);
  ------------------
  |  |  292|      0|    do {                                             \
  |  |  293|      0|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|      0|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|      0|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|      0|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|      0|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|      0|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|      0|        d += T1;                                     \
  |  |  296|      0|        h += T1;                                     \
  |  |  297|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  339|      0|            T1 = X[1] = W[1];
  340|      0|            ROUND_00_15(1, h, a, b, c, d, e, f, g);
  ------------------
  |  |  292|      0|    do {                                             \
  |  |  293|      0|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|      0|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|      0|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|      0|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|      0|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|      0|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|      0|        d += T1;                                     \
  |  |  296|      0|        h += T1;                                     \
  |  |  297|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  341|      0|            T1 = X[2] = W[2];
  342|      0|            ROUND_00_15(2, g, h, a, b, c, d, e, f);
  ------------------
  |  |  292|      0|    do {                                             \
  |  |  293|      0|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|      0|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|      0|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|      0|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|      0|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|      0|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|      0|        d += T1;                                     \
  |  |  296|      0|        h += T1;                                     \
  |  |  297|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  343|      0|            T1 = X[3] = W[3];
  344|      0|            ROUND_00_15(3, f, g, h, a, b, c, d, e);
  ------------------
  |  |  292|      0|    do {                                             \
  |  |  293|      0|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|      0|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|      0|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|      0|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|      0|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|      0|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|      0|        d += T1;                                     \
  |  |  296|      0|        h += T1;                                     \
  |  |  297|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  345|      0|            T1 = X[4] = W[4];
  346|      0|            ROUND_00_15(4, e, f, g, h, a, b, c, d);
  ------------------
  |  |  292|      0|    do {                                             \
  |  |  293|      0|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|      0|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|      0|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|      0|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|      0|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|      0|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|      0|        d += T1;                                     \
  |  |  296|      0|        h += T1;                                     \
  |  |  297|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  347|      0|            T1 = X[5] = W[5];
  348|      0|            ROUND_00_15(5, d, e, f, g, h, a, b, c);
  ------------------
  |  |  292|      0|    do {                                             \
  |  |  293|      0|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|      0|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|      0|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|      0|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|      0|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|      0|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|      0|        d += T1;                                     \
  |  |  296|      0|        h += T1;                                     \
  |  |  297|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  349|      0|            T1 = X[6] = W[6];
  350|      0|            ROUND_00_15(6, c, d, e, f, g, h, a, b);
  ------------------
  |  |  292|      0|    do {                                             \
  |  |  293|      0|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|      0|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|      0|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|      0|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|      0|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|      0|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|      0|        d += T1;                                     \
  |  |  296|      0|        h += T1;                                     \
  |  |  297|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  351|      0|            T1 = X[7] = W[7];
  352|      0|            ROUND_00_15(7, b, c, d, e, f, g, h, a);
  ------------------
  |  |  292|      0|    do {                                             \
  |  |  293|      0|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|      0|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|      0|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|      0|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|      0|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|      0|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|      0|        d += T1;                                     \
  |  |  296|      0|        h += T1;                                     \
  |  |  297|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  353|      0|            T1 = X[8] = W[8];
  354|      0|            ROUND_00_15(8, a, b, c, d, e, f, g, h);
  ------------------
  |  |  292|      0|    do {                                             \
  |  |  293|      0|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|      0|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|      0|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|      0|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|      0|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|      0|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|      0|        d += T1;                                     \
  |  |  296|      0|        h += T1;                                     \
  |  |  297|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  355|      0|            T1 = X[9] = W[9];
  356|      0|            ROUND_00_15(9, h, a, b, c, d, e, f, g);
  ------------------
  |  |  292|      0|    do {                                             \
  |  |  293|      0|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|      0|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|      0|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|      0|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|      0|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|      0|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|      0|        d += T1;                                     \
  |  |  296|      0|        h += T1;                                     \
  |  |  297|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  357|      0|            T1 = X[10] = W[10];
  358|      0|            ROUND_00_15(10, g, h, a, b, c, d, e, f);
  ------------------
  |  |  292|      0|    do {                                             \
  |  |  293|      0|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|      0|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|      0|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|      0|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|      0|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|      0|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|      0|        d += T1;                                     \
  |  |  296|      0|        h += T1;                                     \
  |  |  297|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  359|      0|            T1 = X[11] = W[11];
  360|      0|            ROUND_00_15(11, f, g, h, a, b, c, d, e);
  ------------------
  |  |  292|      0|    do {                                             \
  |  |  293|      0|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|      0|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|      0|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|      0|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|      0|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|      0|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|      0|        d += T1;                                     \
  |  |  296|      0|        h += T1;                                     \
  |  |  297|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  361|      0|            T1 = X[12] = W[12];
  362|      0|            ROUND_00_15(12, e, f, g, h, a, b, c, d);
  ------------------
  |  |  292|      0|    do {                                             \
  |  |  293|      0|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|      0|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|      0|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|      0|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|      0|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|      0|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|      0|        d += T1;                                     \
  |  |  296|      0|        h += T1;                                     \
  |  |  297|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  363|      0|            T1 = X[13] = W[13];
  364|      0|            ROUND_00_15(13, d, e, f, g, h, a, b, c);
  ------------------
  |  |  292|      0|    do {                                             \
  |  |  293|      0|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|      0|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|      0|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|      0|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|      0|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|      0|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|      0|        d += T1;                                     \
  |  |  296|      0|        h += T1;                                     \
  |  |  297|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  365|      0|            T1 = X[14] = W[14];
  366|      0|            ROUND_00_15(14, c, d, e, f, g, h, a, b);
  ------------------
  |  |  292|      0|    do {                                             \
  |  |  293|      0|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|      0|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|      0|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|      0|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|      0|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|      0|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|      0|        d += T1;                                     \
  |  |  296|      0|        h += T1;                                     \
  |  |  297|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  367|      0|            T1 = X[15] = W[15];
  368|      0|            ROUND_00_15(15, b, c, d, e, f, g, h, a);
  ------------------
  |  |  292|      0|    do {                                             \
  |  |  293|      0|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|      0|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|      0|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|      0|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|      0|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|      0|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|      0|        d += T1;                                     \
  |  |  296|      0|        h += T1;                                     \
  |  |  297|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  369|       |
  370|      0|            data += SHA256_CBLOCK;
  ------------------
  |  |   58|      0|#define SHA256_CBLOCK (SHA_LBLOCK * 4) /* SHA-256 treats input data as a  \
  |  |  ------------------
  |  |  |  |   36|      0|#define SHA_LBLOCK 16
  |  |  ------------------
  ------------------
  371|  6.61M|        } else {
  372|  6.61M|            SHA_LONG l;
  373|       |
  374|  6.61M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  129|  6.61M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  6.61M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  6.61M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  6.61M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  375|  6.61M|            T1 = X[0] = l;
  376|  6.61M|            ROUND_00_15(0, a, b, c, d, e, f, g, h);
  ------------------
  |  |  292|  6.61M|    do {                                             \
  |  |  293|  6.61M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|  6.61M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|  6.61M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|  6.61M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|  6.61M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|  6.61M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|  6.61M|        d += T1;                                     \
  |  |  296|  6.61M|        h += T1;                                     \
  |  |  297|  6.61M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 6.61M]
  |  |  ------------------
  ------------------
  377|  6.61M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  129|  6.61M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  6.61M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  6.61M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  6.61M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  378|  6.61M|            T1 = X[1] = l;
  379|  6.61M|            ROUND_00_15(1, h, a, b, c, d, e, f, g);
  ------------------
  |  |  292|  6.61M|    do {                                             \
  |  |  293|  6.61M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|  6.61M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|  6.61M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|  6.61M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|  6.61M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|  6.61M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|  6.61M|        d += T1;                                     \
  |  |  296|  6.61M|        h += T1;                                     \
  |  |  297|  6.61M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 6.61M]
  |  |  ------------------
  ------------------
  380|  6.61M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  129|  6.61M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  6.61M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  6.61M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  6.61M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  381|  6.61M|            T1 = X[2] = l;
  382|  6.61M|            ROUND_00_15(2, g, h, a, b, c, d, e, f);
  ------------------
  |  |  292|  6.61M|    do {                                             \
  |  |  293|  6.61M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|  6.61M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|  6.61M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|  6.61M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|  6.61M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|  6.61M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|  6.61M|        d += T1;                                     \
  |  |  296|  6.61M|        h += T1;                                     \
  |  |  297|  6.61M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 6.61M]
  |  |  ------------------
  ------------------
  383|  6.61M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  129|  6.61M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  6.61M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  6.61M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  6.61M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  384|  6.61M|            T1 = X[3] = l;
  385|  6.61M|            ROUND_00_15(3, f, g, h, a, b, c, d, e);
  ------------------
  |  |  292|  6.61M|    do {                                             \
  |  |  293|  6.61M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|  6.61M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|  6.61M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|  6.61M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|  6.61M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|  6.61M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|  6.61M|        d += T1;                                     \
  |  |  296|  6.61M|        h += T1;                                     \
  |  |  297|  6.61M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 6.61M]
  |  |  ------------------
  ------------------
  386|  6.61M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  129|  6.61M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  6.61M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  6.61M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  6.61M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  387|  6.61M|            T1 = X[4] = l;
  388|  6.61M|            ROUND_00_15(4, e, f, g, h, a, b, c, d);
  ------------------
  |  |  292|  6.61M|    do {                                             \
  |  |  293|  6.61M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|  6.61M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|  6.61M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|  6.61M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|  6.61M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|  6.61M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|  6.61M|        d += T1;                                     \
  |  |  296|  6.61M|        h += T1;                                     \
  |  |  297|  6.61M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 6.61M]
  |  |  ------------------
  ------------------
  389|  6.61M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  129|  6.61M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  6.61M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  6.61M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  6.61M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  390|  6.61M|            T1 = X[5] = l;
  391|  6.61M|            ROUND_00_15(5, d, e, f, g, h, a, b, c);
  ------------------
  |  |  292|  6.61M|    do {                                             \
  |  |  293|  6.61M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|  6.61M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|  6.61M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|  6.61M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|  6.61M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|  6.61M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|  6.61M|        d += T1;                                     \
  |  |  296|  6.61M|        h += T1;                                     \
  |  |  297|  6.61M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 6.61M]
  |  |  ------------------
  ------------------
  392|  6.61M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  129|  6.61M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  6.61M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  6.61M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  6.61M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  393|  6.61M|            T1 = X[6] = l;
  394|  6.61M|            ROUND_00_15(6, c, d, e, f, g, h, a, b);
  ------------------
  |  |  292|  6.61M|    do {                                             \
  |  |  293|  6.61M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|  6.61M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|  6.61M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|  6.61M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|  6.61M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|  6.61M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|  6.61M|        d += T1;                                     \
  |  |  296|  6.61M|        h += T1;                                     \
  |  |  297|  6.61M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 6.61M]
  |  |  ------------------
  ------------------
  395|  6.61M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  129|  6.61M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  6.61M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  6.61M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  6.61M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  396|  6.61M|            T1 = X[7] = l;
  397|  6.61M|            ROUND_00_15(7, b, c, d, e, f, g, h, a);
  ------------------
  |  |  292|  6.61M|    do {                                             \
  |  |  293|  6.61M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|  6.61M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|  6.61M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|  6.61M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|  6.61M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|  6.61M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|  6.61M|        d += T1;                                     \
  |  |  296|  6.61M|        h += T1;                                     \
  |  |  297|  6.61M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 6.61M]
  |  |  ------------------
  ------------------
  398|  6.61M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  129|  6.61M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  6.61M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  6.61M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  6.61M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  399|  6.61M|            T1 = X[8] = l;
  400|  6.61M|            ROUND_00_15(8, a, b, c, d, e, f, g, h);
  ------------------
  |  |  292|  6.61M|    do {                                             \
  |  |  293|  6.61M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|  6.61M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|  6.61M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|  6.61M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|  6.61M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|  6.61M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|  6.61M|        d += T1;                                     \
  |  |  296|  6.61M|        h += T1;                                     \
  |  |  297|  6.61M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 6.61M]
  |  |  ------------------
  ------------------
  401|  6.61M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  129|  6.61M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  6.61M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  6.61M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  6.61M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  402|  6.61M|            T1 = X[9] = l;
  403|  6.61M|            ROUND_00_15(9, h, a, b, c, d, e, f, g);
  ------------------
  |  |  292|  6.61M|    do {                                             \
  |  |  293|  6.61M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|  6.61M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|  6.61M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|  6.61M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|  6.61M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|  6.61M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|  6.61M|        d += T1;                                     \
  |  |  296|  6.61M|        h += T1;                                     \
  |  |  297|  6.61M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 6.61M]
  |  |  ------------------
  ------------------
  404|  6.61M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  129|  6.61M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  6.61M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  6.61M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  6.61M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  405|  6.61M|            T1 = X[10] = l;
  406|  6.61M|            ROUND_00_15(10, g, h, a, b, c, d, e, f);
  ------------------
  |  |  292|  6.61M|    do {                                             \
  |  |  293|  6.61M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|  6.61M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|  6.61M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|  6.61M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|  6.61M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|  6.61M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|  6.61M|        d += T1;                                     \
  |  |  296|  6.61M|        h += T1;                                     \
  |  |  297|  6.61M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 6.61M]
  |  |  ------------------
  ------------------
  407|  6.61M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  129|  6.61M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  6.61M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  6.61M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  6.61M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  408|  6.61M|            T1 = X[11] = l;
  409|  6.61M|            ROUND_00_15(11, f, g, h, a, b, c, d, e);
  ------------------
  |  |  292|  6.61M|    do {                                             \
  |  |  293|  6.61M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|  6.61M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|  6.61M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|  6.61M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|  6.61M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|  6.61M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|  6.61M|        d += T1;                                     \
  |  |  296|  6.61M|        h += T1;                                     \
  |  |  297|  6.61M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 6.61M]
  |  |  ------------------
  ------------------
  410|  6.61M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  129|  6.61M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  6.61M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  6.61M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  6.61M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  411|  6.61M|            T1 = X[12] = l;
  412|  6.61M|            ROUND_00_15(12, e, f, g, h, a, b, c, d);
  ------------------
  |  |  292|  6.61M|    do {                                             \
  |  |  293|  6.61M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|  6.61M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|  6.61M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|  6.61M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|  6.61M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|  6.61M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|  6.61M|        d += T1;                                     \
  |  |  296|  6.61M|        h += T1;                                     \
  |  |  297|  6.61M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 6.61M]
  |  |  ------------------
  ------------------
  413|  6.61M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  129|  6.61M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  6.61M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  6.61M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  6.61M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  414|  6.61M|            T1 = X[13] = l;
  415|  6.61M|            ROUND_00_15(13, d, e, f, g, h, a, b, c);
  ------------------
  |  |  292|  6.61M|    do {                                             \
  |  |  293|  6.61M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|  6.61M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|  6.61M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|  6.61M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|  6.61M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|  6.61M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|  6.61M|        d += T1;                                     \
  |  |  296|  6.61M|        h += T1;                                     \
  |  |  297|  6.61M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 6.61M]
  |  |  ------------------
  ------------------
  416|  6.61M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  129|  6.61M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  6.61M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  6.61M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  6.61M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  417|  6.61M|            T1 = X[14] = l;
  418|  6.61M|            ROUND_00_15(14, c, d, e, f, g, h, a, b);
  ------------------
  |  |  292|  6.61M|    do {                                             \
  |  |  293|  6.61M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|  6.61M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|  6.61M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|  6.61M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|  6.61M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|  6.61M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|  6.61M|        d += T1;                                     \
  |  |  296|  6.61M|        h += T1;                                     \
  |  |  297|  6.61M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 6.61M]
  |  |  ------------------
  ------------------
  419|  6.61M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  129|  6.61M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  6.61M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  6.61M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  6.61M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  420|  6.61M|            T1 = X[15] = l;
  421|  6.61M|            ROUND_00_15(15, b, c, d, e, f, g, h, a);
  ------------------
  |  |  292|  6.61M|    do {                                             \
  |  |  293|  6.61M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|  6.61M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|  6.61M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|  6.61M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|  6.61M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.61M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|  6.61M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|  6.61M|        d += T1;                                     \
  |  |  296|  6.61M|        h += T1;                                     \
  |  |  297|  6.61M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 6.61M]
  |  |  ------------------
  ------------------
  422|  6.61M|        }
  423|       |
  424|  46.3M|        for (i = 16; i < 64; i += 8) {
  ------------------
  |  Branch (424:22): [True: 39.7M, False: 6.61M]
  ------------------
  425|  39.7M|            ROUND_16_63(i + 0, a, b, c, d, e, f, g, h, X);
  ------------------
  |  |  300|  39.7M|    do {                                                   \
  |  |  301|  39.7M|        s0 = X[(i + 1) & 0x0f];                            \
  |  |  302|  39.7M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  211|  39.7M|#define sigma0(x) (ROTATE((x), 25) ^ ROTATE((x), 14) ^ ((x) >> 3))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTATE((x), 25) ^ ROTATE((x), 14) ^ ((x) >> 3))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  303|  39.7M|        s1 = X[(i + 14) & 0x0f];                           \
  |  |  304|  39.7M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  214|  39.7M|#define sigma1(x) (ROTATE((x), 15) ^ ROTATE((x), 13) ^ ((x) >> 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTATE((x), 15) ^ ROTATE((x), 13) ^ ((x) >> 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  305|  39.7M|        T1 = X[(i) & 0x0f] += s0 + s1 + X[(i + 9) & 0x0f]; \
  |  |  306|  39.7M|        ROUND_00_15(i, a, b, c, d, e, f, g, h);            \
  |  |  ------------------
  |  |  |  |  292|  39.7M|    do {                                             \
  |  |  |  |  293|  39.7M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  208|  39.7M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  217|  39.7M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  294|  39.7M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  205|  39.7M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  220|  39.7M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  295|  39.7M|        d += T1;                                     \
  |  |  |  |  296|  39.7M|        h += T1;                                     \
  |  |  |  |  297|  39.7M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (297:14): [Folded, False: 39.7M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  307|  39.7M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (307:14): [Folded, False: 39.7M]
  |  |  ------------------
  ------------------
  426|  39.7M|            ROUND_16_63(i + 1, h, a, b, c, d, e, f, g, X);
  ------------------
  |  |  300|  39.7M|    do {                                                   \
  |  |  301|  39.7M|        s0 = X[(i + 1) & 0x0f];                            \
  |  |  302|  39.7M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  211|  39.7M|#define sigma0(x) (ROTATE((x), 25) ^ ROTATE((x), 14) ^ ((x) >> 3))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTATE((x), 25) ^ ROTATE((x), 14) ^ ((x) >> 3))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  303|  39.7M|        s1 = X[(i + 14) & 0x0f];                           \
  |  |  304|  39.7M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  214|  39.7M|#define sigma1(x) (ROTATE((x), 15) ^ ROTATE((x), 13) ^ ((x) >> 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTATE((x), 15) ^ ROTATE((x), 13) ^ ((x) >> 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  305|  39.7M|        T1 = X[(i) & 0x0f] += s0 + s1 + X[(i + 9) & 0x0f]; \
  |  |  306|  39.7M|        ROUND_00_15(i, a, b, c, d, e, f, g, h);            \
  |  |  ------------------
  |  |  |  |  292|  39.7M|    do {                                             \
  |  |  |  |  293|  39.7M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  208|  39.7M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  217|  39.7M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  294|  39.7M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  205|  39.7M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  220|  39.7M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  295|  39.7M|        d += T1;                                     \
  |  |  |  |  296|  39.7M|        h += T1;                                     \
  |  |  |  |  297|  39.7M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (297:14): [Folded, False: 39.7M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  307|  39.7M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (307:14): [Folded, False: 39.7M]
  |  |  ------------------
  ------------------
  427|  39.7M|            ROUND_16_63(i + 2, g, h, a, b, c, d, e, f, X);
  ------------------
  |  |  300|  39.7M|    do {                                                   \
  |  |  301|  39.7M|        s0 = X[(i + 1) & 0x0f];                            \
  |  |  302|  39.7M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  211|  39.7M|#define sigma0(x) (ROTATE((x), 25) ^ ROTATE((x), 14) ^ ((x) >> 3))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTATE((x), 25) ^ ROTATE((x), 14) ^ ((x) >> 3))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  303|  39.7M|        s1 = X[(i + 14) & 0x0f];                           \
  |  |  304|  39.7M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  214|  39.7M|#define sigma1(x) (ROTATE((x), 15) ^ ROTATE((x), 13) ^ ((x) >> 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTATE((x), 15) ^ ROTATE((x), 13) ^ ((x) >> 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  305|  39.7M|        T1 = X[(i) & 0x0f] += s0 + s1 + X[(i + 9) & 0x0f]; \
  |  |  306|  39.7M|        ROUND_00_15(i, a, b, c, d, e, f, g, h);            \
  |  |  ------------------
  |  |  |  |  292|  39.7M|    do {                                             \
  |  |  |  |  293|  39.7M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  208|  39.7M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  217|  39.7M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  294|  39.7M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  205|  39.7M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  220|  39.7M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  295|  39.7M|        d += T1;                                     \
  |  |  |  |  296|  39.7M|        h += T1;                                     \
  |  |  |  |  297|  39.7M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (297:14): [Folded, False: 39.7M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  307|  39.7M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (307:14): [Folded, False: 39.7M]
  |  |  ------------------
  ------------------
  428|  39.7M|            ROUND_16_63(i + 3, f, g, h, a, b, c, d, e, X);
  ------------------
  |  |  300|  39.7M|    do {                                                   \
  |  |  301|  39.7M|        s0 = X[(i + 1) & 0x0f];                            \
  |  |  302|  39.7M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  211|  39.7M|#define sigma0(x) (ROTATE((x), 25) ^ ROTATE((x), 14) ^ ((x) >> 3))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTATE((x), 25) ^ ROTATE((x), 14) ^ ((x) >> 3))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  303|  39.7M|        s1 = X[(i + 14) & 0x0f];                           \
  |  |  304|  39.7M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  214|  39.7M|#define sigma1(x) (ROTATE((x), 15) ^ ROTATE((x), 13) ^ ((x) >> 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTATE((x), 15) ^ ROTATE((x), 13) ^ ((x) >> 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  305|  39.7M|        T1 = X[(i) & 0x0f] += s0 + s1 + X[(i + 9) & 0x0f]; \
  |  |  306|  39.7M|        ROUND_00_15(i, a, b, c, d, e, f, g, h);            \
  |  |  ------------------
  |  |  |  |  292|  39.7M|    do {                                             \
  |  |  |  |  293|  39.7M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  208|  39.7M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  217|  39.7M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  294|  39.7M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  205|  39.7M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  220|  39.7M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  295|  39.7M|        d += T1;                                     \
  |  |  |  |  296|  39.7M|        h += T1;                                     \
  |  |  |  |  297|  39.7M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (297:14): [Folded, False: 39.7M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  307|  39.7M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (307:14): [Folded, False: 39.7M]
  |  |  ------------------
  ------------------
  429|  39.7M|            ROUND_16_63(i + 4, e, f, g, h, a, b, c, d, X);
  ------------------
  |  |  300|  39.7M|    do {                                                   \
  |  |  301|  39.7M|        s0 = X[(i + 1) & 0x0f];                            \
  |  |  302|  39.7M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  211|  39.7M|#define sigma0(x) (ROTATE((x), 25) ^ ROTATE((x), 14) ^ ((x) >> 3))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTATE((x), 25) ^ ROTATE((x), 14) ^ ((x) >> 3))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  303|  39.7M|        s1 = X[(i + 14) & 0x0f];                           \
  |  |  304|  39.7M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  214|  39.7M|#define sigma1(x) (ROTATE((x), 15) ^ ROTATE((x), 13) ^ ((x) >> 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTATE((x), 15) ^ ROTATE((x), 13) ^ ((x) >> 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  305|  39.7M|        T1 = X[(i) & 0x0f] += s0 + s1 + X[(i + 9) & 0x0f]; \
  |  |  306|  39.7M|        ROUND_00_15(i, a, b, c, d, e, f, g, h);            \
  |  |  ------------------
  |  |  |  |  292|  39.7M|    do {                                             \
  |  |  |  |  293|  39.7M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  208|  39.7M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  217|  39.7M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  294|  39.7M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  205|  39.7M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  220|  39.7M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  295|  39.7M|        d += T1;                                     \
  |  |  |  |  296|  39.7M|        h += T1;                                     \
  |  |  |  |  297|  39.7M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (297:14): [Folded, False: 39.7M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  307|  39.7M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (307:14): [Folded, False: 39.7M]
  |  |  ------------------
  ------------------
  430|  39.7M|            ROUND_16_63(i + 5, d, e, f, g, h, a, b, c, X);
  ------------------
  |  |  300|  39.7M|    do {                                                   \
  |  |  301|  39.7M|        s0 = X[(i + 1) & 0x0f];                            \
  |  |  302|  39.7M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  211|  39.7M|#define sigma0(x) (ROTATE((x), 25) ^ ROTATE((x), 14) ^ ((x) >> 3))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTATE((x), 25) ^ ROTATE((x), 14) ^ ((x) >> 3))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  303|  39.7M|        s1 = X[(i + 14) & 0x0f];                           \
  |  |  304|  39.7M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  214|  39.7M|#define sigma1(x) (ROTATE((x), 15) ^ ROTATE((x), 13) ^ ((x) >> 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTATE((x), 15) ^ ROTATE((x), 13) ^ ((x) >> 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  305|  39.7M|        T1 = X[(i) & 0x0f] += s0 + s1 + X[(i + 9) & 0x0f]; \
  |  |  306|  39.7M|        ROUND_00_15(i, a, b, c, d, e, f, g, h);            \
  |  |  ------------------
  |  |  |  |  292|  39.7M|    do {                                             \
  |  |  |  |  293|  39.7M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  208|  39.7M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  217|  39.7M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  294|  39.7M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  205|  39.7M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  220|  39.7M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  295|  39.7M|        d += T1;                                     \
  |  |  |  |  296|  39.7M|        h += T1;                                     \
  |  |  |  |  297|  39.7M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (297:14): [Folded, False: 39.7M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  307|  39.7M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (307:14): [Folded, False: 39.7M]
  |  |  ------------------
  ------------------
  431|  39.7M|            ROUND_16_63(i + 6, c, d, e, f, g, h, a, b, X);
  ------------------
  |  |  300|  39.7M|    do {                                                   \
  |  |  301|  39.7M|        s0 = X[(i + 1) & 0x0f];                            \
  |  |  302|  39.7M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  211|  39.7M|#define sigma0(x) (ROTATE((x), 25) ^ ROTATE((x), 14) ^ ((x) >> 3))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTATE((x), 25) ^ ROTATE((x), 14) ^ ((x) >> 3))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  303|  39.7M|        s1 = X[(i + 14) & 0x0f];                           \
  |  |  304|  39.7M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  214|  39.7M|#define sigma1(x) (ROTATE((x), 15) ^ ROTATE((x), 13) ^ ((x) >> 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTATE((x), 15) ^ ROTATE((x), 13) ^ ((x) >> 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  305|  39.7M|        T1 = X[(i) & 0x0f] += s0 + s1 + X[(i + 9) & 0x0f]; \
  |  |  306|  39.7M|        ROUND_00_15(i, a, b, c, d, e, f, g, h);            \
  |  |  ------------------
  |  |  |  |  292|  39.7M|    do {                                             \
  |  |  |  |  293|  39.7M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  208|  39.7M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  217|  39.7M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  294|  39.7M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  205|  39.7M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  220|  39.7M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  295|  39.7M|        d += T1;                                     \
  |  |  |  |  296|  39.7M|        h += T1;                                     \
  |  |  |  |  297|  39.7M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (297:14): [Folded, False: 39.7M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  307|  39.7M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (307:14): [Folded, False: 39.7M]
  |  |  ------------------
  ------------------
  432|  39.7M|            ROUND_16_63(i + 7, b, c, d, e, f, g, h, a, X);
  ------------------
  |  |  300|  39.7M|    do {                                                   \
  |  |  301|  39.7M|        s0 = X[(i + 1) & 0x0f];                            \
  |  |  302|  39.7M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  211|  39.7M|#define sigma0(x) (ROTATE((x), 25) ^ ROTATE((x), 14) ^ ((x) >> 3))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTATE((x), 25) ^ ROTATE((x), 14) ^ ((x) >> 3))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  303|  39.7M|        s1 = X[(i + 14) & 0x0f];                           \
  |  |  304|  39.7M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  214|  39.7M|#define sigma1(x) (ROTATE((x), 15) ^ ROTATE((x), 13) ^ ((x) >> 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTATE((x), 15) ^ ROTATE((x), 13) ^ ((x) >> 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  305|  39.7M|        T1 = X[(i) & 0x0f] += s0 + s1 + X[(i + 9) & 0x0f]; \
  |  |  306|  39.7M|        ROUND_00_15(i, a, b, c, d, e, f, g, h);            \
  |  |  ------------------
  |  |  |  |  292|  39.7M|    do {                                             \
  |  |  |  |  293|  39.7M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  208|  39.7M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  217|  39.7M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  294|  39.7M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  205|  39.7M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  39.7M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  220|  39.7M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  295|  39.7M|        d += T1;                                     \
  |  |  |  |  296|  39.7M|        h += T1;                                     \
  |  |  |  |  297|  39.7M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (297:14): [Folded, False: 39.7M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  307|  39.7M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (307:14): [Folded, False: 39.7M]
  |  |  ------------------
  ------------------
  433|  39.7M|        }
  434|       |
  435|  6.61M|        ctx->h[0] += a;
  436|  6.61M|        ctx->h[1] += b;
  437|  6.61M|        ctx->h[2] += c;
  438|  6.61M|        ctx->h[3] += d;
  439|  6.61M|        ctx->h[4] += e;
  440|  6.61M|        ctx->h[5] += f;
  441|  6.61M|        ctx->h[6] += g;
  442|  6.61M|        ctx->h[7] += h;
  443|  6.61M|    }
  444|  16.1k|}

ossl_sha3_reset:
   30|    186|{
   31|       |#if defined(__s390x__) && defined(OPENSSL_CPUID_OBJ)
   32|       |    if (!(OPENSSL_s390xcap_P.stfle[1] & S390X_CAPBIT(S390X_MSA12)))
   33|       |#endif
   34|    186|        memset(ctx->A, 0, sizeof(ctx->A));
   35|    186|    ctx->bufsz = 0;
   36|    186|    ctx->xof_state = XOF_STATE_INIT;
  ------------------
  |  |   35|    186|#define XOF_STATE_INIT 0
  ------------------
   37|    186|}
ossl_sha3_init:
   40|     63|{
   41|     63|    size_t bsz = SHA3_BLOCKSIZE(bitlen);
  ------------------
  |  |   21|     63|#define SHA3_BLOCKSIZE(bitlen) (KECCAK1600_WIDTH - bitlen * 2) / 8
  |  |  ------------------
  |  |  |  |   18|     63|#define KECCAK1600_WIDTH 1600
  |  |  ------------------
  ------------------
   42|       |
   43|     63|    if (bsz <= sizeof(ctx->buf)) {
  ------------------
  |  Branch (43:9): [True: 63, False: 0]
  ------------------
   44|     63|        ossl_sha3_reset(ctx);
   45|     63|        ctx->block_size = bsz;
   46|     63|        ctx->md_size = bitlen / 8;
   47|     63|        ctx->pad = pad;
   48|     63|        return 1;
   49|     63|    }
   50|       |
   51|      0|    return 0;
   52|     63|}
ossl_keccak_init:
   55|      3|{
   56|      3|    int ret = ossl_sha3_init(ctx, pad, bitlen);
   57|       |
   58|      3|    if (ret)
  ------------------
  |  Branch (58:9): [True: 3, False: 0]
  ------------------
   59|      3|        ctx->md_size = mdlen / 8;
   60|      3|    return ret;
   61|      3|}
ossl_sha3_absorb:
   68|    126|{
   69|    126|    const size_t bsz = ctx->block_size;
   70|    126|    size_t num, rem;
   71|       |
   72|    126|    if (ossl_unlikely(len == 0))
  ------------------
  |  |   23|    126|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 126]
  |  |  ------------------
  ------------------
   73|      0|        return 1;
   74|       |
   75|    126|    if (!(ctx->xof_state == XOF_STATE_INIT || ctx->xof_state == XOF_STATE_ABSORB))
  ------------------
  |  |   35|    252|#define XOF_STATE_INIT 0
  ------------------
                  if (!(ctx->xof_state == XOF_STATE_INIT || ctx->xof_state == XOF_STATE_ABSORB))
  ------------------
  |  |   36|     63|#define XOF_STATE_ABSORB 1
  ------------------
  |  Branch (75:11): [True: 63, False: 63]
  |  Branch (75:47): [True: 63, False: 0]
  ------------------
   76|      0|        return 0;
   77|       |
   78|       |    /* Is there anything in the buffer already ? */
   79|    126|    if ((num = ctx->bufsz) != 0) {
  ------------------
  |  Branch (79:9): [True: 63, False: 63]
  ------------------
   80|       |        /* Calculate how much space is left in the buffer */
   81|     63|        rem = bsz - num;
   82|       |        /* If the new input does not fill the buffer then just add it */
   83|     63|        if (len < rem) {
  ------------------
  |  Branch (83:13): [True: 0, False: 63]
  ------------------
   84|      0|            memcpy(ctx->buf + num, inp, len);
   85|      0|            ctx->bufsz += len;
   86|      0|            return 1;
   87|      0|        }
   88|       |        /* otherwise fill up the buffer and absorb the buffer */
   89|     63|        memcpy(ctx->buf + num, inp, rem);
   90|       |        /* Update the input pointer */
   91|     63|        inp += rem;
   92|     63|        len -= rem;
   93|     63|        ctx->meth.absorb(ctx, ctx->buf, bsz);
   94|     63|        ctx->bufsz = 0;
   95|     63|        ctx->xof_state = XOF_STATE_ABSORB;
  ------------------
  |  |   36|     63|#define XOF_STATE_ABSORB 1
  ------------------
   96|     63|    }
   97|       |    /* Absorb the input - rem = leftover part of the input < blocksize) */
   98|    126|    rem = ctx->meth.absorb(ctx, inp, len);
   99|    126|    if (len >= bsz)
  ------------------
  |  Branch (99:9): [True: 126, False: 0]
  ------------------
  100|    126|        ctx->xof_state = XOF_STATE_ABSORB;
  ------------------
  |  |   36|    126|#define XOF_STATE_ABSORB 1
  ------------------
  101|       |    /* Copy the leftover bit of the input into the buffer */
  102|    126|    if (ossl_likely(rem > 0)) {
  ------------------
  |  |   22|    126|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (22:24): [True: 116, False: 10]
  |  |  ------------------
  ------------------
  103|    116|        memcpy(ctx->buf, inp + len - rem, rem);
  104|    116|        ctx->bufsz = rem;
  105|    116|    }
  106|    126|    return 1;
  107|    126|}
ossl_sha3_final:
  115|     63|{
  116|     63|    int ret;
  117|       |
  118|     63|    if (ctx->xof_state == XOF_STATE_SQUEEZE
  ------------------
  |  |   38|    126|#define XOF_STATE_SQUEEZE 3
  ------------------
  |  Branch (118:9): [True: 0, False: 63]
  ------------------
  119|     63|        || ctx->xof_state == XOF_STATE_FINAL)
  ------------------
  |  |   37|     63|#define XOF_STATE_FINAL 2
  ------------------
  |  Branch (119:12): [True: 0, False: 63]
  ------------------
  120|      0|        return 0;
  121|     63|    if (outlen == 0)
  ------------------
  |  Branch (121:9): [True: 0, False: 63]
  ------------------
  122|      0|        return 1;
  123|       |
  124|     63|    ret = ctx->meth.final(ctx, out, outlen);
  125|     63|    ctx->xof_state = XOF_STATE_FINAL;
  ------------------
  |  |   37|     63|#define XOF_STATE_FINAL 2
  ------------------
  126|     63|    return ret;
  127|     63|}
ossl_sha3_absorb_default:
  143|    189|{
  144|    189|    return SHA3_absorb(ctx->A, inp, len, ctx->block_size);
  145|    189|}
ossl_sha3_final_default:
  152|     63|{
  153|     63|    size_t bsz = ctx->block_size;
  154|     63|    size_t num = ctx->bufsz;
  155|       |
  156|       |    /*
  157|       |     * Pad the data with 10*1. Note that |num| can be |bsz - 1|
  158|       |     * in which case both byte operations below are performed on
  159|       |     * same byte...
  160|       |     */
  161|     63|    memset(ctx->buf + num, 0, bsz - num);
  162|     63|    ctx->buf[num] = ctx->pad;
  163|     63|    ctx->buf[bsz - 1] |= 0x80;
  164|       |
  165|     63|    (void)SHA3_absorb(ctx->A, ctx->buf, bsz, bsz);
  166|       |
  167|     63|    SHA3_squeeze(ctx->A, out, outlen, bsz, 0);
  168|     63|    return 1;
  169|     63|}

sha512_224_init:
   78|      2|{
   79|      2|    c->h[0] = U64(0x8c3d37c819544da2);
  ------------------
  |  |   72|      2|#define U64(C) C##ULL
  ------------------
   80|      2|    c->h[1] = U64(0x73e1996689dcd4d6);
  ------------------
  |  |   72|      2|#define U64(C) C##ULL
  ------------------
   81|      2|    c->h[2] = U64(0x1dfab7ae32ff9c82);
  ------------------
  |  |   72|      2|#define U64(C) C##ULL
  ------------------
   82|      2|    c->h[3] = U64(0x679dd514582f9fcf);
  ------------------
  |  |   72|      2|#define U64(C) C##ULL
  ------------------
   83|      2|    c->h[4] = U64(0x0f6d2b697bd44da8);
  ------------------
  |  |   72|      2|#define U64(C) C##ULL
  ------------------
   84|      2|    c->h[5] = U64(0x77e36f7304c48942);
  ------------------
  |  |   72|      2|#define U64(C) C##ULL
  ------------------
   85|      2|    c->h[6] = U64(0x3f9d85a86a1d36c8);
  ------------------
  |  |   72|      2|#define U64(C) C##ULL
  ------------------
   86|      2|    c->h[7] = U64(0x1112e6ad91d692a1);
  ------------------
  |  |   72|      2|#define U64(C) C##ULL
  ------------------
   87|       |
   88|      2|    c->Nl = 0;
   89|      2|    c->Nh = 0;
   90|      2|    c->num = 0;
   91|      2|    c->md_len = SHA224_DIGEST_LENGTH;
  ------------------
  |  |   86|      2|#define SHA224_DIGEST_LENGTH 28
  ------------------
   92|      2|    return 1;
   93|      2|}
sha512_256_init:
   96|      2|{
   97|      2|    c->h[0] = U64(0x22312194fc2bf72c);
  ------------------
  |  |   72|      2|#define U64(C) C##ULL
  ------------------
   98|      2|    c->h[1] = U64(0x9f555fa3c84c64c2);
  ------------------
  |  |   72|      2|#define U64(C) C##ULL
  ------------------
   99|      2|    c->h[2] = U64(0x2393b86b6f53b151);
  ------------------
  |  |   72|      2|#define U64(C) C##ULL
  ------------------
  100|      2|    c->h[3] = U64(0x963877195940eabd);
  ------------------
  |  |   72|      2|#define U64(C) C##ULL
  ------------------
  101|      2|    c->h[4] = U64(0x96283ee2a88effe3);
  ------------------
  |  |   72|      2|#define U64(C) C##ULL
  ------------------
  102|      2|    c->h[5] = U64(0xbe5e1e2553863992);
  ------------------
  |  |   72|      2|#define U64(C) C##ULL
  ------------------
  103|      2|    c->h[6] = U64(0x2b0199fc2c85b8aa);
  ------------------
  |  |   72|      2|#define U64(C) C##ULL
  ------------------
  104|      2|    c->h[7] = U64(0x0eb72ddc81c52ca2);
  ------------------
  |  |   72|      2|#define U64(C) C##ULL
  ------------------
  105|       |
  106|      2|    c->Nl = 0;
  107|      2|    c->Nh = 0;
  108|      2|    c->num = 0;
  109|      2|    c->md_len = SHA256_DIGEST_LENGTH;
  ------------------
  |  |   87|      2|#define SHA256_DIGEST_LENGTH 32
  ------------------
  110|      2|    return 1;
  111|      2|}
SHA384_Init:
  114|     18|{
  115|     18|    c->h[0] = U64(0xcbbb9d5dc1059ed8);
  ------------------
  |  |   72|     18|#define U64(C) C##ULL
  ------------------
  116|     18|    c->h[1] = U64(0x629a292a367cd507);
  ------------------
  |  |   72|     18|#define U64(C) C##ULL
  ------------------
  117|     18|    c->h[2] = U64(0x9159015a3070dd17);
  ------------------
  |  |   72|     18|#define U64(C) C##ULL
  ------------------
  118|     18|    c->h[3] = U64(0x152fecd8f70e5939);
  ------------------
  |  |   72|     18|#define U64(C) C##ULL
  ------------------
  119|     18|    c->h[4] = U64(0x67332667ffc00b31);
  ------------------
  |  |   72|     18|#define U64(C) C##ULL
  ------------------
  120|     18|    c->h[5] = U64(0x8eb44a8768581511);
  ------------------
  |  |   72|     18|#define U64(C) C##ULL
  ------------------
  121|     18|    c->h[6] = U64(0xdb0c2e0d64f98fa7);
  ------------------
  |  |   72|     18|#define U64(C) C##ULL
  ------------------
  122|     18|    c->h[7] = U64(0x47b5481dbefa4fa4);
  ------------------
  |  |   72|     18|#define U64(C) C##ULL
  ------------------
  123|       |
  124|     18|    c->Nl = 0;
  125|     18|    c->Nh = 0;
  126|     18|    c->num = 0;
  127|     18|    c->md_len = SHA384_DIGEST_LENGTH;
  ------------------
  |  |   88|     18|#define SHA384_DIGEST_LENGTH 48
  ------------------
  128|     18|    return 1;
  129|     18|}
SHA512_Init:
  132|  7.08k|{
  133|  7.08k|    c->h[0] = U64(0x6a09e667f3bcc908);
  ------------------
  |  |   72|  7.08k|#define U64(C) C##ULL
  ------------------
  134|  7.08k|    c->h[1] = U64(0xbb67ae8584caa73b);
  ------------------
  |  |   72|  7.08k|#define U64(C) C##ULL
  ------------------
  135|  7.08k|    c->h[2] = U64(0x3c6ef372fe94f82b);
  ------------------
  |  |   72|  7.08k|#define U64(C) C##ULL
  ------------------
  136|  7.08k|    c->h[3] = U64(0xa54ff53a5f1d36f1);
  ------------------
  |  |   72|  7.08k|#define U64(C) C##ULL
  ------------------
  137|  7.08k|    c->h[4] = U64(0x510e527fade682d1);
  ------------------
  |  |   72|  7.08k|#define U64(C) C##ULL
  ------------------
  138|  7.08k|    c->h[5] = U64(0x9b05688c2b3e6c1f);
  ------------------
  |  |   72|  7.08k|#define U64(C) C##ULL
  ------------------
  139|  7.08k|    c->h[6] = U64(0x1f83d9abfb41bd6b);
  ------------------
  |  |   72|  7.08k|#define U64(C) C##ULL
  ------------------
  140|  7.08k|    c->h[7] = U64(0x5be0cd19137e2179);
  ------------------
  |  |   72|  7.08k|#define U64(C) C##ULL
  ------------------
  141|       |
  142|  7.08k|    c->Nl = 0;
  143|  7.08k|    c->Nh = 0;
  144|  7.08k|    c->num = 0;
  145|  7.08k|    c->md_len = SHA512_DIGEST_LENGTH;
  ------------------
  |  |   89|  7.08k|#define SHA512_DIGEST_LENGTH 64
  ------------------
  146|  7.08k|    return 1;
  147|  7.08k|}
SHA512_Final:
  163|  3.55k|{
  164|  3.55k|    unsigned char *p = (unsigned char *)c->u.p;
  165|  3.55k|    size_t n = c->num;
  166|       |
  167|  3.55k|    p[n] = 0x80; /* There always is a room for one */
  168|  3.55k|    n++;
  169|  3.55k|    if (n > (sizeof(c->u) - 16)) {
  ------------------
  |  Branch (169:9): [True: 47, False: 3.50k]
  ------------------
  170|     47|        memset(p + n, 0, sizeof(c->u) - n);
  171|     47|        n = 0;
  172|     47|        sha512_block_data_order(c, p, 1);
  173|     47|    }
  174|       |
  175|  3.55k|    memset(p + n, 0, sizeof(c->u) - 16 - n);
  176|       |#ifdef B_ENDIAN
  177|       |    c->u.d[SHA_LBLOCK - 2] = c->Nh;
  178|       |    c->u.d[SHA_LBLOCK - 1] = c->Nl;
  179|       |#else
  180|  3.55k|    uint8_t *cu = p + sizeof(c->u) - 16;
  181|       |
  182|  3.55k|    cu = OPENSSL_store_u64_be(cu, (uint64_t)c->Nh);
  183|  3.55k|    cu = OPENSSL_store_u64_be(cu, (uint64_t)c->Nl);
  184|  3.55k|#endif
  185|       |
  186|  3.55k|    sha512_block_data_order(c, p, 1);
  187|       |
  188|  3.55k|    if (out == NULL)
  ------------------
  |  Branch (188:9): [True: 0, False: 3.55k]
  ------------------
  189|      0|        return 0;
  190|       |
  191|       |    /* Let compiler decide if it's appropriate to unroll... */
  192|  3.55k|    switch (c->md_len) {
  193|      0|    case SHA256_192_DIGEST_LENGTH:
  ------------------
  |  |   85|      0|#define SHA256_192_DIGEST_LENGTH 24
  ------------------
  |  Branch (193:5): [True: 0, False: 3.55k]
  ------------------
  194|      0|        OUTPUT_RESULT(out, SHA256_192_DIGEST_LENGTH);
  ------------------
  |  |  159|      0|    for (n = 0; n < (len / 8); n++) \
  |  |  ------------------
  |  |  |  Branch (159:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  160|      0|    md = OPENSSL_store_u64_be(md, (uint64_t)c->h[n])
  ------------------
  195|      0|        break;
  196|      1|    case SHA256_DIGEST_LENGTH:
  ------------------
  |  |   87|      1|#define SHA256_DIGEST_LENGTH 32
  ------------------
  |  Branch (196:5): [True: 1, False: 3.55k]
  ------------------
  197|      1|        OUTPUT_RESULT(out, SHA256_DIGEST_LENGTH);
  ------------------
  |  |  159|      5|    for (n = 0; n < (len / 8); n++) \
  |  |  ------------------
  |  |  |  Branch (159:17): [True: 4, False: 1]
  |  |  ------------------
  |  |  160|      4|    md = OPENSSL_store_u64_be(md, (uint64_t)c->h[n])
  ------------------
  198|      1|        break;
  199|      9|    case SHA384_DIGEST_LENGTH:
  ------------------
  |  |   88|      9|#define SHA384_DIGEST_LENGTH 48
  ------------------
  |  Branch (199:5): [True: 9, False: 3.54k]
  ------------------
  200|      9|        OUTPUT_RESULT(out, SHA384_DIGEST_LENGTH);
  ------------------
  |  |  159|     63|    for (n = 0; n < (len / 8); n++) \
  |  |  ------------------
  |  |  |  Branch (159:17): [True: 54, False: 9]
  |  |  ------------------
  |  |  160|     54|    md = OPENSSL_store_u64_be(md, (uint64_t)c->h[n])
  ------------------
  201|      9|        break;
  202|  3.54k|    case SHA512_DIGEST_LENGTH:
  ------------------
  |  |   89|  3.54k|#define SHA512_DIGEST_LENGTH 64
  ------------------
  |  Branch (202:5): [True: 3.54k, False: 11]
  ------------------
  203|  3.54k|        OUTPUT_RESULT(out, SHA512_DIGEST_LENGTH);
  ------------------
  |  |  159|  31.8k|    for (n = 0; n < (len / 8); n++) \
  |  |  ------------------
  |  |  |  Branch (159:17): [True: 28.3k, False: 3.54k]
  |  |  ------------------
  |  |  160|  28.3k|    md = OPENSSL_store_u64_be(md, (uint64_t)c->h[n])
  ------------------
  204|  3.54k|        break;
  205|      1|    case SHA224_DIGEST_LENGTH: {
  ------------------
  |  |   86|      1|#define SHA224_DIGEST_LENGTH 28
  ------------------
  |  Branch (205:5): [True: 1, False: 3.55k]
  ------------------
  206|      1|        OUTPUT_RESULT(out, SHA224_DIGEST_LENGTH);
  ------------------
  |  |  159|      4|    for (n = 0; n < (len / 8); n++) \
  |  |  ------------------
  |  |  |  Branch (159:17): [True: 3, False: 1]
  |  |  ------------------
  |  |  160|      3|    md = OPENSSL_store_u64_be(md, (uint64_t)c->h[n])
  ------------------
  207|       |        /*
  208|       |         * For 224 bits, there are four bytes left over that have to be
  209|       |         * processed separately.
  210|       |         */
  211|      1|        {
  212|      1|            SHA_LONG64 t = c->h[SHA224_DIGEST_LENGTH / 8];
  ------------------
  |  |   86|      1|#define SHA224_DIGEST_LENGTH 28
  ------------------
  213|       |
  214|      1|            *(out++) = (unsigned char)(t >> 56);
  215|      1|            *(out++) = (unsigned char)(t >> 48);
  216|      1|            *(out++) = (unsigned char)(t >> 40);
  217|      1|            *(out++) = (unsigned char)(t >> 32);
  218|      1|        }
  219|      1|        break;
  220|      0|    }
  221|       |    /* ... as well as make sure md_len is not abused. */
  222|      0|    default:
  ------------------
  |  Branch (222:5): [True: 0, False: 3.55k]
  ------------------
  223|      0|        return 0;
  224|  3.55k|    }
  225|       |
  226|  3.55k|    return 1;
  227|  3.55k|}
SHA384_Final:
  230|      9|{
  231|      9|    return SHA512_Final(md, c);
  232|      9|}
SHA512_Update_thunk:
  235|  7.10k|{
  236|  7.10k|    SHA512_CTX *c = (SHA512_CTX *)cp;
  237|  7.10k|    SHA_LONG64 l;
  238|  7.10k|    unsigned char *p = c->u.p;
  239|       |
  240|  7.10k|    if (len == 0)
  ------------------
  |  Branch (240:9): [True: 0, False: 7.10k]
  ------------------
  241|      0|        return 1;
  242|       |
  243|  7.10k|    l = (c->Nl + (((SHA_LONG64)len) << 3)) & U64(0xffffffffffffffff);
  ------------------
  |  |   72|  7.10k|#define U64(C) C##ULL
  ------------------
  244|  7.10k|    if (l < c->Nl)
  ------------------
  |  Branch (244:9): [True: 0, False: 7.10k]
  ------------------
  245|      0|        c->Nh++;
  246|  7.10k|    if (sizeof(len) >= 8)
  ------------------
  |  Branch (246:9): [True: 7.10k, Folded]
  ------------------
  247|  7.10k|        c->Nh += (((SHA_LONG64)len) >> 61);
  248|  7.10k|    c->Nl = l;
  249|       |
  250|  7.10k|    if (c->num != 0) {
  ------------------
  |  Branch (250:9): [True: 0, False: 7.10k]
  ------------------
  251|      0|        size_t n = sizeof(c->u) - c->num;
  252|       |
  253|      0|        if (len < n) {
  ------------------
  |  Branch (253:13): [True: 0, False: 0]
  ------------------
  254|      0|            memcpy(p + c->num, data, len), c->num += (unsigned int)len;
  255|      0|            return 1;
  256|      0|        } else {
  257|      0|            memcpy(p + c->num, data, n), c->num = 0;
  258|      0|            len -= n, data += n;
  259|      0|            sha512_block_data_order(c, p, 1);
  260|      0|        }
  261|      0|    }
  262|       |
  263|  7.10k|    if (len >= sizeof(c->u)) {
  ------------------
  |  Branch (263:9): [True: 7.10k, False: 0]
  ------------------
  264|       |#ifndef SHA512_BLOCK_CAN_MANAGE_UNALIGNED_DATA
  265|       |        if ((size_t)data % sizeof(c->u.d[0]) != 0)
  266|       |            while (len >= sizeof(c->u))
  267|       |                memcpy(p, data, sizeof(c->u)),
  268|       |                    sha512_block_data_order(c, p, 1),
  269|       |                    len -= sizeof(c->u), data += sizeof(c->u);
  270|       |        else
  271|       |#endif
  272|  7.10k|            sha512_block_data_order(c, data, len / sizeof(c->u)),
  273|  7.10k|                data += len, len %= sizeof(c->u), data -= len;
  274|  7.10k|    }
  275|       |
  276|  7.10k|    if (len != 0)
  ------------------
  |  Branch (276:9): [True: 99, False: 7.00k]
  ------------------
  277|     99|        memcpy(p, data, len), c->num = (int)len;
  278|       |
  279|  7.10k|    return 1;
  280|  7.10k|}
sha512.c:sha512_block_data_order:
  699|  10.7k|{
  700|  10.7k|    const SHA_LONG64 *W = in;
  701|  10.7k|    SHA_LONG64 a, b, c, d, e, f, g, h, s0, s1, T1;
  702|  10.7k|    SHA_LONG64 X[16];
  703|  10.7k|    int i;
  704|       |
  705|  3.43M|    while (num--) {
  ------------------
  |  Branch (705:12): [True: 3.42M, False: 10.7k]
  ------------------
  706|       |
  707|  3.42M|        a = ctx->h[0];
  708|  3.42M|        b = ctx->h[1];
  709|  3.42M|        c = ctx->h[2];
  710|  3.42M|        d = ctx->h[3];
  711|  3.42M|        e = ctx->h[4];
  712|  3.42M|        f = ctx->h[5];
  713|  3.42M|        g = ctx->h[6];
  714|  3.42M|        h = ctx->h[7];
  715|       |
  716|       |#ifdef B_ENDIAN
  717|       |        T1 = X[0] = W[0];
  718|       |        ROUND_00_15(0, a, b, c, d, e, f, g, h);
  719|       |        T1 = X[1] = W[1];
  720|       |        ROUND_00_15(1, h, a, b, c, d, e, f, g);
  721|       |        T1 = X[2] = W[2];
  722|       |        ROUND_00_15(2, g, h, a, b, c, d, e, f);
  723|       |        T1 = X[3] = W[3];
  724|       |        ROUND_00_15(3, f, g, h, a, b, c, d, e);
  725|       |        T1 = X[4] = W[4];
  726|       |        ROUND_00_15(4, e, f, g, h, a, b, c, d);
  727|       |        T1 = X[5] = W[5];
  728|       |        ROUND_00_15(5, d, e, f, g, h, a, b, c);
  729|       |        T1 = X[6] = W[6];
  730|       |        ROUND_00_15(6, c, d, e, f, g, h, a, b);
  731|       |        T1 = X[7] = W[7];
  732|       |        ROUND_00_15(7, b, c, d, e, f, g, h, a);
  733|       |        T1 = X[8] = W[8];
  734|       |        ROUND_00_15(8, a, b, c, d, e, f, g, h);
  735|       |        T1 = X[9] = W[9];
  736|       |        ROUND_00_15(9, h, a, b, c, d, e, f, g);
  737|       |        T1 = X[10] = W[10];
  738|       |        ROUND_00_15(10, g, h, a, b, c, d, e, f);
  739|       |        T1 = X[11] = W[11];
  740|       |        ROUND_00_15(11, f, g, h, a, b, c, d, e);
  741|       |        T1 = X[12] = W[12];
  742|       |        ROUND_00_15(12, e, f, g, h, a, b, c, d);
  743|       |        T1 = X[13] = W[13];
  744|       |        ROUND_00_15(13, d, e, f, g, h, a, b, c);
  745|       |        T1 = X[14] = W[14];
  746|       |        ROUND_00_15(14, c, d, e, f, g, h, a, b);
  747|       |        T1 = X[15] = W[15];
  748|       |        ROUND_00_15(15, b, c, d, e, f, g, h, a);
  749|       |#else
  750|  3.42M|        T1 = X[0] = PULL64(W[0]);
  ------------------
  |  |  513|  3.42M|#define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  ------------------
  751|  3.42M|        ROUND_00_15(0, a, b, c, d, e, f, g, h);
  ------------------
  |  |  676|  3.42M|    do {                                             \
  |  |  677|  3.42M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  522|  3.42M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  531|  3.42M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  678|  3.42M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  519|  3.42M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  534|  3.42M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  679|  3.42M|        d += T1;                                     \
  |  |  680|  3.42M|        h += T1;                                     \
  |  |  681|  3.42M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (681:14): [Folded, False: 3.42M]
  |  |  ------------------
  ------------------
  752|  3.42M|        T1 = X[1] = PULL64(W[1]);
  ------------------
  |  |  513|  3.42M|#define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  ------------------
  753|  3.42M|        ROUND_00_15(1, h, a, b, c, d, e, f, g);
  ------------------
  |  |  676|  3.42M|    do {                                             \
  |  |  677|  3.42M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  522|  3.42M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  531|  3.42M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  678|  3.42M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  519|  3.42M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  534|  3.42M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  679|  3.42M|        d += T1;                                     \
  |  |  680|  3.42M|        h += T1;                                     \
  |  |  681|  3.42M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (681:14): [Folded, False: 3.42M]
  |  |  ------------------
  ------------------
  754|  3.42M|        T1 = X[2] = PULL64(W[2]);
  ------------------
  |  |  513|  3.42M|#define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  ------------------
  755|  3.42M|        ROUND_00_15(2, g, h, a, b, c, d, e, f);
  ------------------
  |  |  676|  3.42M|    do {                                             \
  |  |  677|  3.42M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  522|  3.42M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  531|  3.42M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  678|  3.42M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  519|  3.42M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  534|  3.42M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  679|  3.42M|        d += T1;                                     \
  |  |  680|  3.42M|        h += T1;                                     \
  |  |  681|  3.42M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (681:14): [Folded, False: 3.42M]
  |  |  ------------------
  ------------------
  756|  3.42M|        T1 = X[3] = PULL64(W[3]);
  ------------------
  |  |  513|  3.42M|#define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  ------------------
  757|  3.42M|        ROUND_00_15(3, f, g, h, a, b, c, d, e);
  ------------------
  |  |  676|  3.42M|    do {                                             \
  |  |  677|  3.42M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  522|  3.42M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  531|  3.42M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  678|  3.42M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  519|  3.42M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  534|  3.42M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  679|  3.42M|        d += T1;                                     \
  |  |  680|  3.42M|        h += T1;                                     \
  |  |  681|  3.42M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (681:14): [Folded, False: 3.42M]
  |  |  ------------------
  ------------------
  758|  3.42M|        T1 = X[4] = PULL64(W[4]);
  ------------------
  |  |  513|  3.42M|#define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  ------------------
  759|  3.42M|        ROUND_00_15(4, e, f, g, h, a, b, c, d);
  ------------------
  |  |  676|  3.42M|    do {                                             \
  |  |  677|  3.42M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  522|  3.42M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  531|  3.42M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  678|  3.42M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  519|  3.42M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  534|  3.42M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  679|  3.42M|        d += T1;                                     \
  |  |  680|  3.42M|        h += T1;                                     \
  |  |  681|  3.42M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (681:14): [Folded, False: 3.42M]
  |  |  ------------------
  ------------------
  760|  3.42M|        T1 = X[5] = PULL64(W[5]);
  ------------------
  |  |  513|  3.42M|#define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  ------------------
  761|  3.42M|        ROUND_00_15(5, d, e, f, g, h, a, b, c);
  ------------------
  |  |  676|  3.42M|    do {                                             \
  |  |  677|  3.42M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  522|  3.42M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  531|  3.42M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  678|  3.42M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  519|  3.42M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  534|  3.42M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  679|  3.42M|        d += T1;                                     \
  |  |  680|  3.42M|        h += T1;                                     \
  |  |  681|  3.42M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (681:14): [Folded, False: 3.42M]
  |  |  ------------------
  ------------------
  762|  3.42M|        T1 = X[6] = PULL64(W[6]);
  ------------------
  |  |  513|  3.42M|#define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  ------------------
  763|  3.42M|        ROUND_00_15(6, c, d, e, f, g, h, a, b);
  ------------------
  |  |  676|  3.42M|    do {                                             \
  |  |  677|  3.42M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  522|  3.42M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  531|  3.42M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  678|  3.42M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  519|  3.42M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  534|  3.42M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  679|  3.42M|        d += T1;                                     \
  |  |  680|  3.42M|        h += T1;                                     \
  |  |  681|  3.42M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (681:14): [Folded, False: 3.42M]
  |  |  ------------------
  ------------------
  764|  3.42M|        T1 = X[7] = PULL64(W[7]);
  ------------------
  |  |  513|  3.42M|#define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  ------------------
  765|  3.42M|        ROUND_00_15(7, b, c, d, e, f, g, h, a);
  ------------------
  |  |  676|  3.42M|    do {                                             \
  |  |  677|  3.42M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  522|  3.42M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  531|  3.42M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  678|  3.42M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  519|  3.42M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  534|  3.42M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  679|  3.42M|        d += T1;                                     \
  |  |  680|  3.42M|        h += T1;                                     \
  |  |  681|  3.42M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (681:14): [Folded, False: 3.42M]
  |  |  ------------------
  ------------------
  766|  3.42M|        T1 = X[8] = PULL64(W[8]);
  ------------------
  |  |  513|  3.42M|#define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  ------------------
  767|  3.42M|        ROUND_00_15(8, a, b, c, d, e, f, g, h);
  ------------------
  |  |  676|  3.42M|    do {                                             \
  |  |  677|  3.42M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  522|  3.42M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  531|  3.42M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  678|  3.42M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  519|  3.42M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  534|  3.42M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  679|  3.42M|        d += T1;                                     \
  |  |  680|  3.42M|        h += T1;                                     \
  |  |  681|  3.42M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (681:14): [Folded, False: 3.42M]
  |  |  ------------------
  ------------------
  768|  3.42M|        T1 = X[9] = PULL64(W[9]);
  ------------------
  |  |  513|  3.42M|#define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  ------------------
  769|  3.42M|        ROUND_00_15(9, h, a, b, c, d, e, f, g);
  ------------------
  |  |  676|  3.42M|    do {                                             \
  |  |  677|  3.42M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  522|  3.42M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  531|  3.42M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  678|  3.42M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  519|  3.42M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  534|  3.42M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  679|  3.42M|        d += T1;                                     \
  |  |  680|  3.42M|        h += T1;                                     \
  |  |  681|  3.42M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (681:14): [Folded, False: 3.42M]
  |  |  ------------------
  ------------------
  770|  3.42M|        T1 = X[10] = PULL64(W[10]);
  ------------------
  |  |  513|  3.42M|#define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  ------------------
  771|  3.42M|        ROUND_00_15(10, g, h, a, b, c, d, e, f);
  ------------------
  |  |  676|  3.42M|    do {                                             \
  |  |  677|  3.42M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  522|  3.42M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  531|  3.42M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  678|  3.42M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  519|  3.42M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  534|  3.42M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  679|  3.42M|        d += T1;                                     \
  |  |  680|  3.42M|        h += T1;                                     \
  |  |  681|  3.42M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (681:14): [Folded, False: 3.42M]
  |  |  ------------------
  ------------------
  772|  3.42M|        T1 = X[11] = PULL64(W[11]);
  ------------------
  |  |  513|  3.42M|#define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  ------------------
  773|  3.42M|        ROUND_00_15(11, f, g, h, a, b, c, d, e);
  ------------------
  |  |  676|  3.42M|    do {                                             \
  |  |  677|  3.42M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  522|  3.42M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  531|  3.42M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  678|  3.42M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  519|  3.42M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  534|  3.42M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  679|  3.42M|        d += T1;                                     \
  |  |  680|  3.42M|        h += T1;                                     \
  |  |  681|  3.42M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (681:14): [Folded, False: 3.42M]
  |  |  ------------------
  ------------------
  774|  3.42M|        T1 = X[12] = PULL64(W[12]);
  ------------------
  |  |  513|  3.42M|#define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  ------------------
  775|  3.42M|        ROUND_00_15(12, e, f, g, h, a, b, c, d);
  ------------------
  |  |  676|  3.42M|    do {                                             \
  |  |  677|  3.42M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  522|  3.42M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  531|  3.42M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  678|  3.42M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  519|  3.42M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  534|  3.42M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  679|  3.42M|        d += T1;                                     \
  |  |  680|  3.42M|        h += T1;                                     \
  |  |  681|  3.42M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (681:14): [Folded, False: 3.42M]
  |  |  ------------------
  ------------------
  776|  3.42M|        T1 = X[13] = PULL64(W[13]);
  ------------------
  |  |  513|  3.42M|#define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  ------------------
  777|  3.42M|        ROUND_00_15(13, d, e, f, g, h, a, b, c);
  ------------------
  |  |  676|  3.42M|    do {                                             \
  |  |  677|  3.42M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  522|  3.42M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  531|  3.42M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  678|  3.42M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  519|  3.42M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  534|  3.42M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  679|  3.42M|        d += T1;                                     \
  |  |  680|  3.42M|        h += T1;                                     \
  |  |  681|  3.42M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (681:14): [Folded, False: 3.42M]
  |  |  ------------------
  ------------------
  778|  3.42M|        T1 = X[14] = PULL64(W[14]);
  ------------------
  |  |  513|  3.42M|#define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  ------------------
  779|  3.42M|        ROUND_00_15(14, c, d, e, f, g, h, a, b);
  ------------------
  |  |  676|  3.42M|    do {                                             \
  |  |  677|  3.42M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  522|  3.42M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  531|  3.42M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  678|  3.42M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  519|  3.42M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  534|  3.42M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  679|  3.42M|        d += T1;                                     \
  |  |  680|  3.42M|        h += T1;                                     \
  |  |  681|  3.42M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (681:14): [Folded, False: 3.42M]
  |  |  ------------------
  ------------------
  780|  3.42M|        T1 = X[15] = PULL64(W[15]);
  ------------------
  |  |  513|  3.42M|#define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  |  |               #define PULL64(x) (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | B(x, 7))
  |  |  ------------------
  |  |  |  |  512|  3.42M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  ------------------
  781|  3.42M|        ROUND_00_15(15, b, c, d, e, f, g, h, a);
  ------------------
  |  |  676|  3.42M|    do {                                             \
  |  |  677|  3.42M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  522|  3.42M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  531|  3.42M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  678|  3.42M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  519|  3.42M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  3.42M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  534|  3.42M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  679|  3.42M|        d += T1;                                     \
  |  |  680|  3.42M|        h += T1;                                     \
  |  |  681|  3.42M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (681:14): [Folded, False: 3.42M]
  |  |  ------------------
  ------------------
  782|  3.42M|#endif
  783|       |
  784|  17.1M|        for (i = 16; i < 80; i += 16) {
  ------------------
  |  Branch (784:22): [True: 13.7M, False: 3.42M]
  ------------------
  785|  13.7M|            ROUND_16_80(i, 0, a, b, c, d, e, f, g, h, X);
  ------------------
  |  |  684|  13.7M|    do {                                                   \
  |  |  685|  13.7M|        s0 = X[(j + 1) & 0x0f];                            \
  |  |  686|  13.7M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  525|  13.7M|#define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  687|  13.7M|        s1 = X[(j + 14) & 0x0f];                           \
  |  |  688|  13.7M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  528|  13.7M|#define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  689|  13.7M|        T1 = X[(j) & 0x0f] += s0 + s1 + X[(j + 9) & 0x0f]; \
  |  |  690|  13.7M|        ROUND_00_15(i + j, a, b, c, d, e, f, g, h);        \
  |  |  ------------------
  |  |  |  |  676|  13.7M|    do {                                             \
  |  |  |  |  677|  13.7M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  522|  13.7M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  531|  13.7M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  678|  13.7M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  519|  13.7M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  534|  13.7M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  679|  13.7M|        d += T1;                                     \
  |  |  |  |  680|  13.7M|        h += T1;                                     \
  |  |  |  |  681|  13.7M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (681:14): [Folded, False: 13.7M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  691|  13.7M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (691:14): [Folded, False: 13.7M]
  |  |  ------------------
  ------------------
  786|  13.7M|            ROUND_16_80(i, 1, h, a, b, c, d, e, f, g, X);
  ------------------
  |  |  684|  13.7M|    do {                                                   \
  |  |  685|  13.7M|        s0 = X[(j + 1) & 0x0f];                            \
  |  |  686|  13.7M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  525|  13.7M|#define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  687|  13.7M|        s1 = X[(j + 14) & 0x0f];                           \
  |  |  688|  13.7M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  528|  13.7M|#define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  689|  13.7M|        T1 = X[(j) & 0x0f] += s0 + s1 + X[(j + 9) & 0x0f]; \
  |  |  690|  13.7M|        ROUND_00_15(i + j, a, b, c, d, e, f, g, h);        \
  |  |  ------------------
  |  |  |  |  676|  13.7M|    do {                                             \
  |  |  |  |  677|  13.7M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  522|  13.7M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  531|  13.7M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  678|  13.7M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  519|  13.7M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  534|  13.7M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  679|  13.7M|        d += T1;                                     \
  |  |  |  |  680|  13.7M|        h += T1;                                     \
  |  |  |  |  681|  13.7M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (681:14): [Folded, False: 13.7M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  691|  13.7M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (691:14): [Folded, False: 13.7M]
  |  |  ------------------
  ------------------
  787|  13.7M|            ROUND_16_80(i, 2, g, h, a, b, c, d, e, f, X);
  ------------------
  |  |  684|  13.7M|    do {                                                   \
  |  |  685|  13.7M|        s0 = X[(j + 1) & 0x0f];                            \
  |  |  686|  13.7M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  525|  13.7M|#define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  687|  13.7M|        s1 = X[(j + 14) & 0x0f];                           \
  |  |  688|  13.7M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  528|  13.7M|#define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  689|  13.7M|        T1 = X[(j) & 0x0f] += s0 + s1 + X[(j + 9) & 0x0f]; \
  |  |  690|  13.7M|        ROUND_00_15(i + j, a, b, c, d, e, f, g, h);        \
  |  |  ------------------
  |  |  |  |  676|  13.7M|    do {                                             \
  |  |  |  |  677|  13.7M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  522|  13.7M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  531|  13.7M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  678|  13.7M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  519|  13.7M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  534|  13.7M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  679|  13.7M|        d += T1;                                     \
  |  |  |  |  680|  13.7M|        h += T1;                                     \
  |  |  |  |  681|  13.7M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (681:14): [Folded, False: 13.7M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  691|  13.7M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (691:14): [Folded, False: 13.7M]
  |  |  ------------------
  ------------------
  788|  13.7M|            ROUND_16_80(i, 3, f, g, h, a, b, c, d, e, X);
  ------------------
  |  |  684|  13.7M|    do {                                                   \
  |  |  685|  13.7M|        s0 = X[(j + 1) & 0x0f];                            \
  |  |  686|  13.7M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  525|  13.7M|#define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  687|  13.7M|        s1 = X[(j + 14) & 0x0f];                           \
  |  |  688|  13.7M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  528|  13.7M|#define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  689|  13.7M|        T1 = X[(j) & 0x0f] += s0 + s1 + X[(j + 9) & 0x0f]; \
  |  |  690|  13.7M|        ROUND_00_15(i + j, a, b, c, d, e, f, g, h);        \
  |  |  ------------------
  |  |  |  |  676|  13.7M|    do {                                             \
  |  |  |  |  677|  13.7M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  522|  13.7M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  531|  13.7M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  678|  13.7M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  519|  13.7M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  534|  13.7M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  679|  13.7M|        d += T1;                                     \
  |  |  |  |  680|  13.7M|        h += T1;                                     \
  |  |  |  |  681|  13.7M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (681:14): [Folded, False: 13.7M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  691|  13.7M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (691:14): [Folded, False: 13.7M]
  |  |  ------------------
  ------------------
  789|  13.7M|            ROUND_16_80(i, 4, e, f, g, h, a, b, c, d, X);
  ------------------
  |  |  684|  13.7M|    do {                                                   \
  |  |  685|  13.7M|        s0 = X[(j + 1) & 0x0f];                            \
  |  |  686|  13.7M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  525|  13.7M|#define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  687|  13.7M|        s1 = X[(j + 14) & 0x0f];                           \
  |  |  688|  13.7M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  528|  13.7M|#define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  689|  13.7M|        T1 = X[(j) & 0x0f] += s0 + s1 + X[(j + 9) & 0x0f]; \
  |  |  690|  13.7M|        ROUND_00_15(i + j, a, b, c, d, e, f, g, h);        \
  |  |  ------------------
  |  |  |  |  676|  13.7M|    do {                                             \
  |  |  |  |  677|  13.7M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  522|  13.7M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  531|  13.7M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  678|  13.7M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  519|  13.7M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  534|  13.7M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  679|  13.7M|        d += T1;                                     \
  |  |  |  |  680|  13.7M|        h += T1;                                     \
  |  |  |  |  681|  13.7M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (681:14): [Folded, False: 13.7M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  691|  13.7M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (691:14): [Folded, False: 13.7M]
  |  |  ------------------
  ------------------
  790|  13.7M|            ROUND_16_80(i, 5, d, e, f, g, h, a, b, c, X);
  ------------------
  |  |  684|  13.7M|    do {                                                   \
  |  |  685|  13.7M|        s0 = X[(j + 1) & 0x0f];                            \
  |  |  686|  13.7M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  525|  13.7M|#define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  687|  13.7M|        s1 = X[(j + 14) & 0x0f];                           \
  |  |  688|  13.7M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  528|  13.7M|#define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  689|  13.7M|        T1 = X[(j) & 0x0f] += s0 + s1 + X[(j + 9) & 0x0f]; \
  |  |  690|  13.7M|        ROUND_00_15(i + j, a, b, c, d, e, f, g, h);        \
  |  |  ------------------
  |  |  |  |  676|  13.7M|    do {                                             \
  |  |  |  |  677|  13.7M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  522|  13.7M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  531|  13.7M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  678|  13.7M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  519|  13.7M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  534|  13.7M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  679|  13.7M|        d += T1;                                     \
  |  |  |  |  680|  13.7M|        h += T1;                                     \
  |  |  |  |  681|  13.7M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (681:14): [Folded, False: 13.7M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  691|  13.7M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (691:14): [Folded, False: 13.7M]
  |  |  ------------------
  ------------------
  791|  13.7M|            ROUND_16_80(i, 6, c, d, e, f, g, h, a, b, X);
  ------------------
  |  |  684|  13.7M|    do {                                                   \
  |  |  685|  13.7M|        s0 = X[(j + 1) & 0x0f];                            \
  |  |  686|  13.7M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  525|  13.7M|#define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  687|  13.7M|        s1 = X[(j + 14) & 0x0f];                           \
  |  |  688|  13.7M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  528|  13.7M|#define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  689|  13.7M|        T1 = X[(j) & 0x0f] += s0 + s1 + X[(j + 9) & 0x0f]; \
  |  |  690|  13.7M|        ROUND_00_15(i + j, a, b, c, d, e, f, g, h);        \
  |  |  ------------------
  |  |  |  |  676|  13.7M|    do {                                             \
  |  |  |  |  677|  13.7M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  522|  13.7M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  531|  13.7M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  678|  13.7M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  519|  13.7M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  534|  13.7M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  679|  13.7M|        d += T1;                                     \
  |  |  |  |  680|  13.7M|        h += T1;                                     \
  |  |  |  |  681|  13.7M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (681:14): [Folded, False: 13.7M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  691|  13.7M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (691:14): [Folded, False: 13.7M]
  |  |  ------------------
  ------------------
  792|  13.7M|            ROUND_16_80(i, 7, b, c, d, e, f, g, h, a, X);
  ------------------
  |  |  684|  13.7M|    do {                                                   \
  |  |  685|  13.7M|        s0 = X[(j + 1) & 0x0f];                            \
  |  |  686|  13.7M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  525|  13.7M|#define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  687|  13.7M|        s1 = X[(j + 14) & 0x0f];                           \
  |  |  688|  13.7M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  528|  13.7M|#define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  689|  13.7M|        T1 = X[(j) & 0x0f] += s0 + s1 + X[(j + 9) & 0x0f]; \
  |  |  690|  13.7M|        ROUND_00_15(i + j, a, b, c, d, e, f, g, h);        \
  |  |  ------------------
  |  |  |  |  676|  13.7M|    do {                                             \
  |  |  |  |  677|  13.7M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  522|  13.7M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  531|  13.7M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  678|  13.7M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  519|  13.7M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  534|  13.7M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  679|  13.7M|        d += T1;                                     \
  |  |  |  |  680|  13.7M|        h += T1;                                     \
  |  |  |  |  681|  13.7M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (681:14): [Folded, False: 13.7M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  691|  13.7M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (691:14): [Folded, False: 13.7M]
  |  |  ------------------
  ------------------
  793|  13.7M|            ROUND_16_80(i, 8, a, b, c, d, e, f, g, h, X);
  ------------------
  |  |  684|  13.7M|    do {                                                   \
  |  |  685|  13.7M|        s0 = X[(j + 1) & 0x0f];                            \
  |  |  686|  13.7M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  525|  13.7M|#define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  687|  13.7M|        s1 = X[(j + 14) & 0x0f];                           \
  |  |  688|  13.7M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  528|  13.7M|#define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  689|  13.7M|        T1 = X[(j) & 0x0f] += s0 + s1 + X[(j + 9) & 0x0f]; \
  |  |  690|  13.7M|        ROUND_00_15(i + j, a, b, c, d, e, f, g, h);        \
  |  |  ------------------
  |  |  |  |  676|  13.7M|    do {                                             \
  |  |  |  |  677|  13.7M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  522|  13.7M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  531|  13.7M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  678|  13.7M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  519|  13.7M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  534|  13.7M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  679|  13.7M|        d += T1;                                     \
  |  |  |  |  680|  13.7M|        h += T1;                                     \
  |  |  |  |  681|  13.7M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (681:14): [Folded, False: 13.7M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  691|  13.7M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (691:14): [Folded, False: 13.7M]
  |  |  ------------------
  ------------------
  794|  13.7M|            ROUND_16_80(i, 9, h, a, b, c, d, e, f, g, X);
  ------------------
  |  |  684|  13.7M|    do {                                                   \
  |  |  685|  13.7M|        s0 = X[(j + 1) & 0x0f];                            \
  |  |  686|  13.7M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  525|  13.7M|#define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  687|  13.7M|        s1 = X[(j + 14) & 0x0f];                           \
  |  |  688|  13.7M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  528|  13.7M|#define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  689|  13.7M|        T1 = X[(j) & 0x0f] += s0 + s1 + X[(j + 9) & 0x0f]; \
  |  |  690|  13.7M|        ROUND_00_15(i + j, a, b, c, d, e, f, g, h);        \
  |  |  ------------------
  |  |  |  |  676|  13.7M|    do {                                             \
  |  |  |  |  677|  13.7M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  522|  13.7M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  531|  13.7M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  678|  13.7M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  519|  13.7M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  534|  13.7M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  679|  13.7M|        d += T1;                                     \
  |  |  |  |  680|  13.7M|        h += T1;                                     \
  |  |  |  |  681|  13.7M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (681:14): [Folded, False: 13.7M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  691|  13.7M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (691:14): [Folded, False: 13.7M]
  |  |  ------------------
  ------------------
  795|  13.7M|            ROUND_16_80(i, 10, g, h, a, b, c, d, e, f, X);
  ------------------
  |  |  684|  13.7M|    do {                                                   \
  |  |  685|  13.7M|        s0 = X[(j + 1) & 0x0f];                            \
  |  |  686|  13.7M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  525|  13.7M|#define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  687|  13.7M|        s1 = X[(j + 14) & 0x0f];                           \
  |  |  688|  13.7M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  528|  13.7M|#define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  689|  13.7M|        T1 = X[(j) & 0x0f] += s0 + s1 + X[(j + 9) & 0x0f]; \
  |  |  690|  13.7M|        ROUND_00_15(i + j, a, b, c, d, e, f, g, h);        \
  |  |  ------------------
  |  |  |  |  676|  13.7M|    do {                                             \
  |  |  |  |  677|  13.7M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  522|  13.7M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  531|  13.7M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  678|  13.7M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  519|  13.7M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  534|  13.7M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  679|  13.7M|        d += T1;                                     \
  |  |  |  |  680|  13.7M|        h += T1;                                     \
  |  |  |  |  681|  13.7M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (681:14): [Folded, False: 13.7M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  691|  13.7M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (691:14): [Folded, False: 13.7M]
  |  |  ------------------
  ------------------
  796|  13.7M|            ROUND_16_80(i, 11, f, g, h, a, b, c, d, e, X);
  ------------------
  |  |  684|  13.7M|    do {                                                   \
  |  |  685|  13.7M|        s0 = X[(j + 1) & 0x0f];                            \
  |  |  686|  13.7M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  525|  13.7M|#define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  687|  13.7M|        s1 = X[(j + 14) & 0x0f];                           \
  |  |  688|  13.7M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  528|  13.7M|#define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  689|  13.7M|        T1 = X[(j) & 0x0f] += s0 + s1 + X[(j + 9) & 0x0f]; \
  |  |  690|  13.7M|        ROUND_00_15(i + j, a, b, c, d, e, f, g, h);        \
  |  |  ------------------
  |  |  |  |  676|  13.7M|    do {                                             \
  |  |  |  |  677|  13.7M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  522|  13.7M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  531|  13.7M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  678|  13.7M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  519|  13.7M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  534|  13.7M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  679|  13.7M|        d += T1;                                     \
  |  |  |  |  680|  13.7M|        h += T1;                                     \
  |  |  |  |  681|  13.7M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (681:14): [Folded, False: 13.7M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  691|  13.7M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (691:14): [Folded, False: 13.7M]
  |  |  ------------------
  ------------------
  797|  13.7M|            ROUND_16_80(i, 12, e, f, g, h, a, b, c, d, X);
  ------------------
  |  |  684|  13.7M|    do {                                                   \
  |  |  685|  13.7M|        s0 = X[(j + 1) & 0x0f];                            \
  |  |  686|  13.7M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  525|  13.7M|#define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  687|  13.7M|        s1 = X[(j + 14) & 0x0f];                           \
  |  |  688|  13.7M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  528|  13.7M|#define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  689|  13.7M|        T1 = X[(j) & 0x0f] += s0 + s1 + X[(j + 9) & 0x0f]; \
  |  |  690|  13.7M|        ROUND_00_15(i + j, a, b, c, d, e, f, g, h);        \
  |  |  ------------------
  |  |  |  |  676|  13.7M|    do {                                             \
  |  |  |  |  677|  13.7M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  522|  13.7M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  531|  13.7M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  678|  13.7M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  519|  13.7M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  534|  13.7M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  679|  13.7M|        d += T1;                                     \
  |  |  |  |  680|  13.7M|        h += T1;                                     \
  |  |  |  |  681|  13.7M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (681:14): [Folded, False: 13.7M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  691|  13.7M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (691:14): [Folded, False: 13.7M]
  |  |  ------------------
  ------------------
  798|  13.7M|            ROUND_16_80(i, 13, d, e, f, g, h, a, b, c, X);
  ------------------
  |  |  684|  13.7M|    do {                                                   \
  |  |  685|  13.7M|        s0 = X[(j + 1) & 0x0f];                            \
  |  |  686|  13.7M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  525|  13.7M|#define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  687|  13.7M|        s1 = X[(j + 14) & 0x0f];                           \
  |  |  688|  13.7M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  528|  13.7M|#define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  689|  13.7M|        T1 = X[(j) & 0x0f] += s0 + s1 + X[(j + 9) & 0x0f]; \
  |  |  690|  13.7M|        ROUND_00_15(i + j, a, b, c, d, e, f, g, h);        \
  |  |  ------------------
  |  |  |  |  676|  13.7M|    do {                                             \
  |  |  |  |  677|  13.7M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  522|  13.7M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  531|  13.7M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  678|  13.7M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  519|  13.7M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  534|  13.7M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  679|  13.7M|        d += T1;                                     \
  |  |  |  |  680|  13.7M|        h += T1;                                     \
  |  |  |  |  681|  13.7M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (681:14): [Folded, False: 13.7M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  691|  13.7M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (691:14): [Folded, False: 13.7M]
  |  |  ------------------
  ------------------
  799|  13.7M|            ROUND_16_80(i, 14, c, d, e, f, g, h, a, b, X);
  ------------------
  |  |  684|  13.7M|    do {                                                   \
  |  |  685|  13.7M|        s0 = X[(j + 1) & 0x0f];                            \
  |  |  686|  13.7M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  525|  13.7M|#define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  687|  13.7M|        s1 = X[(j + 14) & 0x0f];                           \
  |  |  688|  13.7M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  528|  13.7M|#define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  689|  13.7M|        T1 = X[(j) & 0x0f] += s0 + s1 + X[(j + 9) & 0x0f]; \
  |  |  690|  13.7M|        ROUND_00_15(i + j, a, b, c, d, e, f, g, h);        \
  |  |  ------------------
  |  |  |  |  676|  13.7M|    do {                                             \
  |  |  |  |  677|  13.7M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  522|  13.7M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  531|  13.7M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  678|  13.7M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  519|  13.7M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  534|  13.7M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  679|  13.7M|        d += T1;                                     \
  |  |  |  |  680|  13.7M|        h += T1;                                     \
  |  |  |  |  681|  13.7M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (681:14): [Folded, False: 13.7M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  691|  13.7M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (691:14): [Folded, False: 13.7M]
  |  |  ------------------
  ------------------
  800|  13.7M|            ROUND_16_80(i, 15, b, c, d, e, f, g, h, a, X);
  ------------------
  |  |  684|  13.7M|    do {                                                   \
  |  |  685|  13.7M|        s0 = X[(j + 1) & 0x0f];                            \
  |  |  686|  13.7M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  525|  13.7M|#define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  687|  13.7M|        s1 = X[(j + 14) & 0x0f];                           \
  |  |  688|  13.7M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  528|  13.7M|#define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  689|  13.7M|        T1 = X[(j) & 0x0f] += s0 + s1 + X[(j + 9) & 0x0f]; \
  |  |  690|  13.7M|        ROUND_00_15(i + j, a, b, c, d, e, f, g, h);        \
  |  |  ------------------
  |  |  |  |  676|  13.7M|    do {                                             \
  |  |  |  |  677|  13.7M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  522|  13.7M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  531|  13.7M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  678|  13.7M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  519|  13.7M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  516|  13.7M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  534|  13.7M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  679|  13.7M|        d += T1;                                     \
  |  |  |  |  680|  13.7M|        h += T1;                                     \
  |  |  |  |  681|  13.7M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (681:14): [Folded, False: 13.7M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  691|  13.7M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (691:14): [Folded, False: 13.7M]
  |  |  ------------------
  ------------------
  801|  13.7M|        }
  802|       |
  803|  3.42M|        ctx->h[0] += a;
  804|  3.42M|        ctx->h[1] += b;
  805|  3.42M|        ctx->h[2] += c;
  806|  3.42M|        ctx->h[3] += d;
  807|  3.42M|        ctx->h[4] += e;
  808|  3.42M|        ctx->h[5] += f;
  809|  3.42M|        ctx->h[6] += g;
  810|  3.42M|        ctx->h[7] += h;
  811|       |
  812|  3.42M|        W += SHA_LBLOCK;
  ------------------
  |  |   36|  3.42M|#define SHA_LBLOCK 16
  ------------------
  813|  3.42M|    }
  814|  10.7k|}

SHA1_Update:
   61|     36|{
   62|     36|    return SHA1_Update_thunk((void *)c, (const unsigned char *)data, len);
   63|     36|}
SHA1_Init:
   72|    226|{
   73|    226|    memset(c, 0, sizeof(*c));
   74|    226|    c->h0 = INIT_DATA_h0;
  ------------------
  |  |   65|    226|#define INIT_DATA_h0 0x67452301UL
  ------------------
   75|    226|    c->h1 = INIT_DATA_h1;
  ------------------
  |  |   66|    226|#define INIT_DATA_h1 0xefcdab89UL
  ------------------
   76|    226|    c->h2 = INIT_DATA_h2;
  ------------------
  |  |   67|    226|#define INIT_DATA_h2 0x98badcfeUL
  ------------------
   77|    226|    c->h3 = INIT_DATA_h3;
  ------------------
  |  |   68|    226|#define INIT_DATA_h3 0x10325476UL
  ------------------
   78|    226|    c->h4 = INIT_DATA_h4;
  ------------------
  |  |   69|    226|#define INIT_DATA_h4 0xc3d2e1f0UL
  ------------------
   79|    226|    return 1;
   80|    226|}
sha1dgst.c:sha1_block_data_order:
  155|    369|{
  156|    369|    const unsigned char *data = p;
  157|    369|    register unsigned MD32_REG_T A, B, C, D, E, T, l;
  158|    369|#ifndef MD32_XARRAY
  159|    369|    unsigned MD32_REG_T XX0, XX1, XX2, XX3, XX4, XX5, XX6, XX7,
  160|    369|        XX8, XX9, XX10, XX11, XX12, XX13, XX14, XX15;
  161|       |#else
  162|       |    SHA_LONG XX[16];
  163|       |#endif
  164|       |
  165|    369|    A = c->h0;
  166|    369|    B = c->h1;
  167|    369|    C = c->h2;
  168|    369|    D = c->h3;
  169|    369|    E = c->h4;
  170|       |
  171|  2.95M|    for (;;) {
  172|  2.95M|        DECLARE_IS_ENDIAN;
  ------------------
  |  |   25|  2.95M|#define DECLARE_IS_ENDIAN const int ossl_is_little_endian = __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
  ------------------
  173|       |
  174|  2.95M|        if (!IS_LITTLE_ENDIAN && sizeof(SHA_LONG) == 4
  ------------------
  |  |   26|  5.90M|#define IS_LITTLE_ENDIAN (ossl_is_little_endian)
  ------------------
  |  Branch (174:13): [Folded, False: 2.95M]
  |  Branch (174:34): [True: 0, Folded]
  ------------------
  175|      0|            && ((size_t)p % 4) == 0) {
  ------------------
  |  Branch (175:16): [True: 0, False: 0]
  ------------------
  176|      0|            const SHA_LONG *W = (const SHA_LONG *)data;
  177|       |
  178|      0|            X(0) = W[0];
  ------------------
  |  |  143|      0|#define X(i) XX##i
  ------------------
  179|      0|            X(1) = W[1];
  ------------------
  |  |  143|      0|#define X(i) XX##i
  ------------------
  180|      0|            BODY_00_15(0, A, B, C, D, E, T, X(0));
  ------------------
  |  |  103|      0|    (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|      0|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|      0|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  104|      0|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  181|      0|            X(2) = W[2];
  ------------------
  |  |  143|      0|#define X(i) XX##i
  ------------------
  182|      0|            BODY_00_15(1, T, A, B, C, D, E, X(1));
  ------------------
  |  |  103|      0|    (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|      0|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|      0|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  104|      0|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  183|      0|            X(3) = W[3];
  ------------------
  |  |  143|      0|#define X(i) XX##i
  ------------------
  184|      0|            BODY_00_15(2, E, T, A, B, C, D, X(2));
  ------------------
  |  |  103|      0|    (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|      0|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|      0|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  104|      0|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  185|      0|            X(4) = W[4];
  ------------------
  |  |  143|      0|#define X(i) XX##i
  ------------------
  186|      0|            BODY_00_15(3, D, E, T, A, B, C, X(3));
  ------------------
  |  |  103|      0|    (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|      0|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|      0|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  104|      0|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  187|      0|            X(5) = W[5];
  ------------------
  |  |  143|      0|#define X(i) XX##i
  ------------------
  188|      0|            BODY_00_15(4, C, D, E, T, A, B, X(4));
  ------------------
  |  |  103|      0|    (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|      0|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|      0|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  104|      0|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  189|      0|            X(6) = W[6];
  ------------------
  |  |  143|      0|#define X(i) XX##i
  ------------------
  190|      0|            BODY_00_15(5, B, C, D, E, T, A, X(5));
  ------------------
  |  |  103|      0|    (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|      0|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|      0|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  104|      0|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  191|      0|            X(7) = W[7];
  ------------------
  |  |  143|      0|#define X(i) XX##i
  ------------------
  192|      0|            BODY_00_15(6, A, B, C, D, E, T, X(6));
  ------------------
  |  |  103|      0|    (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|      0|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|      0|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  104|      0|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  193|      0|            X(8) = W[8];
  ------------------
  |  |  143|      0|#define X(i) XX##i
  ------------------
  194|      0|            BODY_00_15(7, T, A, B, C, D, E, X(7));
  ------------------
  |  |  103|      0|    (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|      0|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|      0|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  104|      0|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  195|      0|            X(9) = W[9];
  ------------------
  |  |  143|      0|#define X(i) XX##i
  ------------------
  196|      0|            BODY_00_15(8, E, T, A, B, C, D, X(8));
  ------------------
  |  |  103|      0|    (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|      0|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|      0|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  104|      0|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  197|      0|            X(10) = W[10];
  ------------------
  |  |  143|      0|#define X(i) XX##i
  ------------------
  198|      0|            BODY_00_15(9, D, E, T, A, B, C, X(9));
  ------------------
  |  |  103|      0|    (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|      0|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|      0|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  104|      0|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  199|      0|            X(11) = W[11];
  ------------------
  |  |  143|      0|#define X(i) XX##i
  ------------------
  200|      0|            BODY_00_15(10, C, D, E, T, A, B, X(10));
  ------------------
  |  |  103|      0|    (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|      0|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|      0|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  104|      0|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  201|      0|            X(12) = W[12];
  ------------------
  |  |  143|      0|#define X(i) XX##i
  ------------------
  202|      0|            BODY_00_15(11, B, C, D, E, T, A, X(11));
  ------------------
  |  |  103|      0|    (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|      0|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|      0|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  104|      0|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  203|      0|            X(13) = W[13];
  ------------------
  |  |  143|      0|#define X(i) XX##i
  ------------------
  204|      0|            BODY_00_15(12, A, B, C, D, E, T, X(12));
  ------------------
  |  |  103|      0|    (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|      0|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|      0|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  104|      0|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  205|      0|            X(14) = W[14];
  ------------------
  |  |  143|      0|#define X(i) XX##i
  ------------------
  206|      0|            BODY_00_15(13, T, A, B, C, D, E, X(13));
  ------------------
  |  |  103|      0|    (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|      0|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|      0|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  104|      0|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  207|      0|            X(15) = W[15];
  ------------------
  |  |  143|      0|#define X(i) XX##i
  ------------------
  208|      0|            BODY_00_15(14, E, T, A, B, C, D, X(14));
  ------------------
  |  |  103|      0|    (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|      0|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|      0|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  104|      0|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  209|      0|            BODY_00_15(15, D, E, T, A, B, C, X(15));
  ------------------
  |  |  103|      0|    (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|      0|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|      0|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  104|      0|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|      0|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  210|       |
  211|      0|            data += SHA_CBLOCK;
  ------------------
  |  |   37|      0|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  ------------------
  |  |  |  |   36|      0|#define SHA_LBLOCK 16
  |  |  ------------------
  ------------------
  212|  2.95M|        } else {
  213|  2.95M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  129|  2.95M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  2.95M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  2.95M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  2.95M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  214|  2.95M|            X(0) = l;
  ------------------
  |  |  143|  2.95M|#define X(i) XX##i
  ------------------
  215|  2.95M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  129|  2.95M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  2.95M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  2.95M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  2.95M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  216|  2.95M|            X(1) = l;
  ------------------
  |  |  143|  2.95M|#define X(i) XX##i
  ------------------
  217|  2.95M|            BODY_00_15(0, A, B, C, D, E, T, X(0));
  ------------------
  |  |  103|  2.95M|    (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|  2.95M|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|  2.95M|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  104|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  218|  2.95M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  129|  2.95M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  2.95M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  2.95M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  2.95M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  219|  2.95M|            X(2) = l;
  ------------------
  |  |  143|  2.95M|#define X(i) XX##i
  ------------------
  220|  2.95M|            BODY_00_15(1, T, A, B, C, D, E, X(1));
  ------------------
  |  |  103|  2.95M|    (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|  2.95M|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|  2.95M|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  104|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  221|  2.95M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  129|  2.95M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  2.95M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  2.95M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  2.95M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  222|  2.95M|            X(3) = l;
  ------------------
  |  |  143|  2.95M|#define X(i) XX##i
  ------------------
  223|  2.95M|            BODY_00_15(2, E, T, A, B, C, D, X(2));
  ------------------
  |  |  103|  2.95M|    (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|  2.95M|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|  2.95M|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  104|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  224|  2.95M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  129|  2.95M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  2.95M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  2.95M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  2.95M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  225|  2.95M|            X(4) = l;
  ------------------
  |  |  143|  2.95M|#define X(i) XX##i
  ------------------
  226|  2.95M|            BODY_00_15(3, D, E, T, A, B, C, X(3));
  ------------------
  |  |  103|  2.95M|    (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|  2.95M|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|  2.95M|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  104|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  227|  2.95M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  129|  2.95M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  2.95M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  2.95M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  2.95M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  228|  2.95M|            X(5) = l;
  ------------------
  |  |  143|  2.95M|#define X(i) XX##i
  ------------------
  229|  2.95M|            BODY_00_15(4, C, D, E, T, A, B, X(4));
  ------------------
  |  |  103|  2.95M|    (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|  2.95M|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|  2.95M|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  104|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  230|  2.95M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  129|  2.95M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  2.95M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  2.95M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  2.95M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  231|  2.95M|            X(6) = l;
  ------------------
  |  |  143|  2.95M|#define X(i) XX##i
  ------------------
  232|  2.95M|            BODY_00_15(5, B, C, D, E, T, A, X(5));
  ------------------
  |  |  103|  2.95M|    (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|  2.95M|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|  2.95M|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  104|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  233|  2.95M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  129|  2.95M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  2.95M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  2.95M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  2.95M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  234|  2.95M|            X(7) = l;
  ------------------
  |  |  143|  2.95M|#define X(i) XX##i
  ------------------
  235|  2.95M|            BODY_00_15(6, A, B, C, D, E, T, X(6));
  ------------------
  |  |  103|  2.95M|    (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|  2.95M|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|  2.95M|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  104|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  236|  2.95M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  129|  2.95M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  2.95M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  2.95M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  2.95M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  237|  2.95M|            X(8) = l;
  ------------------
  |  |  143|  2.95M|#define X(i) XX##i
  ------------------
  238|  2.95M|            BODY_00_15(7, T, A, B, C, D, E, X(7));
  ------------------
  |  |  103|  2.95M|    (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|  2.95M|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|  2.95M|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  104|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  239|  2.95M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  129|  2.95M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  2.95M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  2.95M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  2.95M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  240|  2.95M|            X(9) = l;
  ------------------
  |  |  143|  2.95M|#define X(i) XX##i
  ------------------
  241|  2.95M|            BODY_00_15(8, E, T, A, B, C, D, X(8));
  ------------------
  |  |  103|  2.95M|    (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|  2.95M|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|  2.95M|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  104|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  242|  2.95M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  129|  2.95M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  2.95M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  2.95M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  2.95M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  243|  2.95M|            X(10) = l;
  ------------------
  |  |  143|  2.95M|#define X(i) XX##i
  ------------------
  244|  2.95M|            BODY_00_15(9, D, E, T, A, B, C, X(9));
  ------------------
  |  |  103|  2.95M|    (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|  2.95M|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|  2.95M|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  104|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  245|  2.95M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  129|  2.95M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  2.95M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  2.95M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  2.95M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  246|  2.95M|            X(11) = l;
  ------------------
  |  |  143|  2.95M|#define X(i) XX##i
  ------------------
  247|  2.95M|            BODY_00_15(10, C, D, E, T, A, B, X(10));
  ------------------
  |  |  103|  2.95M|    (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|  2.95M|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|  2.95M|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  104|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  248|  2.95M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  129|  2.95M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  2.95M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  2.95M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  2.95M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  249|  2.95M|            X(12) = l;
  ------------------
  |  |  143|  2.95M|#define X(i) XX##i
  ------------------
  250|  2.95M|            BODY_00_15(11, B, C, D, E, T, A, X(11));
  ------------------
  |  |  103|  2.95M|    (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|  2.95M|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|  2.95M|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  104|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  251|  2.95M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  129|  2.95M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  2.95M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  2.95M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  2.95M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  252|  2.95M|            X(13) = l;
  ------------------
  |  |  143|  2.95M|#define X(i) XX##i
  ------------------
  253|  2.95M|            BODY_00_15(12, A, B, C, D, E, T, X(12));
  ------------------
  |  |  103|  2.95M|    (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|  2.95M|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|  2.95M|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  104|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  254|  2.95M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  129|  2.95M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  2.95M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  2.95M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  2.95M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  255|  2.95M|            X(14) = l;
  ------------------
  |  |  143|  2.95M|#define X(i) XX##i
  ------------------
  256|  2.95M|            BODY_00_15(13, T, A, B, C, D, E, X(13));
  ------------------
  |  |  103|  2.95M|    (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|  2.95M|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|  2.95M|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  104|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  257|  2.95M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  129|  2.95M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  2.95M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  2.95M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  2.95M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  258|  2.95M|            X(15) = l;
  ------------------
  |  |  143|  2.95M|#define X(i) XX##i
  ------------------
  259|  2.95M|            BODY_00_15(14, E, T, A, B, C, D, X(14));
  ------------------
  |  |  103|  2.95M|    (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|  2.95M|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|  2.95M|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  104|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  260|  2.95M|            BODY_00_15(15, D, E, T, A, B, C, X(15));
  ------------------
  |  |  103|  2.95M|    (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|  2.95M|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xi + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|  2.95M|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  104|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  261|  2.95M|        }
  262|       |
  263|  2.95M|        BODY_16_19(16, C, D, E, T, A, B, X(0), X(0), X(2), X(8), X(13));
  ------------------
  |  |  107|  2.95M|    Xupdate(f, xi, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  108|  2.95M|    (f) += (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|  2.95M|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) += (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|  2.95M|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  109|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  264|  2.95M|        BODY_16_19(17, B, C, D, E, T, A, X(1), X(1), X(3), X(9), X(14));
  ------------------
  |  |  107|  2.95M|    Xupdate(f, xi, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  108|  2.95M|    (f) += (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|  2.95M|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) += (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|  2.95M|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  109|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  265|  2.95M|        BODY_16_19(18, A, B, C, D, E, T, X(2), X(2), X(4), X(10), X(15));
  ------------------
  |  |  107|  2.95M|    Xupdate(f, xi, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  108|  2.95M|    (f) += (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|  2.95M|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) += (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|  2.95M|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  109|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  266|  2.95M|        BODY_16_19(19, T, A, B, C, D, E, X(3), X(3), X(5), X(11), X(0));
  ------------------
  |  |  107|  2.95M|    Xupdate(f, xi, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  108|  2.95M|    (f) += (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   82|  2.95M|#define K_00_19 0x5a827999UL
  |  |  ------------------
  |  |                   (f) += (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   95|  2.95M|#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |  109|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  267|       |
  268|  2.95M|        BODY_20_31(20, E, T, A, B, C, D, X(4), X(4), X(6), X(12), X(1));
  ------------------
  |  |  112|  2.95M|    Xupdate(f, xi, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  113|  2.95M|    (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   83|  2.95M|#define K_20_39 0x6ed9eba1UL
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |  114|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  269|  2.95M|        BODY_20_31(21, D, E, T, A, B, C, X(5), X(5), X(7), X(13), X(2));
  ------------------
  |  |  112|  2.95M|    Xupdate(f, xi, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  113|  2.95M|    (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   83|  2.95M|#define K_20_39 0x6ed9eba1UL
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |  114|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  270|  2.95M|        BODY_20_31(22, C, D, E, T, A, B, X(6), X(6), X(8), X(14), X(3));
  ------------------
  |  |  112|  2.95M|    Xupdate(f, xi, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  113|  2.95M|    (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   83|  2.95M|#define K_20_39 0x6ed9eba1UL
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |  114|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  271|  2.95M|        BODY_20_31(23, B, C, D, E, T, A, X(7), X(7), X(9), X(15), X(4));
  ------------------
  |  |  112|  2.95M|    Xupdate(f, xi, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  113|  2.95M|    (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   83|  2.95M|#define K_20_39 0x6ed9eba1UL
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |  114|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  272|  2.95M|        BODY_20_31(24, A, B, C, D, E, T, X(8), X(8), X(10), X(0), X(5));
  ------------------
  |  |  112|  2.95M|    Xupdate(f, xi, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  113|  2.95M|    (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   83|  2.95M|#define K_20_39 0x6ed9eba1UL
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |  114|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  273|  2.95M|        BODY_20_31(25, T, A, B, C, D, E, X(9), X(9), X(11), X(1), X(6));
  ------------------
  |  |  112|  2.95M|    Xupdate(f, xi, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  113|  2.95M|    (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   83|  2.95M|#define K_20_39 0x6ed9eba1UL
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |  114|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  274|  2.95M|        BODY_20_31(26, E, T, A, B, C, D, X(10), X(10), X(12), X(2), X(7));
  ------------------
  |  |  112|  2.95M|    Xupdate(f, xi, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  113|  2.95M|    (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   83|  2.95M|#define K_20_39 0x6ed9eba1UL
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |  114|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  275|  2.95M|        BODY_20_31(27, D, E, T, A, B, C, X(11), X(11), X(13), X(3), X(8));
  ------------------
  |  |  112|  2.95M|    Xupdate(f, xi, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  113|  2.95M|    (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   83|  2.95M|#define K_20_39 0x6ed9eba1UL
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |  114|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  276|  2.95M|        BODY_20_31(28, C, D, E, T, A, B, X(12), X(12), X(14), X(4), X(9));
  ------------------
  |  |  112|  2.95M|    Xupdate(f, xi, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  113|  2.95M|    (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   83|  2.95M|#define K_20_39 0x6ed9eba1UL
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |  114|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  277|  2.95M|        BODY_20_31(29, B, C, D, E, T, A, X(13), X(13), X(15), X(5), X(10));
  ------------------
  |  |  112|  2.95M|    Xupdate(f, xi, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  113|  2.95M|    (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   83|  2.95M|#define K_20_39 0x6ed9eba1UL
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |  114|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  278|  2.95M|        BODY_20_31(30, A, B, C, D, E, T, X(14), X(14), X(0), X(6), X(11));
  ------------------
  |  |  112|  2.95M|    Xupdate(f, xi, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  113|  2.95M|    (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   83|  2.95M|#define K_20_39 0x6ed9eba1UL
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |  114|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  279|  2.95M|        BODY_20_31(31, T, A, B, C, D, E, X(15), X(15), X(1), X(7), X(12));
  ------------------
  |  |  112|  2.95M|    Xupdate(f, xi, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  113|  2.95M|    (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   83|  2.95M|#define K_20_39 0x6ed9eba1UL
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |  114|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  280|       |
  281|  2.95M|        BODY_32_39(32, E, T, A, B, C, D, X(0), X(2), X(8), X(13));
  ------------------
  |  |  117|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  118|  2.95M|    (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   83|  2.95M|#define K_20_39 0x6ed9eba1UL
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |  119|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  282|  2.95M|        BODY_32_39(33, D, E, T, A, B, C, X(1), X(3), X(9), X(14));
  ------------------
  |  |  117|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  118|  2.95M|    (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   83|  2.95M|#define K_20_39 0x6ed9eba1UL
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |  119|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  283|  2.95M|        BODY_32_39(34, C, D, E, T, A, B, X(2), X(4), X(10), X(15));
  ------------------
  |  |  117|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  118|  2.95M|    (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   83|  2.95M|#define K_20_39 0x6ed9eba1UL
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |  119|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  284|  2.95M|        BODY_32_39(35, B, C, D, E, T, A, X(3), X(5), X(11), X(0));
  ------------------
  |  |  117|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  118|  2.95M|    (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   83|  2.95M|#define K_20_39 0x6ed9eba1UL
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |  119|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  285|  2.95M|        BODY_32_39(36, A, B, C, D, E, T, X(4), X(6), X(12), X(1));
  ------------------
  |  |  117|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  118|  2.95M|    (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   83|  2.95M|#define K_20_39 0x6ed9eba1UL
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |  119|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  286|  2.95M|        BODY_32_39(37, T, A, B, C, D, E, X(5), X(7), X(13), X(2));
  ------------------
  |  |  117|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  118|  2.95M|    (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   83|  2.95M|#define K_20_39 0x6ed9eba1UL
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |  119|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  287|  2.95M|        BODY_32_39(38, E, T, A, B, C, D, X(6), X(8), X(14), X(3));
  ------------------
  |  |  117|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  118|  2.95M|    (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   83|  2.95M|#define K_20_39 0x6ed9eba1UL
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |  119|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  288|  2.95M|        BODY_32_39(39, D, E, T, A, B, C, X(7), X(9), X(15), X(4));
  ------------------
  |  |  117|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  118|  2.95M|    (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   83|  2.95M|#define K_20_39 0x6ed9eba1UL
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |  119|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  289|       |
  290|  2.95M|        BODY_40_59(40, C, D, E, T, A, B, X(8), X(10), X(0), X(5));
  ------------------
  |  |  122|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  123|  2.95M|    (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   84|  2.95M|#define K_40_59 0x8f1bbcdcUL
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   97|  2.95M|#define F_40_59(b, c, d) (((b) & (c)) | (((b) | (c)) & (d)))
  |  |  ------------------
  |  |  124|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  291|  2.95M|        BODY_40_59(41, B, C, D, E, T, A, X(9), X(11), X(1), X(6));
  ------------------
  |  |  122|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  123|  2.95M|    (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   84|  2.95M|#define K_40_59 0x8f1bbcdcUL
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   97|  2.95M|#define F_40_59(b, c, d) (((b) & (c)) | (((b) | (c)) & (d)))
  |  |  ------------------
  |  |  124|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  292|  2.95M|        BODY_40_59(42, A, B, C, D, E, T, X(10), X(12), X(2), X(7));
  ------------------
  |  |  122|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  123|  2.95M|    (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   84|  2.95M|#define K_40_59 0x8f1bbcdcUL
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   97|  2.95M|#define F_40_59(b, c, d) (((b) & (c)) | (((b) | (c)) & (d)))
  |  |  ------------------
  |  |  124|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  293|  2.95M|        BODY_40_59(43, T, A, B, C, D, E, X(11), X(13), X(3), X(8));
  ------------------
  |  |  122|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  123|  2.95M|    (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   84|  2.95M|#define K_40_59 0x8f1bbcdcUL
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   97|  2.95M|#define F_40_59(b, c, d) (((b) & (c)) | (((b) | (c)) & (d)))
  |  |  ------------------
  |  |  124|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  294|  2.95M|        BODY_40_59(44, E, T, A, B, C, D, X(12), X(14), X(4), X(9));
  ------------------
  |  |  122|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  123|  2.95M|    (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   84|  2.95M|#define K_40_59 0x8f1bbcdcUL
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   97|  2.95M|#define F_40_59(b, c, d) (((b) & (c)) | (((b) | (c)) & (d)))
  |  |  ------------------
  |  |  124|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  295|  2.95M|        BODY_40_59(45, D, E, T, A, B, C, X(13), X(15), X(5), X(10));
  ------------------
  |  |  122|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  123|  2.95M|    (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   84|  2.95M|#define K_40_59 0x8f1bbcdcUL
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   97|  2.95M|#define F_40_59(b, c, d) (((b) & (c)) | (((b) | (c)) & (d)))
  |  |  ------------------
  |  |  124|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  296|  2.95M|        BODY_40_59(46, C, D, E, T, A, B, X(14), X(0), X(6), X(11));
  ------------------
  |  |  122|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  123|  2.95M|    (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   84|  2.95M|#define K_40_59 0x8f1bbcdcUL
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   97|  2.95M|#define F_40_59(b, c, d) (((b) & (c)) | (((b) | (c)) & (d)))
  |  |  ------------------
  |  |  124|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  297|  2.95M|        BODY_40_59(47, B, C, D, E, T, A, X(15), X(1), X(7), X(12));
  ------------------
  |  |  122|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  123|  2.95M|    (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   84|  2.95M|#define K_40_59 0x8f1bbcdcUL
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   97|  2.95M|#define F_40_59(b, c, d) (((b) & (c)) | (((b) | (c)) & (d)))
  |  |  ------------------
  |  |  124|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  298|  2.95M|        BODY_40_59(48, A, B, C, D, E, T, X(0), X(2), X(8), X(13));
  ------------------
  |  |  122|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  123|  2.95M|    (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   84|  2.95M|#define K_40_59 0x8f1bbcdcUL
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   97|  2.95M|#define F_40_59(b, c, d) (((b) & (c)) | (((b) | (c)) & (d)))
  |  |  ------------------
  |  |  124|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  299|  2.95M|        BODY_40_59(49, T, A, B, C, D, E, X(1), X(3), X(9), X(14));
  ------------------
  |  |  122|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  123|  2.95M|    (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   84|  2.95M|#define K_40_59 0x8f1bbcdcUL
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   97|  2.95M|#define F_40_59(b, c, d) (((b) & (c)) | (((b) | (c)) & (d)))
  |  |  ------------------
  |  |  124|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  300|  2.95M|        BODY_40_59(50, E, T, A, B, C, D, X(2), X(4), X(10), X(15));
  ------------------
  |  |  122|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  123|  2.95M|    (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   84|  2.95M|#define K_40_59 0x8f1bbcdcUL
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   97|  2.95M|#define F_40_59(b, c, d) (((b) & (c)) | (((b) | (c)) & (d)))
  |  |  ------------------
  |  |  124|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  301|  2.95M|        BODY_40_59(51, D, E, T, A, B, C, X(3), X(5), X(11), X(0));
  ------------------
  |  |  122|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  123|  2.95M|    (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   84|  2.95M|#define K_40_59 0x8f1bbcdcUL
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   97|  2.95M|#define F_40_59(b, c, d) (((b) & (c)) | (((b) | (c)) & (d)))
  |  |  ------------------
  |  |  124|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  302|  2.95M|        BODY_40_59(52, C, D, E, T, A, B, X(4), X(6), X(12), X(1));
  ------------------
  |  |  122|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  123|  2.95M|    (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   84|  2.95M|#define K_40_59 0x8f1bbcdcUL
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   97|  2.95M|#define F_40_59(b, c, d) (((b) & (c)) | (((b) | (c)) & (d)))
  |  |  ------------------
  |  |  124|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  303|  2.95M|        BODY_40_59(53, B, C, D, E, T, A, X(5), X(7), X(13), X(2));
  ------------------
  |  |  122|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  123|  2.95M|    (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   84|  2.95M|#define K_40_59 0x8f1bbcdcUL
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   97|  2.95M|#define F_40_59(b, c, d) (((b) & (c)) | (((b) | (c)) & (d)))
  |  |  ------------------
  |  |  124|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  304|  2.95M|        BODY_40_59(54, A, B, C, D, E, T, X(6), X(8), X(14), X(3));
  ------------------
  |  |  122|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  123|  2.95M|    (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   84|  2.95M|#define K_40_59 0x8f1bbcdcUL
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   97|  2.95M|#define F_40_59(b, c, d) (((b) & (c)) | (((b) | (c)) & (d)))
  |  |  ------------------
  |  |  124|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  305|  2.95M|        BODY_40_59(55, T, A, B, C, D, E, X(7), X(9), X(15), X(4));
  ------------------
  |  |  122|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  123|  2.95M|    (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   84|  2.95M|#define K_40_59 0x8f1bbcdcUL
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   97|  2.95M|#define F_40_59(b, c, d) (((b) & (c)) | (((b) | (c)) & (d)))
  |  |  ------------------
  |  |  124|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  306|  2.95M|        BODY_40_59(56, E, T, A, B, C, D, X(8), X(10), X(0), X(5));
  ------------------
  |  |  122|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  123|  2.95M|    (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   84|  2.95M|#define K_40_59 0x8f1bbcdcUL
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   97|  2.95M|#define F_40_59(b, c, d) (((b) & (c)) | (((b) | (c)) & (d)))
  |  |  ------------------
  |  |  124|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  307|  2.95M|        BODY_40_59(57, D, E, T, A, B, C, X(9), X(11), X(1), X(6));
  ------------------
  |  |  122|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  123|  2.95M|    (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   84|  2.95M|#define K_40_59 0x8f1bbcdcUL
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   97|  2.95M|#define F_40_59(b, c, d) (((b) & (c)) | (((b) | (c)) & (d)))
  |  |  ------------------
  |  |  124|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  308|  2.95M|        BODY_40_59(58, C, D, E, T, A, B, X(10), X(12), X(2), X(7));
  ------------------
  |  |  122|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  123|  2.95M|    (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   84|  2.95M|#define K_40_59 0x8f1bbcdcUL
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   97|  2.95M|#define F_40_59(b, c, d) (((b) & (c)) | (((b) | (c)) & (d)))
  |  |  ------------------
  |  |  124|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  309|  2.95M|        BODY_40_59(59, B, C, D, E, T, A, X(11), X(13), X(3), X(8));
  ------------------
  |  |  122|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                 \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  123|  2.95M|    (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   84|  2.95M|#define K_40_59 0x8f1bbcdcUL
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   97|  2.95M|#define F_40_59(b, c, d) (((b) & (c)) | (((b) | (c)) & (d)))
  |  |  ------------------
  |  |  124|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  310|       |
  311|  2.95M|        BODY_60_79(60, A, B, C, D, E, T, X(12), X(14), X(4), X(9));
  ------------------
  |  |  127|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                     \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  128|  2.95M|    (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   85|  2.95M|#define K_60_79 0xca62c1d6UL
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   98|  2.95M|#define F_60_79(b, c, d) F_20_39(b, c, d)
  |  |  |  |  ------------------
  |  |  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  129|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  312|  2.95M|        BODY_60_79(61, T, A, B, C, D, E, X(13), X(15), X(5), X(10));
  ------------------
  |  |  127|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                     \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  128|  2.95M|    (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   85|  2.95M|#define K_60_79 0xca62c1d6UL
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   98|  2.95M|#define F_60_79(b, c, d) F_20_39(b, c, d)
  |  |  |  |  ------------------
  |  |  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  129|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  313|  2.95M|        BODY_60_79(62, E, T, A, B, C, D, X(14), X(0), X(6), X(11));
  ------------------
  |  |  127|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                     \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  128|  2.95M|    (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   85|  2.95M|#define K_60_79 0xca62c1d6UL
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   98|  2.95M|#define F_60_79(b, c, d) F_20_39(b, c, d)
  |  |  |  |  ------------------
  |  |  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  129|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  314|  2.95M|        BODY_60_79(63, D, E, T, A, B, C, X(15), X(1), X(7), X(12));
  ------------------
  |  |  127|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                     \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  128|  2.95M|    (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   85|  2.95M|#define K_60_79 0xca62c1d6UL
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   98|  2.95M|#define F_60_79(b, c, d) F_20_39(b, c, d)
  |  |  |  |  ------------------
  |  |  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  129|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  315|  2.95M|        BODY_60_79(64, C, D, E, T, A, B, X(0), X(2), X(8), X(13));
  ------------------
  |  |  127|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                     \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  128|  2.95M|    (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   85|  2.95M|#define K_60_79 0xca62c1d6UL
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   98|  2.95M|#define F_60_79(b, c, d) F_20_39(b, c, d)
  |  |  |  |  ------------------
  |  |  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  129|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  316|  2.95M|        BODY_60_79(65, B, C, D, E, T, A, X(1), X(3), X(9), X(14));
  ------------------
  |  |  127|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                     \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  128|  2.95M|    (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   85|  2.95M|#define K_60_79 0xca62c1d6UL
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   98|  2.95M|#define F_60_79(b, c, d) F_20_39(b, c, d)
  |  |  |  |  ------------------
  |  |  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  129|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  317|  2.95M|        BODY_60_79(66, A, B, C, D, E, T, X(2), X(4), X(10), X(15));
  ------------------
  |  |  127|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                     \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  128|  2.95M|    (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   85|  2.95M|#define K_60_79 0xca62c1d6UL
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   98|  2.95M|#define F_60_79(b, c, d) F_20_39(b, c, d)
  |  |  |  |  ------------------
  |  |  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  129|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  318|  2.95M|        BODY_60_79(67, T, A, B, C, D, E, X(3), X(5), X(11), X(0));
  ------------------
  |  |  127|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                     \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  128|  2.95M|    (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   85|  2.95M|#define K_60_79 0xca62c1d6UL
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   98|  2.95M|#define F_60_79(b, c, d) F_20_39(b, c, d)
  |  |  |  |  ------------------
  |  |  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  129|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  319|  2.95M|        BODY_60_79(68, E, T, A, B, C, D, X(4), X(6), X(12), X(1));
  ------------------
  |  |  127|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                     \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  128|  2.95M|    (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   85|  2.95M|#define K_60_79 0xca62c1d6UL
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   98|  2.95M|#define F_60_79(b, c, d) F_20_39(b, c, d)
  |  |  |  |  ------------------
  |  |  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  129|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  320|  2.95M|        BODY_60_79(69, D, E, T, A, B, C, X(5), X(7), X(13), X(2));
  ------------------
  |  |  127|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                     \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  128|  2.95M|    (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   85|  2.95M|#define K_60_79 0xca62c1d6UL
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   98|  2.95M|#define F_60_79(b, c, d) F_20_39(b, c, d)
  |  |  |  |  ------------------
  |  |  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  129|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  321|  2.95M|        BODY_60_79(70, C, D, E, T, A, B, X(6), X(8), X(14), X(3));
  ------------------
  |  |  127|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                     \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  128|  2.95M|    (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   85|  2.95M|#define K_60_79 0xca62c1d6UL
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   98|  2.95M|#define F_60_79(b, c, d) F_20_39(b, c, d)
  |  |  |  |  ------------------
  |  |  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  129|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  322|  2.95M|        BODY_60_79(71, B, C, D, E, T, A, X(7), X(9), X(15), X(4));
  ------------------
  |  |  127|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                     \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  128|  2.95M|    (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   85|  2.95M|#define K_60_79 0xca62c1d6UL
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   98|  2.95M|#define F_60_79(b, c, d) F_20_39(b, c, d)
  |  |  |  |  ------------------
  |  |  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  129|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  323|  2.95M|        BODY_60_79(72, A, B, C, D, E, T, X(8), X(10), X(0), X(5));
  ------------------
  |  |  127|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                     \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  128|  2.95M|    (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   85|  2.95M|#define K_60_79 0xca62c1d6UL
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   98|  2.95M|#define F_60_79(b, c, d) F_20_39(b, c, d)
  |  |  |  |  ------------------
  |  |  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  129|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  324|  2.95M|        BODY_60_79(73, T, A, B, C, D, E, X(9), X(11), X(1), X(6));
  ------------------
  |  |  127|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                     \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  128|  2.95M|    (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   85|  2.95M|#define K_60_79 0xca62c1d6UL
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   98|  2.95M|#define F_60_79(b, c, d) F_20_39(b, c, d)
  |  |  |  |  ------------------
  |  |  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  129|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  325|  2.95M|        BODY_60_79(74, E, T, A, B, C, D, X(10), X(12), X(2), X(7));
  ------------------
  |  |  127|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                     \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  128|  2.95M|    (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   85|  2.95M|#define K_60_79 0xca62c1d6UL
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   98|  2.95M|#define F_60_79(b, c, d) F_20_39(b, c, d)
  |  |  |  |  ------------------
  |  |  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  129|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  326|  2.95M|        BODY_60_79(75, D, E, T, A, B, C, X(11), X(13), X(3), X(8));
  ------------------
  |  |  127|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                     \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  128|  2.95M|    (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   85|  2.95M|#define K_60_79 0xca62c1d6UL
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   98|  2.95M|#define F_60_79(b, c, d) F_20_39(b, c, d)
  |  |  |  |  ------------------
  |  |  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  129|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  327|  2.95M|        BODY_60_79(76, C, D, E, T, A, B, X(12), X(14), X(4), X(9));
  ------------------
  |  |  127|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                     \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  128|  2.95M|    (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   85|  2.95M|#define K_60_79 0xca62c1d6UL
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   98|  2.95M|#define F_60_79(b, c, d) F_20_39(b, c, d)
  |  |  |  |  ------------------
  |  |  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  129|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  328|  2.95M|        BODY_60_79(77, B, C, D, E, T, A, X(13), X(15), X(5), X(10));
  ------------------
  |  |  127|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                     \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  128|  2.95M|    (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   85|  2.95M|#define K_60_79 0xca62c1d6UL
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   98|  2.95M|#define F_60_79(b, c, d) F_20_39(b, c, d)
  |  |  |  |  ------------------
  |  |  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  129|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  329|  2.95M|        BODY_60_79(78, A, B, C, D, E, T, X(14), X(0), X(6), X(11));
  ------------------
  |  |  127|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                     \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  128|  2.95M|    (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   85|  2.95M|#define K_60_79 0xca62c1d6UL
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   98|  2.95M|#define F_60_79(b, c, d) F_20_39(b, c, d)
  |  |  |  |  ------------------
  |  |  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  129|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  330|  2.95M|        BODY_60_79(79, T, A, B, C, D, E, X(15), X(1), X(7), X(12));
  ------------------
  |  |  127|  2.95M|    Xupdate(f, xa, xa, xb, xc, xd);                                     \
  |  |  ------------------
  |  |  |  |   46|  2.95M|#define Xupdate(a, ix, ia, ib, ic, id) ((a) = (ia ^ ib ^ ic ^ id), \
  |  |  |  |   47|  2.95M|    ix = (a) = ROTATE((a), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  128|  2.95M|    (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   85|  2.95M|#define K_60_79 0xca62c1d6UL
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |                   (f) = xa + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
  |  |  ------------------
  |  |  |  |   98|  2.95M|#define F_60_79(b, c, d) F_20_39(b, c, d)
  |  |  |  |  ------------------
  |  |  |  |  |  |   96|  2.95M|#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  129|  2.95M|    (b) = ROTATE((b), 30);
  |  |  ------------------
  |  |  |  |  104|  2.95M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  331|       |
  332|  2.95M|        c->h0 = (c->h0 + E) & 0xffffffffL;
  333|  2.95M|        c->h1 = (c->h1 + T) & 0xffffffffL;
  334|  2.95M|        c->h2 = (c->h2 + A) & 0xffffffffL;
  335|  2.95M|        c->h3 = (c->h3 + B) & 0xffffffffL;
  336|  2.95M|        c->h4 = (c->h4 + C) & 0xffffffffL;
  337|       |
  338|  2.95M|        if (--num == 0)
  ------------------
  |  Branch (338:13): [True: 369, False: 2.95M]
  ------------------
  339|    369|            break;
  340|       |
  341|  2.95M|        A = c->h0;
  342|  2.95M|        B = c->h1;
  343|  2.95M|        C = c->h2;
  344|  2.95M|        D = c->h3;
  345|  2.95M|        E = c->h4;
  346|  2.95M|    }
  347|    369|}

ossl_err_load_SM2_strings:
   41|      1|{
   42|      1|#ifndef OPENSSL_NO_ERR
   43|      1|    if (ERR_reason_error_string(SM2_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (43:9): [True: 1, False: 0]
  ------------------
   44|      1|        ERR_load_strings_const(SM2_str_reasons);
   45|      1|#endif
   46|      1|    return 1;
   47|      1|}

EVP_sm3:
   24|      1|{
   25|      1|    return &sm3_md;
   26|      1|}

ossl_sm3_init:
   16|    184|{
   17|    184|    memset(c, 0, sizeof(*c));
   18|    184|    c->A = SM3_A;
  ------------------
  |  |  129|    184|#define SM3_A 0x7380166fUL
  ------------------
   19|    184|    c->B = SM3_B;
  ------------------
  |  |  130|    184|#define SM3_B 0x4914b2b9UL
  ------------------
   20|    184|    c->C = SM3_C;
  ------------------
  |  |  131|    184|#define SM3_C 0x172442d7UL
  ------------------
   21|    184|    c->D = SM3_D;
  ------------------
  |  |  132|    184|#define SM3_D 0xda8a0600UL
  ------------------
   22|    184|    c->E = SM3_E;
  ------------------
  |  |  133|    184|#define SM3_E 0xa96f30bcUL
  ------------------
   23|    184|    c->F = SM3_F;
  ------------------
  |  |  134|    184|#define SM3_F 0x163138aaUL
  ------------------
   24|    184|    c->G = SM3_G;
  ------------------
  |  |  135|    184|#define SM3_G 0xe38dee4dUL
  ------------------
   25|    184|    c->H = SM3_H;
  ------------------
  |  |  136|    184|#define SM3_H 0xb0fb0e4eUL
  ------------------
   26|    184|    return 1;
   27|    184|}
ossl_sm3_block_data_order:
   30|    314|{
   31|    314|    const unsigned char *data = p;
   32|    314|    register unsigned MD32_REG_T A, B, C, D, E, F, G, H;
   33|       |
   34|    314|    unsigned MD32_REG_T W00, W01, W02, W03, W04, W05, W06, W07,
   35|    314|        W08, W09, W10, W11, W12, W13, W14, W15;
   36|       |
   37|  3.85M|    for (; num--;) {
  ------------------
  |  Branch (37:12): [True: 3.85M, False: 314]
  ------------------
   38|       |
   39|  3.85M|        A = ctx->A;
   40|  3.85M|        B = ctx->B;
   41|  3.85M|        C = ctx->C;
   42|  3.85M|        D = ctx->D;
   43|  3.85M|        E = ctx->E;
   44|  3.85M|        F = ctx->F;
   45|  3.85M|        G = ctx->G;
   46|  3.85M|        H = ctx->H;
   47|       |
   48|       |        /*
   49|       |         * We have to load all message bytes immediately since SM3 reads
   50|       |         * them slightly out of order.
   51|       |         */
   52|  3.85M|        (void)HOST_c2l(data, W00);
  ------------------
  |  |  129|  3.85M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  3.85M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  3.85M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  3.85M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
   53|  3.85M|        (void)HOST_c2l(data, W01);
  ------------------
  |  |  129|  3.85M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  3.85M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  3.85M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  3.85M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
   54|  3.85M|        (void)HOST_c2l(data, W02);
  ------------------
  |  |  129|  3.85M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  3.85M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  3.85M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  3.85M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
   55|  3.85M|        (void)HOST_c2l(data, W03);
  ------------------
  |  |  129|  3.85M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  3.85M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  3.85M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  3.85M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
   56|  3.85M|        (void)HOST_c2l(data, W04);
  ------------------
  |  |  129|  3.85M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  3.85M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  3.85M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  3.85M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
   57|  3.85M|        (void)HOST_c2l(data, W05);
  ------------------
  |  |  129|  3.85M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  3.85M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  3.85M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  3.85M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
   58|  3.85M|        (void)HOST_c2l(data, W06);
  ------------------
  |  |  129|  3.85M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  3.85M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  3.85M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  3.85M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
   59|  3.85M|        (void)HOST_c2l(data, W07);
  ------------------
  |  |  129|  3.85M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  3.85M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  3.85M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  3.85M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
   60|  3.85M|        (void)HOST_c2l(data, W08);
  ------------------
  |  |  129|  3.85M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  3.85M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  3.85M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  3.85M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
   61|  3.85M|        (void)HOST_c2l(data, W09);
  ------------------
  |  |  129|  3.85M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  3.85M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  3.85M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  3.85M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
   62|  3.85M|        (void)HOST_c2l(data, W10);
  ------------------
  |  |  129|  3.85M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  3.85M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  3.85M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  3.85M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
   63|  3.85M|        (void)HOST_c2l(data, W11);
  ------------------
  |  |  129|  3.85M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  3.85M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  3.85M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  3.85M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
   64|  3.85M|        (void)HOST_c2l(data, W12);
  ------------------
  |  |  129|  3.85M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  3.85M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  3.85M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  3.85M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
   65|  3.85M|        (void)HOST_c2l(data, W13);
  ------------------
  |  |  129|  3.85M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  3.85M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  3.85M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  3.85M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
   66|  3.85M|        (void)HOST_c2l(data, W14);
  ------------------
  |  |  129|  3.85M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  3.85M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  3.85M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  3.85M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
   67|  3.85M|        (void)HOST_c2l(data, W15);
  ------------------
  |  |  129|  3.85M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  130|  3.85M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  131|  3.85M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  132|  3.85M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
   68|       |
   69|  3.85M|        R1(A, B, C, D, E, F, G, H, 0x79CC4519, W00, W00 ^ W04);
  ------------------
  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  101|  3.85M|#define FF0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  102|  3.85M|#define GG0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   70|  3.85M|        W00 = EXPAND(W00, W07, W13, W03, W10);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
   71|  3.85M|        R1(D, A, B, C, H, E, F, G, 0xF3988A32, W01, W01 ^ W05);
  ------------------
  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  101|  3.85M|#define FF0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  102|  3.85M|#define GG0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   72|  3.85M|        W01 = EXPAND(W01, W08, W14, W04, W11);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
   73|  3.85M|        R1(C, D, A, B, G, H, E, F, 0xE7311465, W02, W02 ^ W06);
  ------------------
  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  101|  3.85M|#define FF0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  102|  3.85M|#define GG0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   74|  3.85M|        W02 = EXPAND(W02, W09, W15, W05, W12);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
   75|  3.85M|        R1(B, C, D, A, F, G, H, E, 0xCE6228CB, W03, W03 ^ W07);
  ------------------
  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  101|  3.85M|#define FF0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  102|  3.85M|#define GG0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   76|  3.85M|        W03 = EXPAND(W03, W10, W00, W06, W13);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
   77|  3.85M|        R1(A, B, C, D, E, F, G, H, 0x9CC45197, W04, W04 ^ W08);
  ------------------
  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  101|  3.85M|#define FF0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  102|  3.85M|#define GG0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   78|  3.85M|        W04 = EXPAND(W04, W11, W01, W07, W14);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
   79|  3.85M|        R1(D, A, B, C, H, E, F, G, 0x3988A32F, W05, W05 ^ W09);
  ------------------
  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  101|  3.85M|#define FF0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  102|  3.85M|#define GG0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   80|  3.85M|        W05 = EXPAND(W05, W12, W02, W08, W15);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
   81|  3.85M|        R1(C, D, A, B, G, H, E, F, 0x7311465E, W06, W06 ^ W10);
  ------------------
  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  101|  3.85M|#define FF0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  102|  3.85M|#define GG0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   82|  3.85M|        W06 = EXPAND(W06, W13, W03, W09, W00);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
   83|  3.85M|        R1(B, C, D, A, F, G, H, E, 0xE6228CBC, W07, W07 ^ W11);
  ------------------
  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  101|  3.85M|#define FF0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  102|  3.85M|#define GG0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   84|  3.85M|        W07 = EXPAND(W07, W14, W04, W10, W01);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
   85|  3.85M|        R1(A, B, C, D, E, F, G, H, 0xCC451979, W08, W08 ^ W12);
  ------------------
  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  101|  3.85M|#define FF0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  102|  3.85M|#define GG0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   86|  3.85M|        W08 = EXPAND(W08, W15, W05, W11, W02);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
   87|  3.85M|        R1(D, A, B, C, H, E, F, G, 0x988A32F3, W09, W09 ^ W13);
  ------------------
  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  101|  3.85M|#define FF0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  102|  3.85M|#define GG0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   88|  3.85M|        W09 = EXPAND(W09, W00, W06, W12, W03);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
   89|  3.85M|        R1(C, D, A, B, G, H, E, F, 0x311465E7, W10, W10 ^ W14);
  ------------------
  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  101|  3.85M|#define FF0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  102|  3.85M|#define GG0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   90|  3.85M|        W10 = EXPAND(W10, W01, W07, W13, W04);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
   91|  3.85M|        R1(B, C, D, A, F, G, H, E, 0x6228CBCE, W11, W11 ^ W15);
  ------------------
  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  101|  3.85M|#define FF0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  102|  3.85M|#define GG0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   92|  3.85M|        W11 = EXPAND(W11, W02, W08, W14, W05);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
   93|  3.85M|        R1(A, B, C, D, E, F, G, H, 0xC451979C, W12, W12 ^ W00);
  ------------------
  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  101|  3.85M|#define FF0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  102|  3.85M|#define GG0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   94|  3.85M|        W12 = EXPAND(W12, W03, W09, W15, W06);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
   95|  3.85M|        R1(D, A, B, C, H, E, F, G, 0x88A32F39, W13, W13 ^ W01);
  ------------------
  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  101|  3.85M|#define FF0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  102|  3.85M|#define GG0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   96|  3.85M|        W13 = EXPAND(W13, W04, W10, W00, W07);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
   97|  3.85M|        R1(C, D, A, B, G, H, E, F, 0x11465E73, W14, W14 ^ W02);
  ------------------
  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  101|  3.85M|#define FF0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  102|  3.85M|#define GG0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   98|  3.85M|        W14 = EXPAND(W14, W05, W11, W01, W08);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
   99|  3.85M|        R1(B, C, D, A, F, G, H, E, 0x228CBCE6, W15, W15 ^ W03);
  ------------------
  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  101|  3.85M|#define FF0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  102|  3.85M|#define GG0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  100|  3.85M|        W15 = EXPAND(W15, W06, W12, W02, W09);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  101|  3.85M|        R2(A, B, C, D, E, F, G, H, 0x9D8A7A87, W00, W00 ^ W04);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  102|  3.85M|        W00 = EXPAND(W00, W07, W13, W03, W10);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  103|  3.85M|        R2(D, A, B, C, H, E, F, G, 0x3B14F50F, W01, W01 ^ W05);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  104|  3.85M|        W01 = EXPAND(W01, W08, W14, W04, W11);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  105|  3.85M|        R2(C, D, A, B, G, H, E, F, 0x7629EA1E, W02, W02 ^ W06);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  106|  3.85M|        W02 = EXPAND(W02, W09, W15, W05, W12);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  107|  3.85M|        R2(B, C, D, A, F, G, H, E, 0xEC53D43C, W03, W03 ^ W07);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  108|  3.85M|        W03 = EXPAND(W03, W10, W00, W06, W13);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  109|  3.85M|        R2(A, B, C, D, E, F, G, H, 0xD8A7A879, W04, W04 ^ W08);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  110|  3.85M|        W04 = EXPAND(W04, W11, W01, W07, W14);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  111|  3.85M|        R2(D, A, B, C, H, E, F, G, 0xB14F50F3, W05, W05 ^ W09);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  112|  3.85M|        W05 = EXPAND(W05, W12, W02, W08, W15);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  113|  3.85M|        R2(C, D, A, B, G, H, E, F, 0x629EA1E7, W06, W06 ^ W10);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  114|  3.85M|        W06 = EXPAND(W06, W13, W03, W09, W00);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  115|  3.85M|        R2(B, C, D, A, F, G, H, E, 0xC53D43CE, W07, W07 ^ W11);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  116|  3.85M|        W07 = EXPAND(W07, W14, W04, W10, W01);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  117|  3.85M|        R2(A, B, C, D, E, F, G, H, 0x8A7A879D, W08, W08 ^ W12);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  118|  3.85M|        W08 = EXPAND(W08, W15, W05, W11, W02);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  119|  3.85M|        R2(D, A, B, C, H, E, F, G, 0x14F50F3B, W09, W09 ^ W13);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  120|  3.85M|        W09 = EXPAND(W09, W00, W06, W12, W03);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  121|  3.85M|        R2(C, D, A, B, G, H, E, F, 0x29EA1E76, W10, W10 ^ W14);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  122|  3.85M|        W10 = EXPAND(W10, W01, W07, W13, W04);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  123|  3.85M|        R2(B, C, D, A, F, G, H, E, 0x53D43CEC, W11, W11 ^ W15);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  124|  3.85M|        W11 = EXPAND(W11, W02, W08, W14, W05);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  125|  3.85M|        R2(A, B, C, D, E, F, G, H, 0xA7A879D8, W12, W12 ^ W00);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  126|  3.85M|        W12 = EXPAND(W12, W03, W09, W15, W06);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  127|  3.85M|        R2(D, A, B, C, H, E, F, G, 0x4F50F3B1, W13, W13 ^ W01);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  128|  3.85M|        W13 = EXPAND(W13, W04, W10, W00, W07);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  129|  3.85M|        R2(C, D, A, B, G, H, E, F, 0x9EA1E762, W14, W14 ^ W02);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  130|  3.85M|        W14 = EXPAND(W14, W05, W11, W01, W08);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  131|  3.85M|        R2(B, C, D, A, F, G, H, E, 0x3D43CEC5, W15, W15 ^ W03);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  132|  3.85M|        W15 = EXPAND(W15, W06, W12, W02, W09);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  133|  3.85M|        R2(A, B, C, D, E, F, G, H, 0x7A879D8A, W00, W00 ^ W04);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  134|  3.85M|        W00 = EXPAND(W00, W07, W13, W03, W10);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  135|  3.85M|        R2(D, A, B, C, H, E, F, G, 0xF50F3B14, W01, W01 ^ W05);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  136|  3.85M|        W01 = EXPAND(W01, W08, W14, W04, W11);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  137|  3.85M|        R2(C, D, A, B, G, H, E, F, 0xEA1E7629, W02, W02 ^ W06);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  138|  3.85M|        W02 = EXPAND(W02, W09, W15, W05, W12);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  139|  3.85M|        R2(B, C, D, A, F, G, H, E, 0xD43CEC53, W03, W03 ^ W07);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  140|  3.85M|        W03 = EXPAND(W03, W10, W00, W06, W13);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  141|  3.85M|        R2(A, B, C, D, E, F, G, H, 0xA879D8A7, W04, W04 ^ W08);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  142|  3.85M|        W04 = EXPAND(W04, W11, W01, W07, W14);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  143|  3.85M|        R2(D, A, B, C, H, E, F, G, 0x50F3B14F, W05, W05 ^ W09);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  144|  3.85M|        W05 = EXPAND(W05, W12, W02, W08, W15);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  145|  3.85M|        R2(C, D, A, B, G, H, E, F, 0xA1E7629E, W06, W06 ^ W10);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  146|  3.85M|        W06 = EXPAND(W06, W13, W03, W09, W00);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  147|  3.85M|        R2(B, C, D, A, F, G, H, E, 0x43CEC53D, W07, W07 ^ W11);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  148|  3.85M|        W07 = EXPAND(W07, W14, W04, W10, W01);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  149|  3.85M|        R2(A, B, C, D, E, F, G, H, 0x879D8A7A, W08, W08 ^ W12);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  150|  3.85M|        W08 = EXPAND(W08, W15, W05, W11, W02);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  151|  3.85M|        R2(D, A, B, C, H, E, F, G, 0x0F3B14F5, W09, W09 ^ W13);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  152|  3.85M|        W09 = EXPAND(W09, W00, W06, W12, W03);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  153|  3.85M|        R2(C, D, A, B, G, H, E, F, 0x1E7629EA, W10, W10 ^ W14);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  154|  3.85M|        W10 = EXPAND(W10, W01, W07, W13, W04);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  155|  3.85M|        R2(B, C, D, A, F, G, H, E, 0x3CEC53D4, W11, W11 ^ W15);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  156|  3.85M|        W11 = EXPAND(W11, W02, W08, W14, W05);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  157|  3.85M|        R2(A, B, C, D, E, F, G, H, 0x79D8A7A8, W12, W12 ^ W00);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  158|  3.85M|        W12 = EXPAND(W12, W03, W09, W15, W06);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  159|  3.85M|        R2(D, A, B, C, H, E, F, G, 0xF3B14F50, W13, W13 ^ W01);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  160|  3.85M|        W13 = EXPAND(W13, W04, W10, W00, W07);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  161|  3.85M|        R2(C, D, A, B, G, H, E, F, 0xE7629EA1, W14, W14 ^ W02);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  162|  3.85M|        W14 = EXPAND(W14, W05, W11, W01, W08);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  163|  3.85M|        R2(B, C, D, A, F, G, H, E, 0xCEC53D43, W15, W15 ^ W03);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  164|  3.85M|        W15 = EXPAND(W15, W06, W12, W02, W09);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  165|  3.85M|        R2(A, B, C, D, E, F, G, H, 0x9D8A7A87, W00, W00 ^ W04);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  166|  3.85M|        W00 = EXPAND(W00, W07, W13, W03, W10);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  167|  3.85M|        R2(D, A, B, C, H, E, F, G, 0x3B14F50F, W01, W01 ^ W05);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  168|  3.85M|        W01 = EXPAND(W01, W08, W14, W04, W11);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  169|  3.85M|        R2(C, D, A, B, G, H, E, F, 0x7629EA1E, W02, W02 ^ W06);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  170|  3.85M|        W02 = EXPAND(W02, W09, W15, W05, W12);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  171|  3.85M|        R2(B, C, D, A, F, G, H, E, 0xEC53D43C, W03, W03 ^ W07);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  172|  3.85M|        W03 = EXPAND(W03, W10, W00, W06, W13);
  ------------------
  |  |  108|  3.85M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.85M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  173|  3.85M|        R2(A, B, C, D, E, F, G, H, 0xD8A7A879, W04, W04 ^ W08);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  174|  3.85M|        R2(D, A, B, C, H, E, F, G, 0xB14F50F3, W05, W05 ^ W09);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  175|  3.85M|        R2(C, D, A, B, G, H, E, F, 0x629EA1E7, W06, W06 ^ W10);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  176|  3.85M|        R2(B, C, D, A, F, G, H, E, 0xC53D43CE, W07, W07 ^ W11);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  177|  3.85M|        R2(A, B, C, D, E, F, G, H, 0x8A7A879D, W08, W08 ^ W12);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  178|  3.85M|        R2(D, A, B, C, H, E, F, G, 0x14F50F3B, W09, W09 ^ W13);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  179|  3.85M|        R2(C, D, A, B, G, H, E, F, 0x29EA1E76, W10, W10 ^ W14);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  180|  3.85M|        R2(B, C, D, A, F, G, H, E, 0x53D43CEC, W11, W11 ^ W15);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  181|  3.85M|        R2(A, B, C, D, E, F, G, H, 0xA7A879D8, W12, W12 ^ W00);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  182|  3.85M|        R2(D, A, B, C, H, E, F, G, 0x4F50F3B1, W13, W13 ^ W01);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  183|  3.85M|        R2(C, D, A, B, G, H, E, F, 0x9EA1E762, W14, W14 ^ W02);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  184|  3.85M|        R2(B, C, D, A, F, G, H, E, 0x3D43CEC5, W15, W15 ^ W03);
  ------------------
  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.85M|    do {                                                           \
  |  |  |  |  112|  3.85M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.85M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.85M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.85M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.85M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.85M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.85M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.85M|        D = TT1;                                                   \
  |  |  |  |  119|  3.85M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.85M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.85M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.85M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.85M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.85M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  185|       |
  186|  3.85M|        ctx->A ^= A;
  187|  3.85M|        ctx->B ^= B;
  188|  3.85M|        ctx->C ^= C;
  189|  3.85M|        ctx->D ^= D;
  190|  3.85M|        ctx->E ^= E;
  191|  3.85M|        ctx->F ^= F;
  192|  3.85M|        ctx->G ^= G;
  193|  3.85M|        ctx->H ^= H;
  194|  3.85M|    }
  195|    314|}

ossl_sa_new:
   59|     49|{
   60|     49|    OPENSSL_SA *res = OPENSSL_zalloc(sizeof(*res));
  ------------------
  |  |  113|     49|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   61|       |
   62|     49|    return res;
   63|     49|}
ossl_sa_get:
  157|  2.30k|{
  158|  2.30k|    int level;
  159|  2.30k|    void **p, *r = NULL;
  160|       |
  161|  2.30k|    if (sa == NULL || sa->nelem == 0)
  ------------------
  |  Branch (161:9): [True: 0, False: 2.30k]
  |  Branch (161:23): [True: 2, False: 2.30k]
  ------------------
  162|      2|        return NULL;
  163|       |
  164|  2.30k|    if (n <= sa->top) {
  ------------------
  |  Branch (164:9): [True: 2.27k, False: 24]
  ------------------
  165|  2.27k|        p = sa->nodes;
  166|  3.01k|        for (level = sa->levels - 1; p != NULL && level > 0; level--)
  ------------------
  |  Branch (166:38): [True: 2.96k, False: 50]
  |  Branch (166:51): [True: 737, False: 2.22k]
  ------------------
  167|    737|            p = (void **)p[(n >> (OPENSSL_SA_BLOCK_BITS * level))
  ------------------
  |  |   34|    737|#define OPENSSL_SA_BLOCK_BITS 4
  ------------------
  168|    737|                & SA_BLOCK_MASK];
  ------------------
  |  |   46|    737|#define SA_BLOCK_MASK (SA_BLOCK_MAX - 1)
  |  |  ------------------
  |  |  |  |   45|    737|#define SA_BLOCK_MAX (1 << OPENSSL_SA_BLOCK_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   34|    737|#define OPENSSL_SA_BLOCK_BITS 4
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  169|  2.27k|        r = p == NULL ? NULL : p[n & SA_BLOCK_MASK];
  ------------------
  |  |   46|  2.22k|#define SA_BLOCK_MASK (SA_BLOCK_MAX - 1)
  |  |  ------------------
  |  |  |  |   45|  2.22k|#define SA_BLOCK_MAX (1 << OPENSSL_SA_BLOCK_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   34|  2.22k|#define OPENSSL_SA_BLOCK_BITS 4
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (169:13): [True: 50, False: 2.22k]
  ------------------
  170|  2.27k|    }
  171|  2.30k|    return r;
  172|  2.30k|}
ossl_sa_set:
  180|     37|{
  181|     37|    int i, level = 1;
  182|     37|    ossl_uintmax_t n = posn;
  183|     37|    void **p;
  184|       |
  185|     37|    if (sa == NULL)
  ------------------
  |  Branch (185:9): [True: 0, False: 37]
  ------------------
  186|      0|        return 0;
  187|       |
  188|    136|    for (level = 1; level < SA_BLOCK_MAX_LEVELS; level++)
  ------------------
  |  |   47|    136|#define SA_BLOCK_MAX_LEVELS (((int)sizeof(ossl_uintmax_t) * 8 \
  |  |   48|    136|                                 + OPENSSL_SA_BLOCK_BITS - 1) \
  |  |  ------------------
  |  |  |  |   34|    136|#define OPENSSL_SA_BLOCK_BITS 4
  |  |  ------------------
  |  |   49|    136|    / OPENSSL_SA_BLOCK_BITS)
  |  |  ------------------
  |  |  |  |   34|    136|#define OPENSSL_SA_BLOCK_BITS 4
  |  |  ------------------
  ------------------
  |  Branch (188:21): [True: 136, False: 0]
  ------------------
  189|    136|        if ((n >>= OPENSSL_SA_BLOCK_BITS) == 0)
  ------------------
  |  |   34|    136|#define OPENSSL_SA_BLOCK_BITS 4
  ------------------
  |  Branch (189:13): [True: 37, False: 99]
  ------------------
  190|     37|            break;
  191|       |
  192|     42|    for (; sa->levels < level; sa->levels++) {
  ------------------
  |  Branch (192:12): [True: 5, False: 37]
  ------------------
  193|      5|        p = alloc_node();
  194|      5|        if (p == NULL)
  ------------------
  |  Branch (194:13): [True: 0, False: 5]
  ------------------
  195|      0|            return 0;
  196|      5|        p[0] = sa->nodes;
  197|      5|        sa->nodes = p;
  198|      5|    }
  199|     37|    if (sa->top < posn)
  ------------------
  |  Branch (199:9): [True: 13, False: 24]
  ------------------
  200|     13|        sa->top = posn;
  201|       |
  202|     37|    p = sa->nodes;
  203|    136|    for (level = sa->levels - 1; level > 0; level--) {
  ------------------
  |  Branch (203:34): [True: 99, False: 37]
  ------------------
  204|     99|        i = (posn >> (OPENSSL_SA_BLOCK_BITS * level)) & SA_BLOCK_MASK;
  ------------------
  |  |   34|     99|#define OPENSSL_SA_BLOCK_BITS 4
  ------------------
                      i = (posn >> (OPENSSL_SA_BLOCK_BITS * level)) & SA_BLOCK_MASK;
  ------------------
  |  |   46|     99|#define SA_BLOCK_MASK (SA_BLOCK_MAX - 1)
  |  |  ------------------
  |  |  |  |   45|     99|#define SA_BLOCK_MAX (1 << OPENSSL_SA_BLOCK_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   34|     99|#define OPENSSL_SA_BLOCK_BITS 4
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  205|     99|        if (p[i] == NULL && (p[i] = alloc_node()) == NULL)
  ------------------
  |  Branch (205:13): [True: 70, False: 29]
  |  Branch (205:29): [True: 0, False: 70]
  ------------------
  206|      0|            return 0;
  207|     99|        p = p[i];
  208|     99|    }
  209|     37|    p += posn & SA_BLOCK_MASK;
  ------------------
  |  |   46|     37|#define SA_BLOCK_MASK (SA_BLOCK_MAX - 1)
  |  |  ------------------
  |  |  |  |   45|     37|#define SA_BLOCK_MAX (1 << OPENSSL_SA_BLOCK_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   34|     37|#define OPENSSL_SA_BLOCK_BITS 4
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  210|     37|    if (val == NULL && *p != NULL)
  ------------------
  |  Branch (210:9): [True: 0, False: 37]
  |  Branch (210:24): [True: 0, False: 0]
  ------------------
  211|      0|        sa->nelem--;
  212|     37|    else if (val != NULL && *p == NULL)
  ------------------
  |  Branch (212:14): [True: 37, False: 0]
  |  Branch (212:29): [True: 34, False: 3]
  ------------------
  213|     34|        sa->nelem++;
  214|     37|    *p = val;
  215|     37|    return 1;
  216|     37|}
sparse_array.c:alloc_node:
  175|     75|{
  176|     75|    return OPENSSL_calloc(SA_BLOCK_MAX, sizeof(void *));
  ------------------
  |  |  117|     75|    CRYPTO_calloc(num, size, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_calloc(num, size, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  177|     75|}

OPENSSL_sk_deep_copy:
  116|      4|{
  117|      4|    return internal_copy(sk, copy_func, free_func);
  118|      4|}
OPENSSL_sk_dup:
  121|    545|{
  122|    545|    return internal_copy(sk, NULL, NULL);
  123|    545|}
OPENSSL_sk_new_null:
  126|    724|{
  127|       |    return OPENSSL_sk_new_reserve(NULL, 0);
  128|    724|}
OPENSSL_sk_new:
  131|    220|{
  132|    220|    return OPENSSL_sk_new_reserve(c, 0);
  133|    220|}
OPENSSL_sk_new_reserve:
  227|    944|{
  228|    944|    OPENSSL_STACK *st = OPENSSL_zalloc(sizeof(OPENSSL_STACK));
  ------------------
  |  |  113|    944|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  229|       |
  230|    944|    if (st == NULL)
  ------------------
  |  Branch (230:9): [True: 0, False: 944]
  ------------------
  231|      0|        return NULL;
  232|       |
  233|    944|    st->comp = c;
  234|    944|    st->sorted = 1; /* empty or single-element stack is considered sorted */
  235|       |
  236|    944|    if (n <= 0)
  ------------------
  |  Branch (236:9): [True: 944, False: 0]
  ------------------
  237|    944|        return st;
  238|       |
  239|      0|    if (!sk_reserve(st, n, 1)) {
  ------------------
  |  Branch (239:9): [True: 0, False: 0]
  ------------------
  240|      0|        OPENSSL_sk_free(st);
  241|      0|        return NULL;
  242|      0|    }
  243|       |
  244|      0|    return st;
  245|      0|}
OPENSSL_sk_set_thunks:
  260|  1.15k|{
  261|  1.15k|    if (st != NULL)
  ------------------
  |  Branch (261:9): [True: 1.15k, False: 0]
  ------------------
  262|  1.15k|        st->free_thunk = f_thunk;
  263|       |
  264|  1.15k|    return st;
  265|  1.15k|}
OPENSSL_sk_set_cmp_thunks:
  268|    944|{
  269|    944|    if (st != NULL)
  ------------------
  |  Branch (269:9): [True: 944, False: 0]
  ------------------
  270|    944|        st->cmp_thunk = c_thunk;
  271|       |
  272|    944|    return st;
  273|    944|}
OPENSSL_sk_set_copy_thunks:
  276|    944|{
  277|    944|    if (st != NULL)
  ------------------
  |  Branch (277:9): [True: 944, False: 0]
  ------------------
  278|    944|        st->copy_thunk = cp_thunk;
  279|       |
  280|    944|    return st;
  281|    944|}
OPENSSL_sk_insert:
  284|    496|{
  285|    496|    int cmp_ret;
  286|       |
  287|    496|    if (st == NULL) {
  ------------------
  |  Branch (287:9): [True: 0, False: 496]
  ------------------
  288|      0|        ERR_raise(ERR_LIB_CRYPTO, ERR_R_PASSED_NULL_PARAMETER);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  289|      0|        return 0;
  290|      0|    }
  291|    496|    if (st->num == max_nodes) {
  ------------------
  |  Branch (291:9): [True: 0, False: 496]
  ------------------
  292|      0|        ERR_raise(ERR_LIB_CRYPTO, CRYPTO_R_TOO_MANY_RECORDS);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  293|      0|        return 0;
  294|      0|    }
  295|       |
  296|    496|    if (!sk_reserve(st, 1, 0))
  ------------------
  |  Branch (296:9): [True: 0, False: 496]
  ------------------
  297|      0|        return 0;
  298|       |
  299|    496|    if ((loc >= st->num) || (loc < 0)) {
  ------------------
  |  Branch (299:9): [True: 496, False: 0]
  |  Branch (299:29): [True: 0, False: 0]
  ------------------
  300|    496|        loc = st->num;
  301|    496|        st->data[loc] = data;
  302|    496|    } else {
  303|      0|        memmove(&st->data[loc + 1], &st->data[loc],
  304|      0|            sizeof(st->data[0]) * (st->num - loc));
  305|      0|        st->data[loc] = data;
  306|      0|    }
  307|    496|    st->num++;
  308|    496|    if (st->sorted && st->num > 1) {
  ------------------
  |  Branch (308:9): [True: 306, False: 190]
  |  Branch (308:23): [True: 131, False: 175]
  ------------------
  309|    131|        if (st->comp != NULL) {
  ------------------
  |  Branch (309:13): [True: 2, False: 129]
  ------------------
  310|      2|            if (loc > 0) {
  ------------------
  |  Branch (310:17): [True: 2, False: 0]
  ------------------
  311|      2|                cmp_ret = cmp_with_thunk(st, &st->data[loc - 1], &st->data[loc]);
  312|      2|                if (cmp_ret > 0)
  ------------------
  |  Branch (312:21): [True: 0, False: 2]
  ------------------
  313|      0|                    st->sorted = 0;
  314|      2|            }
  315|      2|            if (loc < st->num - 1) {
  ------------------
  |  Branch (315:17): [True: 0, False: 2]
  ------------------
  316|      0|                cmp_ret = cmp_with_thunk(st, &st->data[loc + 1], &st->data[loc]);
  317|      0|                if (cmp_ret < 0)
  ------------------
  |  Branch (317:21): [True: 0, False: 0]
  ------------------
  318|      0|                    st->sorted = 0;
  319|      0|            }
  320|    129|        } else {
  321|    129|            st->sorted = 0;
  322|    129|        }
  323|    131|    }
  324|    496|    return st->num;
  325|    496|}
OPENSSL_sk_find:
  431|      8|{
  432|      8|    return internal_find(st, data, OSSL_BSEARCH_FIRST_VALUE_ON_MATCH, NULL);
  ------------------
  |  |  150|      8|#define OSSL_BSEARCH_FIRST_VALUE_ON_MATCH 0x02
  ------------------
  433|      8|}
OPENSSL_sk_push:
  446|    496|{
  447|    496|    if (st == NULL)
  ------------------
  |  Branch (447:9): [True: 0, False: 496]
  ------------------
  448|      0|        return 0;
  449|    496|    return OPENSSL_sk_insert(st, data, st->num);
  450|    496|}
OPENSSL_sk_pop_free:
  480|    214|{
  481|    214|    int i;
  482|       |
  483|    214|    if (st == NULL)
  ------------------
  |  Branch (483:9): [True: 0, False: 214]
  ------------------
  484|      0|        return;
  485|       |
  486|    216|    for (i = 0; i < st->num; i++)
  ------------------
  |  Branch (486:17): [True: 2, False: 214]
  ------------------
  487|      2|        free_with_thunk(st, func, st->data[i]);
  488|       |
  489|    214|    OPENSSL_sk_free(st);
  490|    214|}
OPENSSL_sk_free:
  493|    759|{
  494|    759|    if (st == NULL)
  ------------------
  |  Branch (494:9): [True: 0, False: 759]
  ------------------
  495|      0|        return;
  496|    759|    OPENSSL_free(st->data);
  ------------------
  |  |  136|    759|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  497|    759|    OPENSSL_free(st);
  ------------------
  |  |  136|    759|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  498|    759|}
OPENSSL_sk_num:
  501|  1.26k|{
  502|  1.26k|    return st == NULL ? -1 : st->num;
  ------------------
  |  Branch (502:12): [True: 0, False: 1.26k]
  ------------------
  503|  1.26k|}
OPENSSL_sk_value:
  506|  3.57k|{
  507|  3.57k|    if (st == NULL || i < 0 || i >= st->num)
  ------------------
  |  Branch (507:9): [True: 0, False: 3.57k]
  |  Branch (507:23): [True: 0, False: 3.57k]
  |  Branch (507:32): [True: 0, False: 3.57k]
  ------------------
  508|      0|        return NULL;
  509|  3.57k|    return (void *)st->data[i];
  510|  3.57k|}
OPENSSL_sk_sort:
  529|    214|{
  530|    214|    if (st != NULL && !st->sorted && st->comp != NULL) {
  ------------------
  |  Branch (530:9): [True: 214, False: 0]
  |  Branch (530:23): [True: 0, False: 214]
  |  Branch (530:38): [True: 0, False: 0]
  ------------------
  531|      0|        if (st->num > 1)
  ------------------
  |  Branch (531:13): [True: 0, False: 0]
  ------------------
  532|      0|            qsort(st->data, st->num, sizeof(void *), st->comp);
  533|      0|        st->sorted = 1; /* empty or single-element stack is considered sorted */
  534|      0|    }
  535|    214|}
OPENSSL_sk_is_sorted:
  538|      4|{
  539|      4|    return st == NULL ? 1 : st->sorted;
  ------------------
  |  Branch (539:12): [True: 0, False: 4]
  ------------------
  540|      4|}
stack.c:internal_copy:
   64|    549|{
   65|    549|    OPENSSL_STACK *ret;
   66|    549|    int i;
   67|       |
   68|    549|    if ((ret = OPENSSL_sk_new_null()) == NULL)
  ------------------
  |  Branch (68:9): [True: 0, False: 549]
  ------------------
   69|      0|        goto err;
   70|       |
   71|    549|    if (sk == NULL)
  ------------------
  |  Branch (71:9): [True: 4, False: 545]
  ------------------
   72|      4|        goto done;
   73|       |
   74|       |    /* direct structure assignment */
   75|    545|    *ret = *sk;
   76|    545|    ret->data = NULL;
   77|    545|    ret->num_alloc = 0;
   78|       |
   79|    545|    if (ret->num == 0)
  ------------------
  |  Branch (79:9): [True: 0, False: 545]
  ------------------
   80|      0|        goto done; /* nothing to copy */
   81|       |
   82|    545|    ret->num_alloc = ret->num > min_nodes ? ret->num : min_nodes;
  ------------------
  |  Branch (82:22): [True: 2, False: 543]
  ------------------
   83|    545|    ret->data = OPENSSL_calloc(ret->num_alloc, sizeof(*ret->data));
  ------------------
  |  |  117|    545|    CRYPTO_calloc(num, size, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_calloc(num, size, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   84|    545|    if (ret->data == NULL)
  ------------------
  |  Branch (84:9): [True: 0, False: 545]
  ------------------
   85|      0|        goto err;
   86|    545|    if (copy_func == NULL) {
  ------------------
  |  Branch (86:9): [True: 545, False: 0]
  ------------------
   87|    545|        memcpy(ret->data, sk->data, sizeof(*ret->data) * ret->num);
   88|    545|    } else {
   89|      0|        for (i = 0; i < ret->num; ++i) {
  ------------------
  |  Branch (89:21): [True: 0, False: 0]
  ------------------
   90|      0|            if (sk->data[i] == NULL)
  ------------------
  |  Branch (90:17): [True: 0, False: 0]
  ------------------
   91|      0|                continue;
   92|      0|            if (ret->copy_thunk != NULL)
  ------------------
  |  Branch (92:17): [True: 0, False: 0]
  ------------------
   93|      0|                ret->data[i] = ret->copy_thunk(copy_func, sk->data[i]);
   94|      0|            else
   95|      0|                ret->data[i] = copy_func(sk->data[i]);
   96|       |
   97|      0|            if (ret->data[i] == NULL) {
  ------------------
  |  Branch (97:17): [True: 0, False: 0]
  ------------------
   98|      0|                while (--i >= 0)
  ------------------
  |  Branch (98:24): [True: 0, False: 0]
  ------------------
   99|      0|                    free_with_thunk(ret, free_func, ret->data[i]);
  100|      0|                goto err;
  101|      0|            }
  102|      0|        }
  103|      0|    }
  104|       |
  105|    549|done:
  106|    549|    return ret;
  107|       |
  108|      0|err:
  109|      0|    OPENSSL_sk_free(ret);
  110|       |    return NULL;
  111|    545|}
stack.c:sk_reserve:
  173|    496|{
  174|    496|    const void **tmpdata;
  175|    496|    int num_alloc;
  176|       |
  177|       |    /* Check to see the reservation isn't exceeding the hard limit */
  178|    496|    if (n > max_nodes - st->num) {
  ------------------
  |  Branch (178:9): [True: 0, False: 496]
  ------------------
  179|      0|        ERR_raise(ERR_LIB_CRYPTO, CRYPTO_R_TOO_MANY_RECORDS);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  180|      0|        return 0;
  181|      0|    }
  182|       |
  183|       |    /* Figure out the new size */
  184|    496|    num_alloc = st->num + n;
  185|    496|    if (num_alloc < min_nodes)
  ------------------
  |  Branch (185:9): [True: 340, False: 156]
  ------------------
  186|    340|        num_alloc = min_nodes;
  187|       |
  188|       |    /* If |st->data| allocation was postponed */
  189|    496|    if (st->data == NULL) {
  ------------------
  |  Branch (189:9): [True: 175, False: 321]
  ------------------
  190|       |        /*
  191|       |         * At this point, |st->num_alloc| and |st->num| are 0;
  192|       |         * so |num_alloc| value is |n| or |min_nodes| if greater than |n|.
  193|       |         */
  194|    175|        if ((st->data = OPENSSL_calloc(num_alloc, sizeof(void *))) == NULL)
  ------------------
  |  |  117|    175|    CRYPTO_calloc(num, size, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_calloc(num, size, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  |  Branch (194:13): [True: 0, False: 175]
  ------------------
  195|      0|            return 0;
  196|    175|        st->num_alloc = num_alloc;
  197|    175|        return 1;
  198|    175|    }
  199|       |
  200|    321|    if (!exact) {
  ------------------
  |  Branch (200:9): [True: 321, False: 0]
  ------------------
  201|    321|        if (num_alloc <= st->num_alloc)
  ------------------
  |  Branch (201:13): [True: 306, False: 15]
  ------------------
  202|    306|            return 1;
  203|     15|        num_alloc = compute_growth(num_alloc, st->num_alloc);
  204|     15|        if (num_alloc == 0) {
  ------------------
  |  Branch (204:13): [True: 0, False: 15]
  ------------------
  205|      0|            ERR_raise(ERR_LIB_CRYPTO, CRYPTO_R_TOO_MANY_RECORDS);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  206|      0|            return 0;
  207|      0|        }
  208|     15|    } else if (num_alloc == st->num_alloc) {
  ------------------
  |  Branch (208:16): [True: 0, False: 0]
  ------------------
  209|      0|        return 1;
  210|      0|    }
  211|       |
  212|     15|    tmpdata = OPENSSL_realloc_array((void *)st->data, num_alloc, sizeof(void *));
  ------------------
  |  |  129|     15|    CRYPTO_realloc_array(addr, num, size, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_realloc_array(addr, num, size, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  213|     15|    if (tmpdata == NULL)
  ------------------
  |  Branch (213:9): [True: 0, False: 15]
  ------------------
  214|      0|        return 0;
  215|       |
  216|     15|    st->data = tmpdata;
  217|     15|    st->num_alloc = num_alloc;
  218|     15|    return 1;
  219|     15|}
stack.c:compute_growth:
  155|     15|{
  156|     15|    int err = 0;
  157|       |
  158|     30|    while (current < target) {
  ------------------
  |  Branch (158:12): [True: 15, False: 15]
  ------------------
  159|     15|        if (current >= max_nodes)
  ------------------
  |  Branch (159:13): [True: 0, False: 15]
  ------------------
  160|      0|            return 0;
  161|       |
  162|     15|        current = safe_muldiv_int(current, 8, 5, &err);
  163|     15|        if (err != 0)
  ------------------
  |  Branch (163:13): [True: 0, False: 15]
  ------------------
  164|      0|            return 0;
  165|     15|        if (current >= max_nodes)
  ------------------
  |  Branch (165:13): [True: 0, False: 15]
  ------------------
  166|      0|            current = max_nodes;
  167|     15|    }
  168|     15|    return current;
  169|     15|}
stack.c:cmp_with_thunk:
  222|      2|{
  223|      2|    return (st->cmp_thunk == NULL) ? st->comp(a, b) : st->cmp_thunk(st->comp, a, b);
  ------------------
  |  Branch (223:12): [True: 0, False: 2]
  ------------------
  224|      2|}
stack.c:internal_find:
  363|      8|{
  364|      8|    const void *r;
  365|      8|    int i, count = 0;
  366|      8|    int cmp_ret;
  367|      8|    int *pnum = pnum_matched;
  368|       |
  369|      8|    if (st == NULL || st->num == 0)
  ------------------
  |  Branch (369:9): [True: 0, False: 8]
  |  Branch (369:23): [True: 4, False: 4]
  ------------------
  370|      4|        return -1;
  371|       |
  372|      4|    if (pnum == NULL)
  ------------------
  |  Branch (372:9): [True: 4, False: 0]
  ------------------
  373|      4|        pnum = &count;
  374|       |
  375|      4|    if (st->comp == NULL) {
  ------------------
  |  Branch (375:9): [True: 0, False: 4]
  ------------------
  376|      0|        for (i = 0; i < st->num; i++)
  ------------------
  |  Branch (376:21): [True: 0, False: 0]
  ------------------
  377|      0|            if (st->data[i] == data) {
  ------------------
  |  Branch (377:17): [True: 0, False: 0]
  ------------------
  378|      0|                *pnum = 1;
  379|      0|                return i;
  380|      0|            }
  381|      0|        *pnum = 0;
  382|      0|        return -1;
  383|      0|    }
  384|       |
  385|      4|    if (data == NULL)
  ------------------
  |  Branch (385:9): [True: 0, False: 4]
  ------------------
  386|      0|        return -1;
  387|       |
  388|      4|    if (!st->sorted) {
  ------------------
  |  Branch (388:9): [True: 0, False: 4]
  ------------------
  389|      0|        int res = -1;
  390|       |
  391|      0|        for (i = 0; i < st->num; i++) {
  ------------------
  |  Branch (391:21): [True: 0, False: 0]
  ------------------
  392|      0|            cmp_ret = cmp_with_thunk(st, &data, st->data + i);
  393|      0|            if (cmp_ret == 0) {
  ------------------
  |  Branch (393:17): [True: 0, False: 0]
  ------------------
  394|      0|                if (res == -1)
  ------------------
  |  Branch (394:21): [True: 0, False: 0]
  ------------------
  395|      0|                    res = i;
  396|      0|                ++*pnum;
  397|       |                /* Check if only one result is wanted and exit if so */
  398|      0|                if (pnum_matched == NULL)
  ------------------
  |  Branch (398:21): [True: 0, False: 0]
  ------------------
  399|      0|                    return i;
  400|      0|            }
  401|      0|        }
  402|      0|        if (res == -1)
  ------------------
  |  Branch (402:13): [True: 0, False: 0]
  ------------------
  403|      0|            *pnum = 0;
  404|      0|        return res;
  405|      0|    }
  406|       |
  407|      4|    if (pnum_matched != NULL)
  ------------------
  |  Branch (407:9): [True: 0, False: 4]
  ------------------
  408|      0|        ret_val_options |= OSSL_BSEARCH_FIRST_VALUE_ON_MATCH;
  ------------------
  |  |  150|      0|#define OSSL_BSEARCH_FIRST_VALUE_ON_MATCH 0x02
  ------------------
  409|      4|    r = ossl_bsearch(&data, st->data, st->num, sizeof(void *), st->comp, st->cmp_thunk,
  410|      4|        ret_val_options);
  411|       |
  412|      4|    if (pnum_matched != NULL) {
  ------------------
  |  Branch (412:9): [True: 0, False: 4]
  ------------------
  413|      0|        *pnum = 0;
  414|      0|        if (r != NULL) {
  ------------------
  |  Branch (414:13): [True: 0, False: 0]
  ------------------
  415|      0|            const void **p = (const void **)r;
  416|       |
  417|      0|            while (p < st->data + st->num) {
  ------------------
  |  Branch (417:20): [True: 0, False: 0]
  ------------------
  418|      0|                cmp_ret = cmp_with_thunk(st, &data, p);
  419|      0|                if (cmp_ret != 0)
  ------------------
  |  Branch (419:21): [True: 0, False: 0]
  ------------------
  420|      0|                    break;
  421|      0|                ++*pnum;
  422|      0|                ++p;
  423|      0|            }
  424|      0|        }
  425|      0|    }
  426|       |
  427|      4|    return r == NULL ? -1 : (int)((const void **)r - st->data);
  ------------------
  |  Branch (427:12): [True: 4, False: 0]
  ------------------
  428|      4|}
stack.c:free_with_thunk:
   52|      2|{
   53|      2|    if (data == NULL)
  ------------------
  |  Branch (53:9): [True: 0, False: 2]
  ------------------
   54|      0|        return;
   55|      2|    if (sk->free_thunk != NULL)
  ------------------
  |  Branch (55:9): [True: 2, False: 0]
  ------------------
   56|      2|        sk->free_thunk(free_func, (void *)data);
   57|      0|    else
   58|      0|        free_func((void *)data);
   59|      2|}

ossl_err_load_OSSL_STORE_strings:
   71|      1|{
   72|      1|#ifndef OPENSSL_NO_ERR
   73|      1|    if (ERR_reason_error_string(OSSL_STORE_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (73:9): [True: 1, False: 0]
  ------------------
   74|      1|        ERR_load_strings_const(OSSL_STORE_str_reasons);
   75|      1|#endif
   76|      1|    return 1;
   77|      1|}

ossl_store_loader_store_cache_flush:
  414|      4|{
  415|      4|    OSSL_METHOD_STORE *store = get_loader_store(libctx);
  416|       |
  417|      4|    if (store != NULL)
  ------------------
  |  Branch (417:9): [True: 4, False: 0]
  ------------------
  418|      4|        return ossl_method_store_cache_flush_all(store);
  419|      0|    return 1;
  420|      4|}
store_meth.c:get_loader_store:
  123|      4|{
  124|      4|    return ossl_lib_ctx_get_data(libctx, OSSL_LIB_CTX_STORE_LOADER_STORE_INDEX);
  ------------------
  |  |  112|      4|#define OSSL_LIB_CTX_STORE_LOADER_STORE_INDEX 15
  ------------------
  125|      4|}

OSSL_get_max_threads:
   43|      1|{
   44|      1|    uint64_t ret = 0;
   45|      1|    OSSL_LIB_CTX_THREADS *tdata = OSSL_LIB_CTX_GET_THREADS(ctx);
  ------------------
  |  |   28|      1|    ossl_lib_ctx_get_data(CTX, OSSL_LIB_CTX_THREAD_INDEX);
  |  |  ------------------
  |  |  |  |  116|      1|#define OSSL_LIB_CTX_THREAD_INDEX 19
  |  |  ------------------
  ------------------
   46|       |
   47|      1|    if (tdata == NULL)
  ------------------
  |  Branch (47:9): [True: 0, False: 1]
  ------------------
   48|      0|        goto fail;
   49|       |
   50|      1|    ossl_crypto_mutex_lock(tdata->lock);
   51|      1|    ret = tdata->max_threads;
   52|      1|    ossl_crypto_mutex_unlock(tdata->lock);
   53|       |
   54|      1|fail:
   55|      1|    return ret;
   56|      1|}
OSSL_set_max_threads:
   59|      1|{
   60|      1|    OSSL_LIB_CTX_THREADS *tdata;
   61|       |
   62|      1|    tdata = OSSL_LIB_CTX_GET_THREADS(ctx);
  ------------------
  |  |   28|      1|    ossl_lib_ctx_get_data(CTX, OSSL_LIB_CTX_THREAD_INDEX);
  |  |  ------------------
  |  |  |  |  116|      1|#define OSSL_LIB_CTX_THREAD_INDEX 19
  |  |  ------------------
  ------------------
   63|      1|    if (tdata == NULL)
  ------------------
  |  Branch (63:9): [True: 0, False: 1]
  ------------------
   64|      0|        return 0;
   65|       |
   66|      1|    ossl_crypto_mutex_lock(tdata->lock);
   67|      1|    tdata->max_threads = max_threads;
   68|      1|    ossl_crypto_mutex_unlock(tdata->lock);
   69|       |
   70|      1|    return 1;
   71|      1|}

ossl_crypto_mutex_new:
   97|      3|{
   98|      3|    pthread_mutex_t *mutex;
   99|       |
  100|      3|    if ((mutex = OPENSSL_zalloc(sizeof(*mutex))) == NULL)
  ------------------
  |  |  113|      3|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  |  Branch (100:9): [True: 0, False: 3]
  ------------------
  101|      0|        return NULL;
  102|      3|    if (pthread_mutex_init(mutex, NULL) != 0) {
  ------------------
  |  Branch (102:9): [True: 0, False: 3]
  ------------------
  103|      0|        OPENSSL_free(mutex);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  104|      0|        return NULL;
  105|      0|    }
  106|      3|    return (CRYPTO_MUTEX *)mutex;
  107|      3|}
ossl_crypto_mutex_lock:
  122|      2|{
  123|      2|    int rc;
  124|      2|    pthread_mutex_t *mutex_p;
  125|       |
  126|      2|    mutex_p = (pthread_mutex_t *)mutex;
  127|      2|    rc = pthread_mutex_lock(mutex_p);
  128|      2|    OPENSSL_assert(rc == 0);
  ------------------
  |  |  519|      2|    (void)((e) ? 0 : (OPENSSL_die("assertion failed: " #e, OPENSSL_FILE, OPENSSL_LINE), 1))
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   (void)((e) ? 0 : (OPENSSL_die("assertion failed: " #e, OPENSSL_FILE, OPENSSL_LINE), 1))
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |  |  Branch (519:12): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  129|      2|}
ossl_crypto_mutex_unlock:
  132|      2|{
  133|      2|    int rc;
  134|      2|    pthread_mutex_t *mutex_p;
  135|       |
  136|      2|    mutex_p = (pthread_mutex_t *)mutex;
  137|      2|    rc = pthread_mutex_unlock(mutex_p);
  138|      2|    OPENSSL_assert(rc == 0);
  ------------------
  |  |  519|      2|    (void)((e) ? 0 : (OPENSSL_die("assertion failed: " #e, OPENSSL_FILE, OPENSSL_LINE), 1))
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   (void)((e) ? 0 : (OPENSSL_die("assertion failed: " #e, OPENSSL_FILE, OPENSSL_LINE), 1))
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |  |  Branch (519:12): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  139|      2|}
ossl_crypto_condvar_new:
  156|      3|{
  157|      3|    pthread_cond_t *cv_p;
  158|       |
  159|      3|    if ((cv_p = OPENSSL_zalloc(sizeof(*cv_p))) == NULL)
  ------------------
  |  |  113|      3|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  |  Branch (159:9): [True: 0, False: 3]
  ------------------
  160|      0|        return NULL;
  161|      3|    if (pthread_cond_init(cv_p, NULL) != 0) {
  ------------------
  |  Branch (161:9): [True: 0, False: 3]
  ------------------
  162|      0|        OPENSSL_free(cv_p);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  163|      0|        return NULL;
  164|      0|    }
  165|      3|    return (CRYPTO_CONDVAR *)cv_p;
  166|      3|}

ossl_threads_ctx_new:
  128|      3|{
  129|      3|    struct openssl_threads_st *t = OPENSSL_zalloc(sizeof(*t));
  ------------------
  |  |  113|      3|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  130|       |
  131|      3|    if (t == NULL)
  ------------------
  |  Branch (131:9): [True: 0, False: 3]
  ------------------
  132|      0|        return NULL;
  133|       |
  134|      3|    t->lock = ossl_crypto_mutex_new();
  135|      3|    t->cond_finished = ossl_crypto_condvar_new();
  136|       |
  137|      3|    if (t->lock == NULL || t->cond_finished == NULL)
  ------------------
  |  Branch (137:9): [True: 0, False: 3]
  |  Branch (137:28): [True: 0, False: 3]
  ------------------
  138|      0|        goto fail;
  139|       |
  140|      3|    return t;
  141|       |
  142|      0|fail:
  143|      0|    ossl_threads_ctx_free((void *)t);
  144|       |    return NULL;
  145|      3|}

CRYPTO_THREAD_get_local_ex:
  259|  2.01k|{
  260|  2.01k|    MASTER_KEY_ENTRY *mkey;
  261|  2.01k|    CTX_TABLE_ENTRY ctxd;
  262|       |
  263|  2.01k|    ctx = (ctx == CRYPTO_THREAD_NO_CONTEXT) ? NULL : ossl_lib_ctx_get_concrete(ctx);
  ------------------
  |  |   44|  2.01k|#define CRYPTO_THREAD_NO_CONTEXT (void *)1
  ------------------
  |  Branch (263:11): [True: 2.01k, False: 0]
  ------------------
  264|       |    /*
  265|       |     * Make sure the master key has been initialized
  266|       |     * NOTE: We use CRYPTO_THREAD_run_once here, rather than the
  267|       |     * RUN_ONCE macros.  We do this because this code is included both in
  268|       |     * libcrypto, and in fips.[dll|dylib|so].  FIPS attempts to avoid doing
  269|       |     * one time initialization of global data, and so suppresses the definition
  270|       |     * of RUN_ONCE, etc, meaning the build breaks if we were to use that with
  271|       |     * fips-enabled.  However, this is a special case in which we want/need
  272|       |     * this one bit of global data to be initialized in both the fips provider
  273|       |     * and in libcrypto, so we use CRYPTO_THREAD_run_one directly, which is
  274|       |     * always defined.
  275|       |     */
  276|  2.01k|    if (!CRYPTO_THREAD_run_once(&master_once, init_master_key))
  ------------------
  |  Branch (276:9): [True: 0, False: 2.01k]
  ------------------
  277|      0|        return NULL;
  278|       |
  279|  2.01k|    if (!ossl_assert(id < CRYPTO_THREAD_LOCAL_KEY_MAX))
  ------------------
  |  |   44|  2.01k|#define ossl_assert(x) ossl_likely((x) != 0)
  |  |  ------------------
  |  |  |  |   22|  2.01k|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  ------------------
  |  Branch (279:9): [True: 0, False: 2.01k]
  ------------------
  280|      0|        return NULL;
  281|       |
  282|       |    /*
  283|       |     * Get our master table sparse array, indexed by key id
  284|       |     */
  285|  2.01k|    mkey = CRYPTO_THREAD_get_local(&master_key);
  286|  2.01k|    if (mkey == NULL)
  ------------------
  |  Branch (286:9): [True: 1, False: 2.01k]
  ------------------
  287|      1|        return NULL;
  288|       |
  289|       |    /*
  290|       |     * Get the specific data entry in the master key
  291|       |     * table for the key id we are searching for
  292|       |     */
  293|  2.01k|    if (mkey[id].ctx_table == NULL)
  ------------------
  |  Branch (293:9): [True: 0, False: 2.01k]
  ------------------
  294|      0|        return NULL;
  295|       |
  296|       |    /*
  297|       |     * If we find an entry above, that will be a sparse array,
  298|       |     * indexed by OSSL_LIB_CTX.
  299|       |     * Note: Because we're using sparse arrays here, we can do an easy
  300|       |     * trick, since we know all OSSL_LIB_CTX pointers are unique.  By casting
  301|       |     * the pointer to a unitptr_t, we can use that as an ordinal index into
  302|       |     * the sparse array.
  303|       |     */
  304|  2.01k|    ctxd = ossl_sa_CTX_TABLE_ENTRY_get(mkey[id].ctx_table, (uintptr_t)ctx);
  305|       |
  306|       |    /*
  307|       |     * If we find an entry for the passed in context, return its data pointer
  308|       |     */
  309|  2.01k|    return ctxd;
  310|  2.01k|}
CRYPTO_THREAD_set_local_ex:
  338|      4|{
  339|      4|    MASTER_KEY_ENTRY *mkey;
  340|       |
  341|      4|    ctx = (ctx == CRYPTO_THREAD_NO_CONTEXT) ? NULL : ossl_lib_ctx_get_concrete(ctx);
  ------------------
  |  |   44|      4|#define CRYPTO_THREAD_NO_CONTEXT (void *)1
  ------------------
  |  Branch (341:11): [True: 4, False: 0]
  ------------------
  342|       |    /*
  343|       |     * Make sure our master key is initialized
  344|       |     * See notes above on the use of CRYPTO_THREAD_run_once here
  345|       |     */
  346|      4|    if (!CRYPTO_THREAD_run_once(&master_once, init_master_key))
  ------------------
  |  Branch (346:9): [True: 0, False: 4]
  ------------------
  347|      0|        return 0;
  348|       |
  349|      4|    if (!ossl_assert(id < CRYPTO_THREAD_LOCAL_KEY_MAX))
  ------------------
  |  |   44|      4|#define ossl_assert(x) ossl_likely((x) != 0)
  |  |  ------------------
  |  |  |  |   22|      4|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  ------------------
  |  Branch (349:9): [True: 0, False: 4]
  ------------------
  350|      0|        return 0;
  351|       |
  352|       |    /*
  353|       |     * Get our local master key data, which will be
  354|       |     * a sparse array indexed by the id parameter
  355|       |     */
  356|      4|    mkey = CRYPTO_THREAD_get_local(&master_key);
  357|      4|    if (mkey == NULL) {
  ------------------
  |  Branch (357:9): [True: 1, False: 3]
  ------------------
  358|       |        /*
  359|       |         * we didn't find one, but that's ok, just initialize it now
  360|       |         */
  361|      1|        mkey = OPENSSL_calloc(CRYPTO_THREAD_LOCAL_KEY_MAX,
  ------------------
  |  |  117|      1|    CRYPTO_calloc(num, size, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_calloc(num, size, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  362|      1|            sizeof(MASTER_KEY_ENTRY));
  363|      1|        if (mkey == NULL)
  ------------------
  |  Branch (363:13): [True: 0, False: 1]
  ------------------
  364|      0|            return 0;
  365|       |        /*
  366|       |         * make sure to assign it to our master key thread-local storage
  367|       |         */
  368|      1|        if (!CRYPTO_THREAD_set_local(&master_key, mkey)) {
  ------------------
  |  Branch (368:13): [True: 0, False: 1]
  ------------------
  369|      0|            OPENSSL_free(mkey);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  370|      0|            return 0;
  371|      0|        }
  372|      1|    }
  373|       |
  374|       |    /*
  375|       |     * Find the entry that we are looking for using our id index
  376|       |     */
  377|      4|    if (mkey[id].ctx_table == NULL) {
  ------------------
  |  Branch (377:9): [True: 1, False: 3]
  ------------------
  378|       |
  379|       |        /*
  380|       |         * Didn't find it, that's ok, just add it now
  381|       |         */
  382|      1|        mkey[id].ctx_table = ossl_sa_CTX_TABLE_ENTRY_new();
  383|      1|        if (mkey[id].ctx_table == NULL)
  ------------------
  |  Branch (383:13): [True: 0, False: 1]
  ------------------
  384|      0|            return 0;
  385|      1|    }
  386|       |
  387|       |    /*
  388|       |     * Now go look up our per context entry, using the OSSL_LIB_CTX pointer
  389|       |     * that we've been provided.  Note we cast the pointer to a uintptr_t so
  390|       |     * as to use it as an index in the sparse array
  391|       |     *
  392|       |     * Assign to the entry in the table so that we can find it later
  393|       |     */
  394|      4|    return ossl_sa_CTX_TABLE_ENTRY_set(mkey[id].ctx_table,
  395|      4|        (uintptr_t)ctx, data);
  396|      4|}
threads_common.c:init_master_key:
  216|      1|{
  217|       |    /*
  218|       |     * Note: We assign a cleanup function here, which is atypical for
  219|       |     * uses of CRYPTO_THREAD_init_local.  This is because, nominally
  220|       |     * we expect that the use of ossl_init_thread_start will be used
  221|       |     * to notify openssl of exiting threads.  However, in this case
  222|       |     * we want the metadata for this interface (the sparse arrays) to
  223|       |     * stay valid until the thread actually exits, which is what the
  224|       |     * clean_master_key function does.  Data held in the sparse arrays
  225|       |     * (that is assigned via CRYPTO_THREAD_set_local_ex), are still expected
  226|       |     * to be cleaned via the ossl_init_thread_start/stop api.
  227|       |     */
  228|      1|    if (!CRYPTO_THREAD_init_local(&master_key, clean_master_key))
  ------------------
  |  Branch (228:9): [True: 0, False: 1]
  ------------------
  229|      0|        return;
  230|       |
  231|       |    /*
  232|       |     * Indicate that the key has been set up.
  233|       |     */
  234|      1|    master_key_init = 1;
  235|      1|}

ossl_rcu_uptr_deref:
  549|  2.67M|{
  550|  2.67M|    return ATOMIC_LOAD_N(pvoid, p, __ATOMIC_ACQUIRE);
  ------------------
  |  |  114|  2.67M|#define ATOMIC_LOAD_N(t, p, o) __atomic_load_n(p, o)
  ------------------
  551|  2.67M|}
ossl_rcu_assign_uptr:
  554|    299|{
  555|    299|    ATOMIC_STORE(pvoid, p, v, __ATOMIC_RELEASE);
  ------------------
  |  |  116|    299|#define ATOMIC_STORE(t, p, v, o) __atomic_store(p, v, o)
  ------------------
  556|    299|}
ossl_rcu_lock_new:
  559|      3|{
  560|      3|    struct rcu_lock_st *new;
  561|      3|    pthread_mutex_t *mutexes[3] = { NULL };
  562|      3|    pthread_cond_t *conds[2] = { NULL };
  563|      3|    int i;
  564|       |
  565|       |    /*
  566|       |     * We need a minimum of 2 qp's
  567|       |     */
  568|      3|    if (num_writers < 2)
  ------------------
  |  Branch (568:9): [True: 3, False: 0]
  ------------------
  569|      3|        num_writers = 2;
  570|       |
  571|      3|    ctx = ossl_lib_ctx_get_concrete(ctx);
  572|      3|    if (ctx == NULL)
  ------------------
  |  Branch (572:9): [True: 0, False: 3]
  ------------------
  573|      0|        return 0;
  574|       |
  575|      3|    new = OPENSSL_zalloc(sizeof(*new));
  ------------------
  |  |  113|      3|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  576|      3|    if (new == NULL)
  ------------------
  |  Branch (576:9): [True: 0, False: 3]
  ------------------
  577|      0|        return NULL;
  578|       |
  579|      3|    new->ctx = ctx;
  580|      3|    i = 0;
  581|      3|    mutexes[i] = pthread_mutex_init(&new->write_lock, NULL) == 0 ? &new->write_lock : NULL;
  ------------------
  |  Branch (581:18): [True: 3, False: 0]
  ------------------
  582|      3|    if (mutexes[i++] == NULL)
  ------------------
  |  Branch (582:9): [True: 0, False: 3]
  ------------------
  583|      0|        goto err;
  584|      3|    mutexes[i] = pthread_mutex_init(&new->prior_lock, NULL) == 0 ? &new->prior_lock : NULL;
  ------------------
  |  Branch (584:18): [True: 3, False: 0]
  ------------------
  585|      3|    if (mutexes[i++] == NULL)
  ------------------
  |  Branch (585:9): [True: 0, False: 3]
  ------------------
  586|      0|        goto err;
  587|      3|    mutexes[i] = pthread_mutex_init(&new->alloc_lock, NULL) == 0 ? &new->alloc_lock : NULL;
  ------------------
  |  Branch (587:18): [True: 3, False: 0]
  ------------------
  588|      3|    if (mutexes[i++] == NULL)
  ------------------
  |  Branch (588:9): [True: 0, False: 3]
  ------------------
  589|      0|        goto err;
  590|      3|    conds[i - 3] = pthread_cond_init(&new->prior_signal, NULL) == 0 ? &new->prior_signal : NULL;
  ------------------
  |  Branch (590:20): [True: 3, False: 0]
  ------------------
  591|      3|    if (conds[i - 3] == NULL)
  ------------------
  |  Branch (591:9): [True: 0, False: 3]
  ------------------
  592|      0|        goto err;
  593|      3|    i++;
  594|      3|    conds[i - 3] = pthread_cond_init(&new->alloc_signal, NULL) == 0 ? &new->alloc_signal : NULL;
  ------------------
  |  Branch (594:20): [True: 3, False: 0]
  ------------------
  595|      3|    if (conds[i - 3] == NULL)
  ------------------
  |  Branch (595:9): [True: 0, False: 3]
  ------------------
  596|      0|        goto err;
  597|      3|    i++;
  598|      3|    new->qp_group = allocate_new_qp_group(new, num_writers);
  599|      3|    if (new->qp_group == NULL)
  ------------------
  |  Branch (599:9): [True: 0, False: 3]
  ------------------
  600|      0|        goto err;
  601|       |
  602|      3|    return new;
  603|       |
  604|      0|err:
  605|      0|    for (i = 0; i < 3; i++)
  ------------------
  |  Branch (605:17): [True: 0, False: 0]
  ------------------
  606|      0|        if (mutexes[i] != NULL)
  ------------------
  |  Branch (606:13): [True: 0, False: 0]
  ------------------
  607|      0|            pthread_mutex_destroy(mutexes[i]);
  608|      0|    for (i = 0; i < 2; i++)
  ------------------
  |  Branch (608:17): [True: 0, False: 0]
  ------------------
  609|      0|        if (conds[i] != NULL)
  ------------------
  |  Branch (609:13): [True: 0, False: 0]
  ------------------
  610|      0|            pthread_cond_destroy(conds[i]);
  611|      0|    OPENSSL_free(new->qp_group);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  612|      0|    OPENSSL_free(new);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  613|       |    return NULL;
  614|      3|}
CRYPTO_THREAD_lock_new:
  901|    159|{
  902|    159|#ifdef USE_RWLOCK
  903|    159|    CRYPTO_RWLOCK *lock;
  904|       |
  905|    159|    ossl_init_rwlock_contention_data();
  906|       |
  907|    159|    if ((lock = OPENSSL_zalloc(sizeof(pthread_rwlock_t))) == NULL)
  ------------------
  |  |  113|    159|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  |  Branch (907:9): [True: 0, False: 159]
  ------------------
  908|       |        /* Don't set error, to avoid recursion blowup. */
  909|      0|        return NULL;
  910|       |
  911|    159|    if (pthread_rwlock_init(lock, NULL) != 0) {
  ------------------
  |  Branch (911:9): [True: 0, False: 159]
  ------------------
  912|      0|        OPENSSL_free(lock);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  913|      0|        return NULL;
  914|      0|    }
  915|       |#else
  916|       |    pthread_mutexattr_t attr;
  917|       |    CRYPTO_RWLOCK *lock;
  918|       |
  919|       |    if ((lock = OPENSSL_zalloc(sizeof(pthread_mutex_t))) == NULL)
  920|       |        /* Don't set error, to avoid recursion blowup. */
  921|       |        return NULL;
  922|       |
  923|       |    /*
  924|       |     * We don't use recursive mutexes, but try to catch errors if we do.
  925|       |     */
  926|       |    pthread_mutexattr_init(&attr);
  927|       |#if !defined(__TANDEM) && !defined(_SPT_MODEL_)
  928|       |#if !defined(NDEBUG) && !defined(OPENSSL_NO_MUTEX_ERRORCHECK)
  929|       |    pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK);
  930|       |#endif
  931|       |#else
  932|       |    /* The SPT Thread Library does not define MUTEX attributes. */
  933|       |#endif
  934|       |
  935|       |    if (pthread_mutex_init(lock, &attr) != 0) {
  936|       |        pthread_mutexattr_destroy(&attr);
  937|       |        OPENSSL_free(lock);
  938|       |        return NULL;
  939|       |    }
  940|       |
  941|       |    pthread_mutexattr_destroy(&attr);
  942|       |#endif
  943|       |
  944|    159|    return lock;
  945|    159|}
CRYPTO_THREAD_read_lock:
  948|  3.78k|{
  949|  3.78k|#ifdef USE_RWLOCK
  950|  3.78k|    if (!ossl_assert(ossl_rwlock_rdlock(lock) == 0))
  ------------------
  |  |   44|  3.78k|#define ossl_assert(x) ossl_likely((x) != 0)
  |  |  ------------------
  |  |  |  |   22|  3.78k|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  ------------------
  |  Branch (950:9): [True: 0, False: 3.78k]
  ------------------
  951|      0|        return 0;
  952|       |#else
  953|       |    if (pthread_mutex_lock(lock) != 0) {
  954|       |        assert(errno != EDEADLK && errno != EBUSY);
  955|       |        return 0;
  956|       |    }
  957|       |#endif
  958|       |
  959|  3.78k|    return 1;
  960|  3.78k|}
CRYPTO_THREAD_write_lock:
  963|  2.35k|{
  964|  2.35k|#ifdef USE_RWLOCK
  965|  2.35k|    if (!ossl_assert(ossl_rwlock_wrlock(lock) == 0))
  ------------------
  |  |   44|  2.35k|#define ossl_assert(x) ossl_likely((x) != 0)
  |  |  ------------------
  |  |  |  |   22|  2.35k|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  ------------------
  |  Branch (965:9): [True: 0, False: 2.35k]
  ------------------
  966|      0|        return 0;
  967|       |#else
  968|       |    if (pthread_mutex_lock(lock) != 0) {
  969|       |        assert(errno != EDEADLK && errno != EBUSY);
  970|       |        return 0;
  971|       |    }
  972|       |#endif
  973|       |
  974|  2.35k|    return 1;
  975|  2.35k|}
CRYPTO_THREAD_unlock:
  978|  6.14k|{
  979|  6.14k|#ifdef USE_RWLOCK
  980|  6.14k|    if (ossl_rwlock_unlock(lock) != 0)
  ------------------
  |  Branch (980:9): [True: 0, False: 6.14k]
  ------------------
  981|      0|        return 0;
  982|       |#else
  983|       |    if (pthread_mutex_unlock(lock) != 0) {
  984|       |        assert(errno != EPERM);
  985|       |        return 0;
  986|       |    }
  987|       |#endif
  988|       |
  989|  6.14k|    return 1;
  990|  6.14k|}
CRYPTO_THREAD_run_once:
 1008|  7.28k|{
 1009|  7.28k|    if (ossl_unlikely(pthread_once(once, init) != 0))
  ------------------
  |  |   23|  7.28k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 7.28k]
  |  |  ------------------
  ------------------
 1010|      0|        return 0;
 1011|       |
 1012|  7.28k|    return 1;
 1013|  7.28k|}
CRYPTO_THREAD_init_local:
 1016|      4|{
 1017|      4|    if (pthread_key_create(key, cleanup) != 0)
  ------------------
  |  Branch (1017:9): [True: 0, False: 4]
  ------------------
 1018|      0|        return 0;
 1019|       |
 1020|      4|    return 1;
 1021|      4|}
CRYPTO_THREAD_get_local:
 1024|  3.24k|{
 1025|  3.24k|    return pthread_getspecific(*key);
 1026|  3.24k|}
CRYPTO_THREAD_set_local:
 1029|      2|{
 1030|      2|    if (pthread_setspecific(*key, val) != 0)
  ------------------
  |  Branch (1030:9): [True: 0, False: 2]
  ------------------
 1031|      0|        return 0;
 1032|       |
 1033|      2|    return 1;
 1034|      2|}
CRYPTO_atomic_add:
 1055|  2.04k|{
 1056|  2.04k|#if defined(OSSL_USE_GCC_ATOMICS)
 1057|  2.04k|    if (__atomic_is_lock_free(sizeof(*val), val)) {
  ------------------
  |  Branch (1057:9): [True: 2.04k, Folded]
  ------------------
 1058|  2.04k|        *ret = __atomic_add_fetch(val, amount, __ATOMIC_ACQ_REL);
 1059|  2.04k|        return 1;
 1060|  2.04k|    }
 1061|       |#elif defined(OSSL_USE_SOLARIS_ATOMICS)
 1062|       |    /* This will work for all future Solaris versions. */
 1063|       |    if (ret != NULL) {
 1064|       |        *ret = atomic_add_int_nv((volatile unsigned int *)val, amount);
 1065|       |        return 1;
 1066|       |    }
 1067|       |#endif
 1068|      0|    if (lock == NULL || !CRYPTO_THREAD_write_lock(lock))
  ------------------
  |  Branch (1068:9): [True: 0, False: 0]
  |  Branch (1068:25): [True: 0, False: 0]
  ------------------
 1069|      0|        return 0;
 1070|       |
 1071|      0|    *val += amount;
 1072|      0|    *ret = *val;
 1073|       |
 1074|      0|    if (!CRYPTO_THREAD_unlock(lock))
  ------------------
  |  Branch (1074:9): [True: 0, False: 0]
  ------------------
 1075|      0|        return 0;
 1076|       |
 1077|      0|    return 1;
 1078|      0|}
CRYPTO_atomic_or:
 1134|      2|{
 1135|      2|#if defined(OSSL_USE_GCC_ATOMICS)
 1136|      2|    if (__atomic_is_lock_free(sizeof(*val), val)) {
  ------------------
  |  Branch (1136:9): [True: 2, Folded]
  ------------------
 1137|      2|        *ret = __atomic_or_fetch(val, op, __ATOMIC_ACQ_REL);
 1138|      2|        return 1;
 1139|      2|    }
 1140|       |#elif defined(OSSL_USE_SOLARIS_ATOMICS)
 1141|       |    /* This will work for all future Solaris versions. */
 1142|       |    if (ret != NULL) {
 1143|       |        *ret = atomic_or_64_nv(val, op);
 1144|       |        return 1;
 1145|       |    }
 1146|       |#endif
 1147|      0|    if (lock == NULL || !CRYPTO_THREAD_write_lock(lock))
  ------------------
  |  Branch (1147:9): [True: 0, False: 0]
  |  Branch (1147:25): [True: 0, False: 0]
  ------------------
 1148|      0|        return 0;
 1149|      0|    *val |= op;
 1150|      0|    *ret = *val;
 1151|       |
 1152|      0|    if (!CRYPTO_THREAD_unlock(lock))
  ------------------
  |  Branch (1152:9): [True: 0, False: 0]
  ------------------
 1153|      0|        return 0;
 1154|       |
 1155|      0|    return 1;
 1156|      0|}
CRYPTO_atomic_load:
 1159|  1.87M|{
 1160|  1.87M|#if defined(OSSL_USE_GCC_ATOMICS)
 1161|  1.87M|    if (__atomic_is_lock_free(sizeof(*val), val)) {
  ------------------
  |  Branch (1161:9): [True: 1.87M, Folded]
  ------------------
 1162|  1.87M|        __atomic_load(val, ret, __ATOMIC_ACQUIRE);
 1163|  1.87M|        return 1;
 1164|  1.87M|    }
 1165|       |#elif defined(OSSL_USE_SOLARIS_ATOMICS)
 1166|       |    /* This will work for all future Solaris versions. */
 1167|       |    if (ret != NULL) {
 1168|       |        *ret = atomic_or_64_nv(val, 0);
 1169|       |        return 1;
 1170|       |    }
 1171|       |#endif
 1172|      0|    if (lock == NULL || !CRYPTO_THREAD_read_lock(lock))
  ------------------
  |  Branch (1172:9): [True: 0, False: 0]
  |  Branch (1172:25): [True: 0, False: 0]
  ------------------
 1173|      0|        return 0;
 1174|      0|    *ret = *val;
 1175|      0|    if (!CRYPTO_THREAD_unlock(lock))
  ------------------
  |  Branch (1175:9): [True: 0, False: 0]
  ------------------
 1176|      0|        return 0;
 1177|       |
 1178|      0|    return 1;
 1179|      0|}
CRYPTO_atomic_store:
 1182|    299|{
 1183|    299|#if defined(OSSL_USE_GCC_ATOMICS)
 1184|    299|    if (__atomic_is_lock_free(sizeof(*dst), dst)) {
  ------------------
  |  Branch (1184:9): [True: 299, Folded]
  ------------------
 1185|    299|        __atomic_store(dst, &val, __ATOMIC_RELEASE);
 1186|    299|        return 1;
 1187|    299|    }
 1188|       |#elif defined(OSSL_USE_SOLARIS_ATOMICS)
 1189|       |    /* This will work for all future Solaris versions. */
 1190|       |    if (dst != NULL) {
 1191|       |        atomic_swap_64(dst, val);
 1192|       |        return 1;
 1193|       |    }
 1194|       |#endif
 1195|      0|    if (lock == NULL || !CRYPTO_THREAD_write_lock(lock))
  ------------------
  |  Branch (1195:9): [True: 0, False: 0]
  |  Branch (1195:25): [True: 0, False: 0]
  ------------------
 1196|      0|        return 0;
 1197|      0|    *dst = val;
 1198|      0|    if (!CRYPTO_THREAD_unlock(lock))
  ------------------
  |  Branch (1198:9): [True: 0, False: 0]
  ------------------
 1199|      0|        return 0;
 1200|       |
 1201|      0|    return 1;
 1202|      0|}
CRYPTO_atomic_load_int:
 1205|  27.3M|{
 1206|  27.3M|#if defined(OSSL_USE_GCC_ATOMICS)
 1207|  27.3M|    if (__atomic_is_lock_free(sizeof(*val), val)) {
  ------------------
  |  Branch (1207:9): [True: 27.3M, Folded]
  ------------------
 1208|  27.3M|        __atomic_load(val, ret, __ATOMIC_ACQUIRE);
 1209|  27.3M|        return 1;
 1210|  27.3M|    }
 1211|       |#elif defined(OSSL_USE_SOLARIS_ATOMICS)
 1212|       |    /* This will work for all future Solaris versions. */
 1213|       |    if (ret != NULL) {
 1214|       |        *ret = (int)atomic_or_uint_nv((unsigned int *)val, 0);
 1215|       |        return 1;
 1216|       |    }
 1217|       |#endif
 1218|      0|    if (lock == NULL || !CRYPTO_THREAD_read_lock(lock))
  ------------------
  |  Branch (1218:9): [True: 0, False: 0]
  |  Branch (1218:25): [True: 0, False: 0]
  ------------------
 1219|      0|        return 0;
 1220|      0|    *ret = *val;
 1221|      0|    if (!CRYPTO_THREAD_unlock(lock))
  ------------------
  |  Branch (1221:9): [True: 0, False: 0]
  ------------------
 1222|      0|        return 0;
 1223|       |
 1224|      0|    return 1;
 1225|      0|}
CRYPTO_atomic_load_ptr:
 1251|  27.3M|{
 1252|  27.3M|#if defined(__GNUC__) && defined(__ATOMIC_RELAXED) && !defined(BROKEN_CLANG_ATOMICS)
 1253|  27.3M|    *ret = __atomic_load_n(ptr, TSAN_LOAD_MEM_ORDER);
  ------------------
  |  |   62|  27.3M|#define TSAN_LOAD_MEM_ORDER __ATOMIC_RELAXED
  ------------------
 1254|  27.3M|    return 1;
 1255|       |#else
 1256|       |    if (lock == NULL || !CRYPTO_THREAD_read_lock(lock))
 1257|       |        return 0;
 1258|       |    *ret = *ptr;
 1259|       |    if (!CRYPTO_THREAD_unlock(lock))
 1260|       |        return 0;
 1261|       |    return 1;
 1262|       |#endif
 1263|  27.3M|}
CRYPTO_atomic_store_ptr:
 1266|     50|{
 1267|     50|#if defined(__GNUC__) && defined(__ATOMIC_RELAXED) && !defined(BROKEN_CLANG_ATOMICS)
 1268|     50|    __atomic_store(dst, val, TSAN_STORE_MEM_ORDER);
  ------------------
  |  |   63|     50|#define TSAN_STORE_MEM_ORDER __ATOMIC_RELAXED
  ------------------
 1269|     50|    return 1;
 1270|       |#else
 1271|       |    if (lock == NULL || !CRYPTO_THREAD_write_lock(lock))
 1272|       |        return 0;
 1273|       |    *dst = *val;
 1274|       |    if (!CRYPTO_THREAD_unlock(lock))
 1275|       |        return 0;
 1276|       |    return 1;
 1277|       |#endif
 1278|     50|}
CRYPTO_atomic_cmp_exch_ptr:
 1281|     50|{
 1282|     50|#if defined(__GNUC__) && defined(__ATOMIC_RELAXED) && !defined(BROKEN_CLANG_ATOMICS)
 1283|     50|    if (lock_failed != NULL)
  ------------------
  |  Branch (1283:9): [True: 50, False: 0]
  ------------------
 1284|     50|        *lock_failed = 0;
 1285|     50|    return __atomic_compare_exchange_n(ptr, expect, desire, 0, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED) ? 1 : 0;
  ------------------
  |  Branch (1285:12): [True: 50, False: 0]
  ------------------
 1286|       |#else
 1287|       |    int lock_sink;
 1288|       |    int ret = 0;
 1289|       |
 1290|       |    if (lock_failed == NULL)
 1291|       |        lock_failed = &lock_sink;
 1292|       |
 1293|       |    *lock_failed = 0;
 1294|       |    if (lock == NULL || !CRYPTO_THREAD_write_lock(lock)) {
 1295|       |        *lock_failed = 1;
 1296|       |        return 0;
 1297|       |    }
 1298|       |    if (*ptr == *expect) {
 1299|       |        ret = 1;
 1300|       |        *ptr = desire;
 1301|       |    } else {
 1302|       |        *expect = *ptr;
 1303|       |    }
 1304|       |    if (!CRYPTO_THREAD_unlock(lock))
 1305|       |        *lock_failed = 1;
 1306|       |    return ret;
 1307|       |#endif
 1308|     50|}
threads_pthread.c:allocate_new_qp_group:
  459|      3|{
  460|      3|    struct rcu_qp *new = OPENSSL_calloc(count, sizeof(*new));
  ------------------
  |  |  117|      3|    CRYPTO_calloc(num, size, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_calloc(num, size, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  461|       |
  462|      3|    lock->group_count = count;
  463|      3|    return new;
  464|      3|}
threads_pthread.c:ossl_init_rwlock_contention_data:
  880|    159|{
  881|    159|}
threads_pthread.c:ossl_rwlock_rdlock:
  884|  3.78k|{
  885|  3.78k|    return pthread_rwlock_rdlock(rwlock);
  886|  3.78k|}
threads_pthread.c:ossl_rwlock_wrlock:
  889|  2.35k|{
  890|  2.35k|    return pthread_rwlock_wrlock(rwlock);
  891|  2.35k|}
threads_pthread.c:ossl_rwlock_unlock:
  894|  6.14k|{
  895|  6.14k|    return pthread_rwlock_unlock(rwlock);
  896|  6.14k|}

ossl_err_load_TS_strings:
   82|      1|{
   83|      1|#ifndef OPENSSL_NO_ERR
   84|      1|    if (ERR_reason_error_string(TS_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (84:9): [True: 1, False: 0]
  ------------------
   85|      1|        ERR_load_strings_const(TS_str_reasons);
   86|      1|#endif
   87|      1|    return 1;
   88|      1|}

ossl_err_load_UI_strings:
   41|      1|{
   42|      1|#ifndef OPENSSL_NO_ERR
   43|      1|    if (ERR_reason_error_string(UI_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (43:9): [True: 1, False: 0]
  ------------------
   44|      1|        ERR_load_strings_const(UI_str_reasons);
   45|      1|#endif
   46|      1|    return 1;
   47|      1|}

ossl_err_load_X509V3_strings:
  146|      1|{
  147|      1|#ifndef OPENSSL_NO_ERR
  148|      1|    if (ERR_reason_error_string(X509V3_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (148:9): [True: 1, False: 0]
  ------------------
  149|      1|        ERR_load_strings_const(X509V3_str_reasons);
  150|      1|#endif
  151|      1|    return 1;
  152|      1|}

ossl_err_load_X509_strings:
   95|      1|{
   96|      1|#ifndef OPENSSL_NO_ERR
   97|      1|    if (ERR_reason_error_string(X509_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (97:9): [True: 1, False: 0]
  ------------------
   98|      1|        ERR_load_strings_const(X509_str_reasons);
   99|      1|#endif
  100|      1|    return 1;
  101|      1|}

EVP_aria_128_cbc:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_aria_128_cfb128:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_aria_128_ofb:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_aria_128_ecb:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_aria_192_cbc:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_aria_192_cfb128:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_aria_192_ofb:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_aria_192_ecb:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_aria_256_cbc:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_aria_256_cfb128:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_aria_256_ofb:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_aria_256_ecb:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_aria_128_cfb1:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_aria_192_cfb1:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_aria_256_cfb1:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_aria_128_cfb8:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_aria_192_cfb8:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_aria_256_cfb8:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_bf_cbc:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_bf_cfb64:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_bf_ofb:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_bf_ecb:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_cast5_cbc:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_cast5_cfb64:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_cast5_ofb:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_cast5_ecb:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_des_cbc:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_des_cfb64:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_des_ofb:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_des_ecb:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_des_cfb1:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_des_cfb8:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_des_ede_cbc:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_des_ede_cfb64:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_des_ede_ofb:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_des_ede3_cbc:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_des_ede3_cfb64:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_des_ede3_ofb:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_des_ede3_cfb1:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_des_ede3_cfb8:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_idea_cbc:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_idea_cfb64:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_idea_ofb:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_idea_ecb:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_rc2_cbc:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_rc2_cfb64:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_rc2_ofb:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_rc2_ecb:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_seed_cbc:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_seed_cfb128:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_seed_ofb:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }
EVP_seed_ecb:
  274|      1|    const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; }

MD4_Update:
  163|    110|{
  164|       |#ifdef HASH_UPDATE_THUNK
  165|       |    HASH_CTX *c = (HASH_CTX *)cp;
  166|       |#endif
  167|    110|    const unsigned char *data = data_;
  168|    110|    unsigned char *p;
  169|    110|    HASH_LONG l;
  ------------------
  |  |   22|    110|#define HASH_LONG MD4_LONG
  ------------------
  170|    110|    size_t n;
  171|       |
  172|    110|    if (ossl_unlikely(len == 0))
  ------------------
  |  |   23|    110|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 110]
  |  |  ------------------
  ------------------
  173|      0|        return 1;
  174|       |
  175|    110|    l = (c->Nl + (((HASH_LONG)len) << 3)) & 0xffffffffUL;
  176|    110|    if (ossl_unlikely(l < c->Nl)) /* overflow */
  ------------------
  |  |   23|    110|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 110]
  |  |  ------------------
  ------------------
  177|      0|        c->Nh++;
  178|    110|    c->Nh += (HASH_LONG)(len >> 29); /* might cause compiler warning on
  179|       |                                      * 16-bit */
  180|    110|    c->Nl = l;
  181|       |
  182|    110|    n = c->num;
  183|    110|    if (ossl_likely(n != 0)) {
  ------------------
  |  |   22|    110|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (22:24): [True: 0, False: 110]
  |  |  ------------------
  ------------------
  184|       |        /* Gets here if we already have buffered input data */
  185|      0|        p = (unsigned char *)c->data;
  186|       |
  187|      0|        if (len >= HASH_CBLOCK || len + n >= HASH_CBLOCK) {
  ------------------
  |  |   24|      0|#define HASH_CBLOCK MD4_CBLOCK
  |  |  ------------------
  |  |  |  |   39|      0|#define MD4_CBLOCK 64
  |  |  ------------------
  ------------------
                      if (len >= HASH_CBLOCK || len + n >= HASH_CBLOCK) {
  ------------------
  |  |   24|      0|#define HASH_CBLOCK MD4_CBLOCK
  |  |  ------------------
  |  |  |  |   39|      0|#define MD4_CBLOCK 64
  |  |  ------------------
  ------------------
  |  Branch (187:13): [True: 0, False: 0]
  |  Branch (187:35): [True: 0, False: 0]
  ------------------
  188|       |            /*
  189|       |             * If there is enough input to fill the buffer then fill the
  190|       |             * buffer and process a single chunk.
  191|       |             */
  192|      0|            memcpy(p + n, data, HASH_CBLOCK - n);
  ------------------
  |  |   24|      0|#define HASH_CBLOCK MD4_CBLOCK
  |  |  ------------------
  |  |  |  |   39|      0|#define MD4_CBLOCK 64
  |  |  ------------------
  ------------------
  193|      0|            HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |   40|      0|#define HASH_BLOCK_DATA_ORDER md4_block_data_order
  ------------------
  194|      0|            n = HASH_CBLOCK - n;
  ------------------
  |  |   24|      0|#define HASH_CBLOCK MD4_CBLOCK
  |  |  ------------------
  |  |  |  |   39|      0|#define MD4_CBLOCK 64
  |  |  ------------------
  ------------------
  195|      0|            data += n;
  196|      0|            len -= n;
  197|      0|            c->num = 0;
  198|       |            /*
  199|       |             * We use memset rather than OPENSSL_cleanse() here deliberately.
  200|       |             * Using OPENSSL_cleanse() here could be a performance issue. It
  201|       |             * will get properly cleansed on finalisation so this isn't a
  202|       |             * security problem.
  203|       |             */
  204|      0|            memset(p, 0, HASH_CBLOCK); /* keep it zeroed */
  ------------------
  |  |   24|      0|#define HASH_CBLOCK MD4_CBLOCK
  |  |  ------------------
  |  |  |  |   39|      0|#define MD4_CBLOCK 64
  |  |  ------------------
  ------------------
  205|      0|        } else {
  206|       |            /* Otherwise just keep filling the buffer */
  207|      0|            memcpy(p + n, data, len);
  208|      0|            c->num += (unsigned int)len;
  209|      0|            return 1;
  210|      0|        }
  211|      0|    }
  212|       |
  213|    110|    n = len / HASH_CBLOCK; /* Get number of input chunks (e.g. multiple of 512 bits for SHA256) */
  ------------------
  |  |   24|    110|#define HASH_CBLOCK MD4_CBLOCK
  |  |  ------------------
  |  |  |  |   39|    110|#define MD4_CBLOCK 64
  |  |  ------------------
  ------------------
  214|    110|    if (n > 0) {
  ------------------
  |  Branch (214:9): [True: 110, False: 0]
  ------------------
  215|       |        /* Process chunks */
  216|    110|        HASH_BLOCK_DATA_ORDER(c, data, n);
  ------------------
  |  |   40|    110|#define HASH_BLOCK_DATA_ORDER md4_block_data_order
  ------------------
  217|    110|        n *= HASH_CBLOCK;
  ------------------
  |  |   24|    110|#define HASH_CBLOCK MD4_CBLOCK
  |  |  ------------------
  |  |  |  |   39|    110|#define MD4_CBLOCK 64
  |  |  ------------------
  ------------------
  218|    110|        data += n;
  219|    110|        len -= n;
  220|    110|    }
  221|       |    /* Buffer any left over data */
  222|    110|    if (len != 0) {
  ------------------
  |  Branch (222:9): [True: 47, False: 63]
  ------------------
  223|     47|        p = (unsigned char *)c->data;
  224|     47|        c->num = (unsigned int)len;
  225|     47|        memcpy(p, data, len);
  226|     47|    }
  227|    110|    return 1;
  228|    110|}
MD4_Final:
  236|     55|{
  237|     55|    unsigned char *p = (unsigned char *)c->data;
  238|     55|    size_t n = c->num;
  239|       |
  240|       |    /*
  241|       |     * Pad the input by adding a 1 bit + K zero bits + input length (L)
  242|       |     * as a 64 bit value. K must align the data to a chunk boundary.
  243|       |     */
  244|     55|    p[n] = 0x80; /* there is always room for one */
  245|     55|    n++;
  246|       |
  247|     55|    if (n > (HASH_CBLOCK - 8)) {
  ------------------
  |  |   24|     55|#define HASH_CBLOCK MD4_CBLOCK
  |  |  ------------------
  |  |  |  |   39|     55|#define MD4_CBLOCK 64
  |  |  ------------------
  ------------------
  |  Branch (247:9): [True: 20, False: 35]
  ------------------
  248|       |        /*
  249|       |         * If there is not enough room in the buffer to add L, then fill the
  250|       |         * current buffer with zeros, and process the chunk
  251|       |         */
  252|     20|        memset(p + n, 0, HASH_CBLOCK - n);
  ------------------
  |  |   24|     20|#define HASH_CBLOCK MD4_CBLOCK
  |  |  ------------------
  |  |  |  |   39|     20|#define MD4_CBLOCK 64
  |  |  ------------------
  ------------------
  253|     20|        n = 0;
  254|     20|        HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |   40|     20|#define HASH_BLOCK_DATA_ORDER md4_block_data_order
  ------------------
  255|     20|    }
  256|       |    /* Add zero padding - but leave enough room for L */
  257|     55|    memset(p + n, 0, HASH_CBLOCK - 8 - n);
  ------------------
  |  |   24|     55|#define HASH_CBLOCK MD4_CBLOCK
  |  |  ------------------
  |  |  |  |   39|     55|#define MD4_CBLOCK 64
  |  |  ------------------
  ------------------
  258|       |
  259|       |    /* Add the 64 bit L value to the end of the buffer */
  260|     55|    p += HASH_CBLOCK - 8;
  ------------------
  |  |   24|     55|#define HASH_CBLOCK MD4_CBLOCK
  |  |  ------------------
  |  |  |  |   39|     55|#define MD4_CBLOCK 64
  |  |  ------------------
  ------------------
  261|       |#if defined(DATA_ORDER_IS_BIG_ENDIAN)
  262|       |    (void)HOST_l2c(c->Nh, p);
  263|       |    (void)HOST_l2c(c->Nl, p);
  264|       |#elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)
  265|     55|    (void)HOST_l2c(c->Nl, p);
  ------------------
  |  |  145|     55|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  146|     55|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  147|     55|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  148|     55|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  149|     55|    l)
  ------------------
  266|     55|    (void)HOST_l2c(c->Nh, p);
  ------------------
  |  |  145|     55|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  146|     55|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  147|     55|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  148|     55|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  149|     55|    l)
  ------------------
  267|     55|#endif
  268|     55|    p -= HASH_CBLOCK;
  ------------------
  |  |   24|     55|#define HASH_CBLOCK MD4_CBLOCK
  |  |  ------------------
  |  |  |  |   39|     55|#define MD4_CBLOCK 64
  |  |  ------------------
  ------------------
  269|       |    /* Process the final padded chunk */
  270|     55|    HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |   40|     55|#define HASH_BLOCK_DATA_ORDER md4_block_data_order
  ------------------
  271|     55|    c->num = 0;
  272|     55|    OPENSSL_cleanse(p, HASH_CBLOCK);
  ------------------
  |  |   24|     55|#define HASH_CBLOCK MD4_CBLOCK
  |  |  ------------------
  |  |  |  |   39|     55|#define MD4_CBLOCK 64
  |  |  ------------------
  ------------------
  273|       |
  274|       |#ifndef HASH_MAKE_STRING
  275|       |#error "HASH_MAKE_STRING must be defined!"
  276|       |#else
  277|     55|    HASH_MAKE_STRING(c, md);
  ------------------
  |  |   29|     55|    do {                         \
  |  |   30|     55|        unsigned long ll;        \
  |  |   31|     55|        ll = (c)->A;             \
  |  |   32|     55|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  145|     55|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  |  |  146|     55|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  |  |  147|     55|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  |  |  148|     55|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  |  |  149|     55|    l)
  |  |  ------------------
  |  |   33|     55|        ll = (c)->B;             \
  |  |   34|     55|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  145|     55|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  |  |  146|     55|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  |  |  147|     55|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  |  |  148|     55|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  |  |  149|     55|    l)
  |  |  ------------------
  |  |   35|     55|        ll = (c)->C;             \
  |  |   36|     55|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  145|     55|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  |  |  146|     55|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  |  |  147|     55|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  |  |  148|     55|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  |  |  149|     55|    l)
  |  |  ------------------
  |  |   37|     55|        ll = (c)->D;             \
  |  |   38|     55|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  145|     55|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  |  |  146|     55|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  |  |  147|     55|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  |  |  148|     55|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  |  |  149|     55|    l)
  |  |  ------------------
  |  |   39|     55|    } while (0)
  |  |  ------------------
  |  |  |  Branch (39:14): [Folded, False: 55]
  |  |  ------------------
  ------------------
  278|     55|#endif
  279|       |
  280|     55|    return 1;
  281|     55|}
MD5_Update:
  163|    158|{
  164|       |#ifdef HASH_UPDATE_THUNK
  165|       |    HASH_CTX *c = (HASH_CTX *)cp;
  166|       |#endif
  167|    158|    const unsigned char *data = data_;
  168|    158|    unsigned char *p;
  169|    158|    HASH_LONG l;
  ------------------
  |  |   32|    158|#define HASH_LONG MD5_LONG
  ------------------
  170|    158|    size_t n;
  171|       |
  172|    158|    if (ossl_unlikely(len == 0))
  ------------------
  |  |   23|    158|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 158]
  |  |  ------------------
  ------------------
  173|      0|        return 1;
  174|       |
  175|    158|    l = (c->Nl + (((HASH_LONG)len) << 3)) & 0xffffffffUL;
  176|    158|    if (ossl_unlikely(l < c->Nl)) /* overflow */
  ------------------
  |  |   23|    158|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 158]
  |  |  ------------------
  ------------------
  177|      0|        c->Nh++;
  178|    158|    c->Nh += (HASH_LONG)(len >> 29); /* might cause compiler warning on
  179|       |                                      * 16-bit */
  180|    158|    c->Nl = l;
  181|       |
  182|    158|    n = c->num;
  183|    158|    if (ossl_likely(n != 0)) {
  ------------------
  |  |   22|    158|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (22:24): [True: 0, False: 158]
  |  |  ------------------
  ------------------
  184|       |        /* Gets here if we already have buffered input data */
  185|      0|        p = (unsigned char *)c->data;
  186|       |
  187|      0|        if (len >= HASH_CBLOCK || len + n >= HASH_CBLOCK) {
  ------------------
  |  |   34|      0|#define HASH_CBLOCK MD5_CBLOCK
  |  |  ------------------
  |  |  |  |   38|      0|#define MD5_CBLOCK 64
  |  |  ------------------
  ------------------
                      if (len >= HASH_CBLOCK || len + n >= HASH_CBLOCK) {
  ------------------
  |  |   34|      0|#define HASH_CBLOCK MD5_CBLOCK
  |  |  ------------------
  |  |  |  |   38|      0|#define MD5_CBLOCK 64
  |  |  ------------------
  ------------------
  |  Branch (187:13): [True: 0, False: 0]
  |  Branch (187:35): [True: 0, False: 0]
  ------------------
  188|       |            /*
  189|       |             * If there is enough input to fill the buffer then fill the
  190|       |             * buffer and process a single chunk.
  191|       |             */
  192|      0|            memcpy(p + n, data, HASH_CBLOCK - n);
  ------------------
  |  |   34|      0|#define HASH_CBLOCK MD5_CBLOCK
  |  |  ------------------
  |  |  |  |   38|      0|#define MD5_CBLOCK 64
  |  |  ------------------
  ------------------
  193|      0|            HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |   50|      0|#define HASH_BLOCK_DATA_ORDER md5_block_data_order
  ------------------
  194|      0|            n = HASH_CBLOCK - n;
  ------------------
  |  |   34|      0|#define HASH_CBLOCK MD5_CBLOCK
  |  |  ------------------
  |  |  |  |   38|      0|#define MD5_CBLOCK 64
  |  |  ------------------
  ------------------
  195|      0|            data += n;
  196|      0|            len -= n;
  197|      0|            c->num = 0;
  198|       |            /*
  199|       |             * We use memset rather than OPENSSL_cleanse() here deliberately.
  200|       |             * Using OPENSSL_cleanse() here could be a performance issue. It
  201|       |             * will get properly cleansed on finalisation so this isn't a
  202|       |             * security problem.
  203|       |             */
  204|      0|            memset(p, 0, HASH_CBLOCK); /* keep it zeroed */
  ------------------
  |  |   34|      0|#define HASH_CBLOCK MD5_CBLOCK
  |  |  ------------------
  |  |  |  |   38|      0|#define MD5_CBLOCK 64
  |  |  ------------------
  ------------------
  205|      0|        } else {
  206|       |            /* Otherwise just keep filling the buffer */
  207|      0|            memcpy(p + n, data, len);
  208|      0|            c->num += (unsigned int)len;
  209|      0|            return 1;
  210|      0|        }
  211|      0|    }
  212|       |
  213|    158|    n = len / HASH_CBLOCK; /* Get number of input chunks (e.g. multiple of 512 bits for SHA256) */
  ------------------
  |  |   34|    158|#define HASH_CBLOCK MD5_CBLOCK
  |  |  ------------------
  |  |  |  |   38|    158|#define MD5_CBLOCK 64
  |  |  ------------------
  ------------------
  214|    158|    if (n > 0) {
  ------------------
  |  Branch (214:9): [True: 158, False: 0]
  ------------------
  215|       |        /* Process chunks */
  216|    158|        HASH_BLOCK_DATA_ORDER(c, data, n);
  ------------------
  |  |   50|    158|#define HASH_BLOCK_DATA_ORDER md5_block_data_order
  ------------------
  217|    158|        n *= HASH_CBLOCK;
  ------------------
  |  |   34|    158|#define HASH_CBLOCK MD5_CBLOCK
  |  |  ------------------
  |  |  |  |   38|    158|#define MD5_CBLOCK 64
  |  |  ------------------
  ------------------
  218|    158|        data += n;
  219|    158|        len -= n;
  220|    158|    }
  221|       |    /* Buffer any left over data */
  222|    158|    if (len != 0) {
  ------------------
  |  Branch (222:9): [True: 50, False: 108]
  ------------------
  223|     50|        p = (unsigned char *)c->data;
  224|     50|        c->num = (unsigned int)len;
  225|     50|        memcpy(p, data, len);
  226|     50|    }
  227|    158|    return 1;
  228|    158|}
MD5_Final:
  236|     79|{
  237|     79|    unsigned char *p = (unsigned char *)c->data;
  238|     79|    size_t n = c->num;
  239|       |
  240|       |    /*
  241|       |     * Pad the input by adding a 1 bit + K zero bits + input length (L)
  242|       |     * as a 64 bit value. K must align the data to a chunk boundary.
  243|       |     */
  244|     79|    p[n] = 0x80; /* there is always room for one */
  245|     79|    n++;
  246|       |
  247|     79|    if (n > (HASH_CBLOCK - 8)) {
  ------------------
  |  |   34|     79|#define HASH_CBLOCK MD5_CBLOCK
  |  |  ------------------
  |  |  |  |   38|     79|#define MD5_CBLOCK 64
  |  |  ------------------
  ------------------
  |  Branch (247:9): [True: 20, False: 59]
  ------------------
  248|       |        /*
  249|       |         * If there is not enough room in the buffer to add L, then fill the
  250|       |         * current buffer with zeros, and process the chunk
  251|       |         */
  252|     20|        memset(p + n, 0, HASH_CBLOCK - n);
  ------------------
  |  |   34|     20|#define HASH_CBLOCK MD5_CBLOCK
  |  |  ------------------
  |  |  |  |   38|     20|#define MD5_CBLOCK 64
  |  |  ------------------
  ------------------
  253|     20|        n = 0;
  254|     20|        HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |   50|     20|#define HASH_BLOCK_DATA_ORDER md5_block_data_order
  ------------------
  255|     20|    }
  256|       |    /* Add zero padding - but leave enough room for L */
  257|     79|    memset(p + n, 0, HASH_CBLOCK - 8 - n);
  ------------------
  |  |   34|     79|#define HASH_CBLOCK MD5_CBLOCK
  |  |  ------------------
  |  |  |  |   38|     79|#define MD5_CBLOCK 64
  |  |  ------------------
  ------------------
  258|       |
  259|       |    /* Add the 64 bit L value to the end of the buffer */
  260|     79|    p += HASH_CBLOCK - 8;
  ------------------
  |  |   34|     79|#define HASH_CBLOCK MD5_CBLOCK
  |  |  ------------------
  |  |  |  |   38|     79|#define MD5_CBLOCK 64
  |  |  ------------------
  ------------------
  261|       |#if defined(DATA_ORDER_IS_BIG_ENDIAN)
  262|       |    (void)HOST_l2c(c->Nh, p);
  263|       |    (void)HOST_l2c(c->Nl, p);
  264|       |#elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)
  265|     79|    (void)HOST_l2c(c->Nl, p);
  ------------------
  |  |  145|     79|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  146|     79|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  147|     79|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  148|     79|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  149|     79|    l)
  ------------------
  266|     79|    (void)HOST_l2c(c->Nh, p);
  ------------------
  |  |  145|     79|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  146|     79|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  147|     79|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  148|     79|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  149|     79|    l)
  ------------------
  267|     79|#endif
  268|     79|    p -= HASH_CBLOCK;
  ------------------
  |  |   34|     79|#define HASH_CBLOCK MD5_CBLOCK
  |  |  ------------------
  |  |  |  |   38|     79|#define MD5_CBLOCK 64
  |  |  ------------------
  ------------------
  269|       |    /* Process the final padded chunk */
  270|     79|    HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |   50|     79|#define HASH_BLOCK_DATA_ORDER md5_block_data_order
  ------------------
  271|     79|    c->num = 0;
  272|     79|    OPENSSL_cleanse(p, HASH_CBLOCK);
  ------------------
  |  |   34|     79|#define HASH_CBLOCK MD5_CBLOCK
  |  |  ------------------
  |  |  |  |   38|     79|#define MD5_CBLOCK 64
  |  |  ------------------
  ------------------
  273|       |
  274|       |#ifndef HASH_MAKE_STRING
  275|       |#error "HASH_MAKE_STRING must be defined!"
  276|       |#else
  277|     79|    HASH_MAKE_STRING(c, md);
  ------------------
  |  |   39|     79|    do {                         \
  |  |   40|     79|        unsigned long ll;        \
  |  |   41|     79|        ll = (c)->A;             \
  |  |   42|     79|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  145|     79|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  |  |  146|     79|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  |  |  147|     79|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  |  |  148|     79|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  |  |  149|     79|    l)
  |  |  ------------------
  |  |   43|     79|        ll = (c)->B;             \
  |  |   44|     79|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  145|     79|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  |  |  146|     79|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  |  |  147|     79|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  |  |  148|     79|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  |  |  149|     79|    l)
  |  |  ------------------
  |  |   45|     79|        ll = (c)->C;             \
  |  |   46|     79|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  145|     79|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  |  |  146|     79|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  |  |  147|     79|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  |  |  148|     79|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  |  |  149|     79|    l)
  |  |  ------------------
  |  |   47|     79|        ll = (c)->D;             \
  |  |   48|     79|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  145|     79|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  |  |  146|     79|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  |  |  147|     79|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  |  |  148|     79|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  |  |  149|     79|    l)
  |  |  ------------------
  |  |   49|     79|    } while (0)
  |  |  ------------------
  |  |  |  Branch (49:14): [Folded, False: 79]
  |  |  ------------------
  ------------------
  278|     79|#endif
  279|       |
  280|     79|    return 1;
  281|     79|}
RIPEMD160_Update:
  163|    134|{
  164|       |#ifdef HASH_UPDATE_THUNK
  165|       |    HASH_CTX *c = (HASH_CTX *)cp;
  166|       |#endif
  167|    134|    const unsigned char *data = data_;
  168|    134|    unsigned char *p;
  169|    134|    HASH_LONG l;
  ------------------
  |  |   32|    134|#define HASH_LONG RIPEMD160_LONG
  ------------------
  170|    134|    size_t n;
  171|       |
  172|    134|    if (ossl_unlikely(len == 0))
  ------------------
  |  |   23|    134|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 134]
  |  |  ------------------
  ------------------
  173|      0|        return 1;
  174|       |
  175|    134|    l = (c->Nl + (((HASH_LONG)len) << 3)) & 0xffffffffUL;
  176|    134|    if (ossl_unlikely(l < c->Nl)) /* overflow */
  ------------------
  |  |   23|    134|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 134]
  |  |  ------------------
  ------------------
  177|      0|        c->Nh++;
  178|    134|    c->Nh += (HASH_LONG)(len >> 29); /* might cause compiler warning on
  179|       |                                      * 16-bit */
  180|    134|    c->Nl = l;
  181|       |
  182|    134|    n = c->num;
  183|    134|    if (ossl_likely(n != 0)) {
  ------------------
  |  |   22|    134|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (22:24): [True: 0, False: 134]
  |  |  ------------------
  ------------------
  184|       |        /* Gets here if we already have buffered input data */
  185|      0|        p = (unsigned char *)c->data;
  186|       |
  187|      0|        if (len >= HASH_CBLOCK || len + n >= HASH_CBLOCK) {
  ------------------
  |  |   34|      0|#define HASH_CBLOCK RIPEMD160_CBLOCK
  |  |  ------------------
  |  |  |  |   34|      0|#define RIPEMD160_CBLOCK 64
  |  |  ------------------
  ------------------
                      if (len >= HASH_CBLOCK || len + n >= HASH_CBLOCK) {
  ------------------
  |  |   34|      0|#define HASH_CBLOCK RIPEMD160_CBLOCK
  |  |  ------------------
  |  |  |  |   34|      0|#define RIPEMD160_CBLOCK 64
  |  |  ------------------
  ------------------
  |  Branch (187:13): [True: 0, False: 0]
  |  Branch (187:35): [True: 0, False: 0]
  ------------------
  188|       |            /*
  189|       |             * If there is enough input to fill the buffer then fill the
  190|       |             * buffer and process a single chunk.
  191|       |             */
  192|      0|            memcpy(p + n, data, HASH_CBLOCK - n);
  ------------------
  |  |   34|      0|#define HASH_CBLOCK RIPEMD160_CBLOCK
  |  |  ------------------
  |  |  |  |   34|      0|#define RIPEMD160_CBLOCK 64
  |  |  ------------------
  ------------------
  193|      0|            HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |   52|      0|#define HASH_BLOCK_DATA_ORDER ripemd160_block_data_order
  ------------------
  194|      0|            n = HASH_CBLOCK - n;
  ------------------
  |  |   34|      0|#define HASH_CBLOCK RIPEMD160_CBLOCK
  |  |  ------------------
  |  |  |  |   34|      0|#define RIPEMD160_CBLOCK 64
  |  |  ------------------
  ------------------
  195|      0|            data += n;
  196|      0|            len -= n;
  197|      0|            c->num = 0;
  198|       |            /*
  199|       |             * We use memset rather than OPENSSL_cleanse() here deliberately.
  200|       |             * Using OPENSSL_cleanse() here could be a performance issue. It
  201|       |             * will get properly cleansed on finalisation so this isn't a
  202|       |             * security problem.
  203|       |             */
  204|      0|            memset(p, 0, HASH_CBLOCK); /* keep it zeroed */
  ------------------
  |  |   34|      0|#define HASH_CBLOCK RIPEMD160_CBLOCK
  |  |  ------------------
  |  |  |  |   34|      0|#define RIPEMD160_CBLOCK 64
  |  |  ------------------
  ------------------
  205|      0|        } else {
  206|       |            /* Otherwise just keep filling the buffer */
  207|      0|            memcpy(p + n, data, len);
  208|      0|            c->num += (unsigned int)len;
  209|      0|            return 1;
  210|      0|        }
  211|      0|    }
  212|       |
  213|    134|    n = len / HASH_CBLOCK; /* Get number of input chunks (e.g. multiple of 512 bits for SHA256) */
  ------------------
  |  |   34|    134|#define HASH_CBLOCK RIPEMD160_CBLOCK
  |  |  ------------------
  |  |  |  |   34|    134|#define RIPEMD160_CBLOCK 64
  |  |  ------------------
  ------------------
  214|    134|    if (n > 0) {
  ------------------
  |  Branch (214:9): [True: 134, False: 0]
  ------------------
  215|       |        /* Process chunks */
  216|    134|        HASH_BLOCK_DATA_ORDER(c, data, n);
  ------------------
  |  |   52|    134|#define HASH_BLOCK_DATA_ORDER ripemd160_block_data_order
  ------------------
  217|    134|        n *= HASH_CBLOCK;
  ------------------
  |  |   34|    134|#define HASH_CBLOCK RIPEMD160_CBLOCK
  |  |  ------------------
  |  |  |  |   34|    134|#define RIPEMD160_CBLOCK 64
  |  |  ------------------
  ------------------
  218|    134|        data += n;
  219|    134|        len -= n;
  220|    134|    }
  221|       |    /* Buffer any left over data */
  222|    134|    if (len != 0) {
  ------------------
  |  Branch (222:9): [True: 52, False: 82]
  ------------------
  223|     52|        p = (unsigned char *)c->data;
  224|     52|        c->num = (unsigned int)len;
  225|     52|        memcpy(p, data, len);
  226|     52|    }
  227|    134|    return 1;
  228|    134|}
RIPEMD160_Final:
  236|     67|{
  237|     67|    unsigned char *p = (unsigned char *)c->data;
  238|     67|    size_t n = c->num;
  239|       |
  240|       |    /*
  241|       |     * Pad the input by adding a 1 bit + K zero bits + input length (L)
  242|       |     * as a 64 bit value. K must align the data to a chunk boundary.
  243|       |     */
  244|     67|    p[n] = 0x80; /* there is always room for one */
  245|     67|    n++;
  246|       |
  247|     67|    if (n > (HASH_CBLOCK - 8)) {
  ------------------
  |  |   34|     67|#define HASH_CBLOCK RIPEMD160_CBLOCK
  |  |  ------------------
  |  |  |  |   34|     67|#define RIPEMD160_CBLOCK 64
  |  |  ------------------
  ------------------
  |  Branch (247:9): [True: 25, False: 42]
  ------------------
  248|       |        /*
  249|       |         * If there is not enough room in the buffer to add L, then fill the
  250|       |         * current buffer with zeros, and process the chunk
  251|       |         */
  252|     25|        memset(p + n, 0, HASH_CBLOCK - n);
  ------------------
  |  |   34|     25|#define HASH_CBLOCK RIPEMD160_CBLOCK
  |  |  ------------------
  |  |  |  |   34|     25|#define RIPEMD160_CBLOCK 64
  |  |  ------------------
  ------------------
  253|     25|        n = 0;
  254|     25|        HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |   52|     25|#define HASH_BLOCK_DATA_ORDER ripemd160_block_data_order
  ------------------
  255|     25|    }
  256|       |    /* Add zero padding - but leave enough room for L */
  257|     67|    memset(p + n, 0, HASH_CBLOCK - 8 - n);
  ------------------
  |  |   34|     67|#define HASH_CBLOCK RIPEMD160_CBLOCK
  |  |  ------------------
  |  |  |  |   34|     67|#define RIPEMD160_CBLOCK 64
  |  |  ------------------
  ------------------
  258|       |
  259|       |    /* Add the 64 bit L value to the end of the buffer */
  260|     67|    p += HASH_CBLOCK - 8;
  ------------------
  |  |   34|     67|#define HASH_CBLOCK RIPEMD160_CBLOCK
  |  |  ------------------
  |  |  |  |   34|     67|#define RIPEMD160_CBLOCK 64
  |  |  ------------------
  ------------------
  261|       |#if defined(DATA_ORDER_IS_BIG_ENDIAN)
  262|       |    (void)HOST_l2c(c->Nh, p);
  263|       |    (void)HOST_l2c(c->Nl, p);
  264|       |#elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)
  265|     67|    (void)HOST_l2c(c->Nl, p);
  ------------------
  |  |  145|     67|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  146|     67|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  147|     67|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  148|     67|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  149|     67|    l)
  ------------------
  266|     67|    (void)HOST_l2c(c->Nh, p);
  ------------------
  |  |  145|     67|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  146|     67|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  147|     67|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  148|     67|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  149|     67|    l)
  ------------------
  267|     67|#endif
  268|     67|    p -= HASH_CBLOCK;
  ------------------
  |  |   34|     67|#define HASH_CBLOCK RIPEMD160_CBLOCK
  |  |  ------------------
  |  |  |  |   34|     67|#define RIPEMD160_CBLOCK 64
  |  |  ------------------
  ------------------
  269|       |    /* Process the final padded chunk */
  270|     67|    HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |   52|     67|#define HASH_BLOCK_DATA_ORDER ripemd160_block_data_order
  ------------------
  271|     67|    c->num = 0;
  272|     67|    OPENSSL_cleanse(p, HASH_CBLOCK);
  ------------------
  |  |   34|     67|#define HASH_CBLOCK RIPEMD160_CBLOCK
  |  |  ------------------
  |  |  |  |   34|     67|#define RIPEMD160_CBLOCK 64
  |  |  ------------------
  ------------------
  273|       |
  274|       |#ifndef HASH_MAKE_STRING
  275|       |#error "HASH_MAKE_STRING must be defined!"
  276|       |#else
  277|     67|    HASH_MAKE_STRING(c, md);
  ------------------
  |  |   39|     67|    do {                         \
  |  |   40|     67|        unsigned long ll;        \
  |  |   41|     67|        ll = (c)->A;             \
  |  |   42|     67|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  145|     67|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  |  |  146|     67|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  |  |  147|     67|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  |  |  148|     67|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  |  |  149|     67|    l)
  |  |  ------------------
  |  |   43|     67|        ll = (c)->B;             \
  |  |   44|     67|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  145|     67|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  |  |  146|     67|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  |  |  147|     67|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  |  |  148|     67|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  |  |  149|     67|    l)
  |  |  ------------------
  |  |   45|     67|        ll = (c)->C;             \
  |  |   46|     67|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  145|     67|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  |  |  146|     67|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  |  |  147|     67|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  |  |  148|     67|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  |  |  149|     67|    l)
  |  |  ------------------
  |  |   47|     67|        ll = (c)->D;             \
  |  |   48|     67|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  145|     67|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  |  |  146|     67|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  |  |  147|     67|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  |  |  148|     67|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  |  |  149|     67|    l)
  |  |  ------------------
  |  |   49|     67|        ll = (c)->E;             \
  |  |   50|     67|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  145|     67|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  |  |  146|     67|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  |  |  147|     67|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  |  |  148|     67|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  |  |  149|     67|    l)
  |  |  ------------------
  |  |   51|     67|    } while (0)
  |  |  ------------------
  |  |  |  Branch (51:14): [Folded, False: 67]
  |  |  ------------------
  ------------------
  278|     67|#endif
  279|       |
  280|     67|    return 1;
  281|     67|}
SHA1_Update_thunk:
  163|    226|{
  164|    226|#ifdef HASH_UPDATE_THUNK
  165|    226|    HASH_CTX *c = (HASH_CTX *)cp;
  ------------------
  |  |   23|    226|#define HASH_CTX SHA_CTX
  ------------------
  166|    226|#endif
  167|    226|    const unsigned char *data = data_;
  168|    226|    unsigned char *p;
  169|    226|    HASH_LONG l;
  ------------------
  |  |   22|    226|#define HASH_LONG SHA_LONG
  ------------------
  170|    226|    size_t n;
  171|       |
  172|    226|    if (ossl_unlikely(len == 0))
  ------------------
  |  |   23|    226|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 226]
  |  |  ------------------
  ------------------
  173|      0|        return 1;
  174|       |
  175|    226|    l = (c->Nl + (((HASH_LONG)len) << 3)) & 0xffffffffUL;
  176|    226|    if (ossl_unlikely(l < c->Nl)) /* overflow */
  ------------------
  |  |   23|    226|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 226]
  |  |  ------------------
  ------------------
  177|      0|        c->Nh++;
  178|    226|    c->Nh += (HASH_LONG)(len >> 29); /* might cause compiler warning on
  179|       |                                      * 16-bit */
  180|    226|    c->Nl = l;
  181|       |
  182|    226|    n = c->num;
  183|    226|    if (ossl_likely(n != 0)) {
  ------------------
  |  |   22|    226|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (22:24): [True: 0, False: 226]
  |  |  ------------------
  ------------------
  184|       |        /* Gets here if we already have buffered input data */
  185|      0|        p = (unsigned char *)c->data;
  186|       |
  187|      0|        if (len >= HASH_CBLOCK || len + n >= HASH_CBLOCK) {
  ------------------
  |  |   24|      0|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|      0|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|      0|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      if (len >= HASH_CBLOCK || len + n >= HASH_CBLOCK) {
  ------------------
  |  |   24|      0|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|      0|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|      0|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (187:13): [True: 0, False: 0]
  |  Branch (187:35): [True: 0, False: 0]
  ------------------
  188|       |            /*
  189|       |             * If there is enough input to fill the buffer then fill the
  190|       |             * buffer and process a single chunk.
  191|       |             */
  192|      0|            memcpy(p + n, data, HASH_CBLOCK - n);
  ------------------
  |  |   24|      0|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|      0|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|      0|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  193|      0|            HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |   45|      0|#define HASH_BLOCK_DATA_ORDER sha1_block_data_order
  ------------------
  194|      0|            n = HASH_CBLOCK - n;
  ------------------
  |  |   24|      0|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|      0|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|      0|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  195|      0|            data += n;
  196|      0|            len -= n;
  197|      0|            c->num = 0;
  198|       |            /*
  199|       |             * We use memset rather than OPENSSL_cleanse() here deliberately.
  200|       |             * Using OPENSSL_cleanse() here could be a performance issue. It
  201|       |             * will get properly cleansed on finalisation so this isn't a
  202|       |             * security problem.
  203|       |             */
  204|      0|            memset(p, 0, HASH_CBLOCK); /* keep it zeroed */
  ------------------
  |  |   24|      0|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|      0|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|      0|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  205|      0|        } else {
  206|       |            /* Otherwise just keep filling the buffer */
  207|      0|            memcpy(p + n, data, len);
  208|      0|            c->num += (unsigned int)len;
  209|      0|            return 1;
  210|      0|        }
  211|      0|    }
  212|       |
  213|    226|    n = len / HASH_CBLOCK; /* Get number of input chunks (e.g. multiple of 512 bits for SHA256) */
  ------------------
  |  |   24|    226|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|    226|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|    226|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  214|    226|    if (n > 0) {
  ------------------
  |  Branch (214:9): [True: 226, False: 0]
  ------------------
  215|       |        /* Process chunks */
  216|    226|        HASH_BLOCK_DATA_ORDER(c, data, n);
  ------------------
  |  |   45|    226|#define HASH_BLOCK_DATA_ORDER sha1_block_data_order
  ------------------
  217|    226|        n *= HASH_CBLOCK;
  ------------------
  |  |   24|    226|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|    226|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|    226|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  218|    226|        data += n;
  219|    226|        len -= n;
  220|    226|    }
  221|       |    /* Buffer any left over data */
  222|    226|    if (len != 0) {
  ------------------
  |  Branch (222:9): [True: 78, False: 148]
  ------------------
  223|     78|        p = (unsigned char *)c->data;
  224|     78|        c->num = (unsigned int)len;
  225|     78|        memcpy(p, data, len);
  226|     78|    }
  227|    226|    return 1;
  228|    226|}
SHA1_Final:
  236|    113|{
  237|    113|    unsigned char *p = (unsigned char *)c->data;
  238|    113|    size_t n = c->num;
  239|       |
  240|       |    /*
  241|       |     * Pad the input by adding a 1 bit + K zero bits + input length (L)
  242|       |     * as a 64 bit value. K must align the data to a chunk boundary.
  243|       |     */
  244|    113|    p[n] = 0x80; /* there is always room for one */
  245|    113|    n++;
  246|       |
  247|    113|    if (n > (HASH_CBLOCK - 8)) {
  ------------------
  |  |   24|    113|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|    113|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|    113|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (247:9): [True: 30, False: 83]
  ------------------
  248|       |        /*
  249|       |         * If there is not enough room in the buffer to add L, then fill the
  250|       |         * current buffer with zeros, and process the chunk
  251|       |         */
  252|     30|        memset(p + n, 0, HASH_CBLOCK - n);
  ------------------
  |  |   24|     30|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|     30|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|     30|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  253|     30|        n = 0;
  254|     30|        HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |   45|     30|#define HASH_BLOCK_DATA_ORDER sha1_block_data_order
  ------------------
  255|     30|    }
  256|       |    /* Add zero padding - but leave enough room for L */
  257|    113|    memset(p + n, 0, HASH_CBLOCK - 8 - n);
  ------------------
  |  |   24|    113|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|    113|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|    113|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  258|       |
  259|       |    /* Add the 64 bit L value to the end of the buffer */
  260|    113|    p += HASH_CBLOCK - 8;
  ------------------
  |  |   24|    113|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|    113|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|    113|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  261|    113|#if defined(DATA_ORDER_IS_BIG_ENDIAN)
  262|    113|    (void)HOST_l2c(c->Nh, p);
  ------------------
  |  |  133|    113|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  134|    113|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  135|    113|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  136|    113|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  137|    113|    l)
  ------------------
  263|    113|    (void)HOST_l2c(c->Nl, p);
  ------------------
  |  |  133|    113|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  134|    113|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  135|    113|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  136|    113|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  137|    113|    l)
  ------------------
  264|       |#elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)
  265|       |    (void)HOST_l2c(c->Nl, p);
  266|       |    (void)HOST_l2c(c->Nh, p);
  267|       |#endif
  268|    113|    p -= HASH_CBLOCK;
  ------------------
  |  |   24|    113|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|    113|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|    113|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  269|       |    /* Process the final padded chunk */
  270|    113|    HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |   45|    113|#define HASH_BLOCK_DATA_ORDER sha1_block_data_order
  ------------------
  271|    113|    c->num = 0;
  272|    113|    OPENSSL_cleanse(p, HASH_CBLOCK);
  ------------------
  |  |   24|    113|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|    113|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|    113|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  273|       |
  274|       |#ifndef HASH_MAKE_STRING
  275|       |#error "HASH_MAKE_STRING must be defined!"
  276|       |#else
  277|    113|    HASH_MAKE_STRING(c, md);
  ------------------
  |  |   26|    113|    do {                         \
  |  |   27|    113|        unsigned long ll;        \
  |  |   28|    113|        ll = (c)->h0;            \
  |  |   29|    113|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  133|    113|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  |  |  134|    113|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  |  |  135|    113|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  |  |  136|    113|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  |  |  137|    113|    l)
  |  |  ------------------
  |  |   30|    113|        ll = (c)->h1;            \
  |  |   31|    113|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  133|    113|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  |  |  134|    113|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  |  |  135|    113|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  |  |  136|    113|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  |  |  137|    113|    l)
  |  |  ------------------
  |  |   32|    113|        ll = (c)->h2;            \
  |  |   33|    113|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  133|    113|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  |  |  134|    113|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  |  |  135|    113|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  |  |  136|    113|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  |  |  137|    113|    l)
  |  |  ------------------
  |  |   34|    113|        ll = (c)->h3;            \
  |  |   35|    113|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  133|    113|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  |  |  134|    113|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  |  |  135|    113|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  |  |  136|    113|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  |  |  137|    113|    l)
  |  |  ------------------
  |  |   36|    113|        ll = (c)->h4;            \
  |  |   37|    113|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  133|    113|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  |  |  134|    113|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  |  |  135|    113|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  |  |  136|    113|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  |  |  137|    113|    l)
  |  |  ------------------
  |  |   38|    113|    } while (0)
  |  |  ------------------
  |  |  |  Branch (38:14): [Folded, False: 113]
  |  |  ------------------
  ------------------
  278|    113|#endif
  279|       |
  280|    113|    return 1;
  281|    113|}
SHA256_Update_thunk:
  163|  10.7k|{
  164|  10.7k|#ifdef HASH_UPDATE_THUNK
  165|  10.7k|    HASH_CTX *c = (HASH_CTX *)cp;
  ------------------
  |  |   77|  10.7k|#define HASH_CTX SHA256_CTX
  ------------------
  166|  10.7k|#endif
  167|  10.7k|    const unsigned char *data = data_;
  168|  10.7k|    unsigned char *p;
  169|  10.7k|    HASH_LONG l;
  ------------------
  |  |   76|  10.7k|#define HASH_LONG SHA_LONG
  ------------------
  170|  10.7k|    size_t n;
  171|       |
  172|  10.7k|    if (ossl_unlikely(len == 0))
  ------------------
  |  |   23|  10.7k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 10.7k]
  |  |  ------------------
  ------------------
  173|      0|        return 1;
  174|       |
  175|  10.7k|    l = (c->Nl + (((HASH_LONG)len) << 3)) & 0xffffffffUL;
  176|  10.7k|    if (ossl_unlikely(l < c->Nl)) /* overflow */
  ------------------
  |  |   23|  10.7k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 10.7k]
  |  |  ------------------
  ------------------
  177|      0|        c->Nh++;
  178|  10.7k|    c->Nh += (HASH_LONG)(len >> 29); /* might cause compiler warning on
  179|       |                                      * 16-bit */
  180|  10.7k|    c->Nl = l;
  181|       |
  182|  10.7k|    n = c->num;
  183|  10.7k|    if (ossl_likely(n != 0)) {
  ------------------
  |  |   22|  10.7k|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (22:24): [True: 0, False: 10.7k]
  |  |  ------------------
  ------------------
  184|       |        /* Gets here if we already have buffered input data */
  185|      0|        p = (unsigned char *)c->data;
  186|       |
  187|      0|        if (len >= HASH_CBLOCK || len + n >= HASH_CBLOCK) {
  ------------------
  |  |   78|      0|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|      0|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|      0|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      if (len >= HASH_CBLOCK || len + n >= HASH_CBLOCK) {
  ------------------
  |  |   78|      0|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|      0|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|      0|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (187:13): [True: 0, False: 0]
  |  Branch (187:35): [True: 0, False: 0]
  ------------------
  188|       |            /*
  189|       |             * If there is enough input to fill the buffer then fill the
  190|       |             * buffer and process a single chunk.
  191|       |             */
  192|      0|            memcpy(p + n, data, HASH_CBLOCK - n);
  ------------------
  |  |   78|      0|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|      0|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|      0|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  193|      0|            HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |  126|      0|#define HASH_BLOCK_DATA_ORDER sha256_block_data_order
  ------------------
  194|      0|            n = HASH_CBLOCK - n;
  ------------------
  |  |   78|      0|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|      0|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|      0|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  195|      0|            data += n;
  196|      0|            len -= n;
  197|      0|            c->num = 0;
  198|       |            /*
  199|       |             * We use memset rather than OPENSSL_cleanse() here deliberately.
  200|       |             * Using OPENSSL_cleanse() here could be a performance issue. It
  201|       |             * will get properly cleansed on finalisation so this isn't a
  202|       |             * security problem.
  203|       |             */
  204|      0|            memset(p, 0, HASH_CBLOCK); /* keep it zeroed */
  ------------------
  |  |   78|      0|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|      0|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|      0|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  205|      0|        } else {
  206|       |            /* Otherwise just keep filling the buffer */
  207|      0|            memcpy(p + n, data, len);
  208|      0|            c->num += (unsigned int)len;
  209|      0|            return 1;
  210|      0|        }
  211|      0|    }
  212|       |
  213|  10.7k|    n = len / HASH_CBLOCK; /* Get number of input chunks (e.g. multiple of 512 bits for SHA256) */
  ------------------
  |  |   78|  10.7k|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|  10.7k|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|  10.7k|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  214|  10.7k|    if (n > 0) {
  ------------------
  |  Branch (214:9): [True: 10.7k, False: 0]
  ------------------
  215|       |        /* Process chunks */
  216|  10.7k|        HASH_BLOCK_DATA_ORDER(c, data, n);
  ------------------
  |  |  126|  10.7k|#define HASH_BLOCK_DATA_ORDER sha256_block_data_order
  ------------------
  217|  10.7k|        n *= HASH_CBLOCK;
  ------------------
  |  |   78|  10.7k|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|  10.7k|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|  10.7k|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  218|  10.7k|        data += n;
  219|  10.7k|        len -= n;
  220|  10.7k|    }
  221|       |    /* Buffer any left over data */
  222|  10.7k|    if (len != 0) {
  ------------------
  |  Branch (222:9): [True: 116, False: 10.6k]
  ------------------
  223|    116|        p = (unsigned char *)c->data;
  224|    116|        c->num = (unsigned int)len;
  225|    116|        memcpy(p, data, len);
  226|    116|    }
  227|  10.7k|    return 1;
  228|  10.7k|}
SHA256_Final:
  236|  5.38k|{
  237|  5.38k|    unsigned char *p = (unsigned char *)c->data;
  238|  5.38k|    size_t n = c->num;
  239|       |
  240|       |    /*
  241|       |     * Pad the input by adding a 1 bit + K zero bits + input length (L)
  242|       |     * as a 64 bit value. K must align the data to a chunk boundary.
  243|       |     */
  244|  5.38k|    p[n] = 0x80; /* there is always room for one */
  245|  5.38k|    n++;
  246|       |
  247|  5.38k|    if (n > (HASH_CBLOCK - 8)) {
  ------------------
  |  |   78|  5.38k|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|  5.38k|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|  5.38k|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (247:9): [True: 25, False: 5.35k]
  ------------------
  248|       |        /*
  249|       |         * If there is not enough room in the buffer to add L, then fill the
  250|       |         * current buffer with zeros, and process the chunk
  251|       |         */
  252|     25|        memset(p + n, 0, HASH_CBLOCK - n);
  ------------------
  |  |   78|     25|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|     25|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|     25|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  253|     25|        n = 0;
  254|     25|        HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |  126|     25|#define HASH_BLOCK_DATA_ORDER sha256_block_data_order
  ------------------
  255|     25|    }
  256|       |    /* Add zero padding - but leave enough room for L */
  257|  5.38k|    memset(p + n, 0, HASH_CBLOCK - 8 - n);
  ------------------
  |  |   78|  5.38k|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|  5.38k|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|  5.38k|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  258|       |
  259|       |    /* Add the 64 bit L value to the end of the buffer */
  260|  5.38k|    p += HASH_CBLOCK - 8;
  ------------------
  |  |   78|  5.38k|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|  5.38k|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|  5.38k|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  261|  5.38k|#if defined(DATA_ORDER_IS_BIG_ENDIAN)
  262|  5.38k|    (void)HOST_l2c(c->Nh, p);
  ------------------
  |  |  133|  5.38k|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  134|  5.38k|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  135|  5.38k|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  136|  5.38k|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  137|  5.38k|    l)
  ------------------
  263|  5.38k|    (void)HOST_l2c(c->Nl, p);
  ------------------
  |  |  133|  5.38k|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  134|  5.38k|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  135|  5.38k|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  136|  5.38k|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  137|  5.38k|    l)
  ------------------
  264|       |#elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)
  265|       |    (void)HOST_l2c(c->Nl, p);
  266|       |    (void)HOST_l2c(c->Nh, p);
  267|       |#endif
  268|  5.38k|    p -= HASH_CBLOCK;
  ------------------
  |  |   78|  5.38k|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|  5.38k|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|  5.38k|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  269|       |    /* Process the final padded chunk */
  270|  5.38k|    HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |  126|  5.38k|#define HASH_BLOCK_DATA_ORDER sha256_block_data_order
  ------------------
  271|  5.38k|    c->num = 0;
  272|  5.38k|    OPENSSL_cleanse(p, HASH_CBLOCK);
  ------------------
  |  |   78|  5.38k|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|  5.38k|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|  5.38k|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  273|       |
  274|       |#ifndef HASH_MAKE_STRING
  275|       |#error "HASH_MAKE_STRING must be defined!"
  276|       |#else
  277|  5.38k|    HASH_MAKE_STRING(c, md);
  ------------------
  |  |   89|  5.38k|    do {                                                            \
  |  |   90|  5.38k|        unsigned long ll;                                           \
  |  |   91|  5.38k|        unsigned int nn;                                            \
  |  |   92|  5.38k|        switch ((c)->md_len) {                                      \
  |  |   93|      1|        case SHA256_192_DIGEST_LENGTH:                              \
  |  |  ------------------
  |  |  |  |   85|      1|#define SHA256_192_DIGEST_LENGTH 24
  |  |  ------------------
  |  |  |  Branch (93:9): [True: 1, False: 5.37k]
  |  |  ------------------
  |  |   94|      7|            for (nn = 0; nn < SHA256_192_DIGEST_LENGTH / 4; nn++) { \
  |  |  ------------------
  |  |  |  |   85|      7|#define SHA256_192_DIGEST_LENGTH 24
  |  |  ------------------
  |  |  |  Branch (94:26): [True: 6, False: 1]
  |  |  ------------------
  |  |   95|      6|                ll = (c)->h[nn];                                    \
  |  |   96|      6|                (void)HOST_l2c(ll, (s));                            \
  |  |  ------------------
  |  |  |  |  133|      6|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  |  |  134|      6|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  |  |  135|      6|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  |  |  136|      6|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  |  |  137|      6|    l)
  |  |  ------------------
  |  |   97|      6|            }                                                       \
  |  |   98|      1|            break;                                                  \
  |  |   99|     55|        case SHA224_DIGEST_LENGTH:                                  \
  |  |  ------------------
  |  |  |  |   86|     55|#define SHA224_DIGEST_LENGTH 28
  |  |  ------------------
  |  |  |  Branch (99:9): [True: 55, False: 5.32k]
  |  |  ------------------
  |  |  100|    440|            for (nn = 0; nn < SHA224_DIGEST_LENGTH / 4; nn++) {     \
  |  |  ------------------
  |  |  |  |   86|    440|#define SHA224_DIGEST_LENGTH 28
  |  |  ------------------
  |  |  |  Branch (100:26): [True: 385, False: 55]
  |  |  ------------------
  |  |  101|    385|                ll = (c)->h[nn];                                    \
  |  |  102|    385|                (void)HOST_l2c(ll, (s));                            \
  |  |  ------------------
  |  |  |  |  133|    385|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  |  |  134|    385|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  |  |  135|    385|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  |  |  136|    385|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  |  |  137|    385|    l)
  |  |  ------------------
  |  |  103|    385|            }                                                       \
  |  |  104|     55|            break;                                                  \
  |  |  105|  5.32k|        case SHA256_DIGEST_LENGTH:                                  \
  |  |  ------------------
  |  |  |  |   87|  5.32k|#define SHA256_DIGEST_LENGTH 32
  |  |  ------------------
  |  |  |  Branch (105:9): [True: 5.32k, False: 56]
  |  |  ------------------
  |  |  106|  47.9k|            for (nn = 0; nn < SHA256_DIGEST_LENGTH / 4; nn++) {     \
  |  |  ------------------
  |  |  |  |   87|  47.9k|#define SHA256_DIGEST_LENGTH 32
  |  |  ------------------
  |  |  |  Branch (106:26): [True: 42.5k, False: 5.32k]
  |  |  ------------------
  |  |  107|  42.5k|                ll = (c)->h[nn];                                    \
  |  |  108|  42.5k|                (void)HOST_l2c(ll, (s));                            \
  |  |  ------------------
  |  |  |  |  133|  42.5k|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  |  |  134|  42.5k|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  |  |  135|  42.5k|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  |  |  136|  42.5k|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  |  |  137|  42.5k|    l)
  |  |  ------------------
  |  |  109|  42.5k|            }                                                       \
  |  |  110|  5.32k|            break;                                                  \
  |  |  111|      0|        default:                                                    \
  |  |  ------------------
  |  |  |  Branch (111:9): [True: 0, False: 5.38k]
  |  |  ------------------
  |  |  112|      0|            if ((c)->md_len > SHA256_DIGEST_LENGTH)                 \
  |  |  ------------------
  |  |  |  |   87|      0|#define SHA256_DIGEST_LENGTH 32
  |  |  ------------------
  |  |  |  Branch (112:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  113|      0|                return 0;                                           \
  |  |  114|      0|            for (nn = 0; nn < (c)->md_len / 4; nn++) {              \
  |  |  ------------------
  |  |  |  Branch (114:26): [True: 0, False: 0]
  |  |  ------------------
  |  |  115|      0|                ll = (c)->h[nn];                                    \
  |  |  116|      0|                (void)HOST_l2c(ll, (s));                            \
  |  |  ------------------
  |  |  |  |  133|      0|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  |  |  134|      0|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  |  |  135|      0|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  |  |  136|      0|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  |  |  137|      0|    l)
  |  |  ------------------
  |  |  117|      0|            }                                                       \
  |  |  118|      0|            break;                                                  \
  |  |  119|  5.38k|        }                                                           \
  |  |  120|  5.38k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (120:14): [Folded, False: 5.38k]
  |  |  ------------------
  ------------------
  278|  5.38k|#endif
  279|       |
  280|  5.38k|    return 1;
  281|  5.38k|}
ossl_sm3_update:
  163|    184|{
  164|       |#ifdef HASH_UPDATE_THUNK
  165|       |    HASH_CTX *c = (HASH_CTX *)cp;
  166|       |#endif
  167|    184|    const unsigned char *data = data_;
  168|    184|    unsigned char *p;
  169|    184|    HASH_LONG l;
  ------------------
  |  |   21|    184|#define HASH_LONG SM3_WORD
  ------------------
  170|    184|    size_t n;
  171|       |
  172|    184|    if (ossl_unlikely(len == 0))
  ------------------
  |  |   23|    184|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 184]
  |  |  ------------------
  ------------------
  173|      0|        return 1;
  174|       |
  175|    184|    l = (c->Nl + (((HASH_LONG)len) << 3)) & 0xffffffffUL;
  176|    184|    if (ossl_unlikely(l < c->Nl)) /* overflow */
  ------------------
  |  |   23|    184|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 184]
  |  |  ------------------
  ------------------
  177|      0|        c->Nh++;
  178|    184|    c->Nh += (HASH_LONG)(len >> 29); /* might cause compiler warning on
  179|       |                                      * 16-bit */
  180|    184|    c->Nl = l;
  181|       |
  182|    184|    n = c->num;
  183|    184|    if (ossl_likely(n != 0)) {
  ------------------
  |  |   22|    184|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (22:24): [True: 0, False: 184]
  |  |  ------------------
  ------------------
  184|       |        /* Gets here if we already have buffered input data */
  185|      0|        p = (unsigned char *)c->data;
  186|       |
  187|      0|        if (len >= HASH_CBLOCK || len + n >= HASH_CBLOCK) {
  ------------------
  |  |   23|      0|#define HASH_CBLOCK SM3_CBLOCK
  |  |  ------------------
  |  |  |  |   27|      0|#define SM3_CBLOCK 64
  |  |  ------------------
  ------------------
                      if (len >= HASH_CBLOCK || len + n >= HASH_CBLOCK) {
  ------------------
  |  |   23|      0|#define HASH_CBLOCK SM3_CBLOCK
  |  |  ------------------
  |  |  |  |   27|      0|#define SM3_CBLOCK 64
  |  |  ------------------
  ------------------
  |  Branch (187:13): [True: 0, False: 0]
  |  Branch (187:35): [True: 0, False: 0]
  ------------------
  188|       |            /*
  189|       |             * If there is enough input to fill the buffer then fill the
  190|       |             * buffer and process a single chunk.
  191|       |             */
  192|      0|            memcpy(p + n, data, HASH_CBLOCK - n);
  ------------------
  |  |   23|      0|#define HASH_CBLOCK SM3_CBLOCK
  |  |  ------------------
  |  |  |  |   27|      0|#define SM3_CBLOCK 64
  |  |  ------------------
  ------------------
  193|      0|            HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |   69|      0|#define HASH_BLOCK_DATA_ORDER ossl_sm3_block_data_order
  ------------------
  194|      0|            n = HASH_CBLOCK - n;
  ------------------
  |  |   23|      0|#define HASH_CBLOCK SM3_CBLOCK
  |  |  ------------------
  |  |  |  |   27|      0|#define SM3_CBLOCK 64
  |  |  ------------------
  ------------------
  195|      0|            data += n;
  196|      0|            len -= n;
  197|      0|            c->num = 0;
  198|       |            /*
  199|       |             * We use memset rather than OPENSSL_cleanse() here deliberately.
  200|       |             * Using OPENSSL_cleanse() here could be a performance issue. It
  201|       |             * will get properly cleansed on finalisation so this isn't a
  202|       |             * security problem.
  203|       |             */
  204|      0|            memset(p, 0, HASH_CBLOCK); /* keep it zeroed */
  ------------------
  |  |   23|      0|#define HASH_CBLOCK SM3_CBLOCK
  |  |  ------------------
  |  |  |  |   27|      0|#define SM3_CBLOCK 64
  |  |  ------------------
  ------------------
  205|      0|        } else {
  206|       |            /* Otherwise just keep filling the buffer */
  207|      0|            memcpy(p + n, data, len);
  208|      0|            c->num += (unsigned int)len;
  209|      0|            return 1;
  210|      0|        }
  211|      0|    }
  212|       |
  213|    184|    n = len / HASH_CBLOCK; /* Get number of input chunks (e.g. multiple of 512 bits for SHA256) */
  ------------------
  |  |   23|    184|#define HASH_CBLOCK SM3_CBLOCK
  |  |  ------------------
  |  |  |  |   27|    184|#define SM3_CBLOCK 64
  |  |  ------------------
  ------------------
  214|    184|    if (n > 0) {
  ------------------
  |  Branch (214:9): [True: 184, False: 0]
  ------------------
  215|       |        /* Process chunks */
  216|    184|        HASH_BLOCK_DATA_ORDER(c, data, n);
  ------------------
  |  |   69|    184|#define HASH_BLOCK_DATA_ORDER ossl_sm3_block_data_order
  ------------------
  217|    184|        n *= HASH_CBLOCK;
  ------------------
  |  |   23|    184|#define HASH_CBLOCK SM3_CBLOCK
  |  |  ------------------
  |  |  |  |   27|    184|#define SM3_CBLOCK 64
  |  |  ------------------
  ------------------
  218|    184|        data += n;
  219|    184|        len -= n;
  220|    184|    }
  221|       |    /* Buffer any left over data */
  222|    184|    if (len != 0) {
  ------------------
  |  Branch (222:9): [True: 72, False: 112]
  ------------------
  223|     72|        p = (unsigned char *)c->data;
  224|     72|        c->num = (unsigned int)len;
  225|     72|        memcpy(p, data, len);
  226|     72|    }
  227|    184|    return 1;
  228|    184|}
ossl_sm3_final:
  236|     92|{
  237|     92|    unsigned char *p = (unsigned char *)c->data;
  238|     92|    size_t n = c->num;
  239|       |
  240|       |    /*
  241|       |     * Pad the input by adding a 1 bit + K zero bits + input length (L)
  242|       |     * as a 64 bit value. K must align the data to a chunk boundary.
  243|       |     */
  244|     92|    p[n] = 0x80; /* there is always room for one */
  245|     92|    n++;
  246|       |
  247|     92|    if (n > (HASH_CBLOCK - 8)) {
  ------------------
  |  |   23|     92|#define HASH_CBLOCK SM3_CBLOCK
  |  |  ------------------
  |  |  |  |   27|     92|#define SM3_CBLOCK 64
  |  |  ------------------
  ------------------
  |  Branch (247:9): [True: 38, False: 54]
  ------------------
  248|       |        /*
  249|       |         * If there is not enough room in the buffer to add L, then fill the
  250|       |         * current buffer with zeros, and process the chunk
  251|       |         */
  252|     38|        memset(p + n, 0, HASH_CBLOCK - n);
  ------------------
  |  |   23|     38|#define HASH_CBLOCK SM3_CBLOCK
  |  |  ------------------
  |  |  |  |   27|     38|#define SM3_CBLOCK 64
  |  |  ------------------
  ------------------
  253|     38|        n = 0;
  254|     38|        HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |   69|     38|#define HASH_BLOCK_DATA_ORDER ossl_sm3_block_data_order
  ------------------
  255|     38|    }
  256|       |    /* Add zero padding - but leave enough room for L */
  257|     92|    memset(p + n, 0, HASH_CBLOCK - 8 - n);
  ------------------
  |  |   23|     92|#define HASH_CBLOCK SM3_CBLOCK
  |  |  ------------------
  |  |  |  |   27|     92|#define SM3_CBLOCK 64
  |  |  ------------------
  ------------------
  258|       |
  259|       |    /* Add the 64 bit L value to the end of the buffer */
  260|     92|    p += HASH_CBLOCK - 8;
  ------------------
  |  |   23|     92|#define HASH_CBLOCK SM3_CBLOCK
  |  |  ------------------
  |  |  |  |   27|     92|#define SM3_CBLOCK 64
  |  |  ------------------
  ------------------
  261|     92|#if defined(DATA_ORDER_IS_BIG_ENDIAN)
  262|     92|    (void)HOST_l2c(c->Nh, p);
  ------------------
  |  |  133|     92|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  134|     92|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  135|     92|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  136|     92|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  137|     92|    l)
  ------------------
  263|     92|    (void)HOST_l2c(c->Nl, p);
  ------------------
  |  |  133|     92|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  134|     92|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  135|     92|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  136|     92|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  137|     92|    l)
  ------------------
  264|       |#elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)
  265|       |    (void)HOST_l2c(c->Nl, p);
  266|       |    (void)HOST_l2c(c->Nh, p);
  267|       |#endif
  268|     92|    p -= HASH_CBLOCK;
  ------------------
  |  |   23|     92|#define HASH_CBLOCK SM3_CBLOCK
  |  |  ------------------
  |  |  |  |   27|     92|#define SM3_CBLOCK 64
  |  |  ------------------
  ------------------
  269|       |    /* Process the final padded chunk */
  270|     92|    HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |   69|     92|#define HASH_BLOCK_DATA_ORDER ossl_sm3_block_data_order
  ------------------
  271|     92|    c->num = 0;
  272|     92|    OPENSSL_cleanse(p, HASH_CBLOCK);
  ------------------
  |  |   23|     92|#define HASH_CBLOCK SM3_CBLOCK
  |  |  ------------------
  |  |  |  |   27|     92|#define SM3_CBLOCK 64
  |  |  ------------------
  ------------------
  273|       |
  274|       |#ifndef HASH_MAKE_STRING
  275|       |#error "HASH_MAKE_STRING must be defined!"
  276|       |#else
  277|     92|    HASH_MAKE_STRING(c, md);
  ------------------
  |  |   28|     92|    do {                         \
  |  |   29|     92|        unsigned long ll;        \
  |  |   30|     92|        ll = (c)->A;             \
  |  |   31|     92|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  133|     92|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  |  |  134|     92|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  |  |  135|     92|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  |  |  136|     92|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  |  |  137|     92|    l)
  |  |  ------------------
  |  |   32|     92|        ll = (c)->B;             \
  |  |   33|     92|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  133|     92|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  |  |  134|     92|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  |  |  135|     92|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  |  |  136|     92|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  |  |  137|     92|    l)
  |  |  ------------------
  |  |   34|     92|        ll = (c)->C;             \
  |  |   35|     92|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  133|     92|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  |  |  134|     92|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  |  |  135|     92|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  |  |  136|     92|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  |  |  137|     92|    l)
  |  |  ------------------
  |  |   36|     92|        ll = (c)->D;             \
  |  |   37|     92|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  133|     92|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  |  |  134|     92|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  |  |  135|     92|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  |  |  136|     92|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  |  |  137|     92|    l)
  |  |  ------------------
  |  |   38|     92|        ll = (c)->E;             \
  |  |   39|     92|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  133|     92|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  |  |  134|     92|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  |  |  135|     92|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  |  |  136|     92|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  |  |  137|     92|    l)
  |  |  ------------------
  |  |   40|     92|        ll = (c)->F;             \
  |  |   41|     92|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  133|     92|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  |  |  134|     92|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  |  |  135|     92|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  |  |  136|     92|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  |  |  137|     92|    l)
  |  |  ------------------
  |  |   42|     92|        ll = (c)->G;             \
  |  |   43|     92|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  133|     92|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  |  |  134|     92|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  |  |  135|     92|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  |  |  136|     92|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  |  |  137|     92|    l)
  |  |  ------------------
  |  |   44|     92|        ll = (c)->H;             \
  |  |   45|     92|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  133|     92|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  |  |  134|     92|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  |  |  135|     92|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  |  |  136|     92|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  |  |  137|     92|    l)
  |  |  ------------------
  |  |   46|     92|    } while (0)
  |  |  ------------------
  |  |  |  Branch (46:14): [Folded, False: 92]
  |  |  ------------------
  ------------------
  278|     92|#endif
  279|       |
  280|     92|    return 1;
  281|     92|}

threads_common.c:ossl_sa_CTX_TABLE_ENTRY_get:
   82|  2.01k|    {                                                                                                              \
   83|  2.01k|        return (type *)ossl_sa_get((OPENSSL_SA *)sa, n);                                                           \
   84|  2.01k|    }                                                                                                              \
threads_common.c:ossl_sa_CTX_TABLE_ENTRY_new:
   28|      1|    {                                                                                                              \
   29|      1|        return (SPARSE_ARRAY_OF(type) *)ossl_sa_new();                                                             \
   30|      1|    }                                                                                                              \
threads_common.c:ossl_sa_CTX_TABLE_ENTRY_set:
   88|      4|    {                                                                                                              \
   89|      4|        return ossl_sa_set((OPENSSL_SA *)sa, n, (void *)val);                                                      \
   90|      4|    }                                                                                                              \
property.c:ossl_sa_ALGORITHM_new:
   28|     48|    {                                                                                                              \
   29|     48|        return (SPARSE_ARRAY_OF(type) *)ossl_sa_new();                                                             \
   30|     48|    }                                                                                                              \
property.c:ossl_sa_ALGORITHM_get:
   82|    289|    {                                                                                                              \
   83|    289|        return (type *)ossl_sa_get((OPENSSL_SA *)sa, n);                                                           \
   84|    289|    }                                                                                                              \
property.c:ossl_sa_ALGORITHM_set:
   88|     33|    {                                                                                                              \
   89|     33|        return ossl_sa_set((OPENSSL_SA *)sa, n, (void *)val);                                                      \
   90|     33|    }                                                                                                              \

core_namemap.c:ossl_ht_strcase:
  341|   794k|{
  342|   794k|    size_t i;
  343|       |#if defined(CHARSET_EBCDIC) && !defined(CHARSET_EBCDIC_TEST)
  344|       |    const long int case_adjust = ~0x40;
  345|       |#else
  346|   794k|    const long int case_adjust = ~0x20;
  347|   794k|#endif
  348|       |
  349|   794k|    if (src == NULL)
  ------------------
  |  Branch (349:9): [True: 0, False: 794k]
  ------------------
  350|      0|        return;
  351|       |
  352|       |    /*
  353|       |     * If we're passed a key, we're doing raw key copies
  354|       |     * so check that we don't overflow here, and truncate if
  355|       |     * we copy more space than we have available
  356|       |     */
  357|   794k|    if (key != NULL && key->keysize + len > key->bufsize)
  ------------------
  |  Branch (357:9): [True: 794k, False: 0]
  |  Branch (357:24): [True: 0, False: 794k]
  ------------------
  358|      0|        len = (size_t)(key->bufsize - key->keysize);
  359|       |
  360|  5.62M|    for (i = 0; i < len && src[i] != '\0'; i++)
  ------------------
  |  Branch (360:17): [True: 4.83M, False: 794k]
  |  Branch (360:28): [True: 4.83M, False: 0]
  ------------------
  361|  4.83M|        tgt[i] = case_adjust & src[i];
  362|   794k|}

array_alloc.c:ossl_size_mul:
   88|    852|{
   89|    852|    int err = 0;
   90|    852|    *bytes = safe_mul_size_t(num, size, &err);
   91|       |
   92|    852|    if (ossl_unlikely(err != 0)) {
  ------------------
  |  |   23|    852|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 852]
  |  |  ------------------
  ------------------
   93|      0|        ossl_report_alloc_err_of(file, line);
   94|       |
   95|      0|        return false;
   96|      0|    }
   97|       |
   98|    852|    return true;
   99|    852|}

digest.c:CRYPTO_NEW_REF:
  227|     34|{
  228|     34|    refcnt->val = n;
  229|     34|    return 1;
  230|     34|}
digest.c:CRYPTO_UP_REF:
   40|     84|{
   41|       |    *ret = atomic_fetch_add_explicit(&refcnt->val, 1, memory_order_relaxed) + 1;
   42|     84|    return 1;
   43|     84|}
digest.c:CRYPTO_DOWN_REF:
   56|     34|{
   57|       |#ifdef OSSL_TSAN_BUILD
   58|       |    /*
   59|       |     * TSAN requires acq_rel as it indicates a false positive error when
   60|       |     * the object that contains the refcount is freed otherwise.
   61|       |     */
   62|       |    *ret = atomic_fetch_sub_explicit(&refcnt->val, 1, memory_order_acq_rel) - 1;
   63|       |#else
   64|     34|    *ret = atomic_fetch_sub_explicit(&refcnt->val, 1, memory_order_release) - 1;
   65|     34|    if (*ret == 0)
  ------------------
  |  Branch (65:9): [True: 0, False: 34]
  ------------------
   66|       |        atomic_thread_fence(memory_order_acquire);
   67|     34|#endif
   68|     34|    return 1;
   69|     34|}
provider_core.c:CRYPTO_UP_REF:
   40|  1.05k|{
   41|       |    *ret = atomic_fetch_add_explicit(&refcnt->val, 1, memory_order_relaxed) + 1;
   42|  1.05k|    return 1;
   43|  1.05k|}
provider_core.c:CRYPTO_NEW_REF:
  227|      4|{
  228|      4|    refcnt->val = n;
  229|      4|    return 1;
  230|      4|}
provider_core.c:CRYPTO_DOWN_REF:
   56|  1.02k|{
   57|       |#ifdef OSSL_TSAN_BUILD
   58|       |    /*
   59|       |     * TSAN requires acq_rel as it indicates a false positive error when
   60|       |     * the object that contains the refcount is freed otherwise.
   61|       |     */
   62|       |    *ret = atomic_fetch_sub_explicit(&refcnt->val, 1, memory_order_acq_rel) - 1;
   63|       |#else
   64|  1.02k|    *ret = atomic_fetch_sub_explicit(&refcnt->val, 1, memory_order_release) - 1;
   65|  1.02k|    if (*ret == 0)
  ------------------
  |  Branch (65:9): [True: 0, False: 1.02k]
  ------------------
   66|       |        atomic_thread_fence(memory_order_acquire);
   67|  1.02k|#endif
   68|  1.02k|    return 1;
   69|  1.02k|}

array_alloc.c:safe_mul_size_t:
  151|    852|    {                                                                \
  152|    852|        type r;                                                      \
  153|    852|                                                                     \
  154|    852|        if (!__builtin_mul_overflow(a, b, &r))                       \
  ------------------
  |  Branch (154:13): [True: 852, False: 0]
  ------------------
  155|    852|            return r;                                                \
  156|    852|        *err |= 1;                                                   \
  157|      0|        return a * b;                                                \
  158|    852|    }
stack.c:safe_muldiv_int:
  324|     15|    {                                                                   \
  325|     15|        int e2 = 0;                                                     \
  326|     15|        type q, r, x, y;                                                \
  327|     15|                                                                        \
  328|     15|        if (c == 0) {                                                   \
  ------------------
  |  Branch (328:13): [True: 0, False: 15]
  ------------------
  329|      0|            *err |= 1;                                                  \
  330|      0|            return a == 0 || b == 0 ? 0 : max;                          \
  ------------------
  |  Branch (330:20): [True: 0, False: 0]
  |  Branch (330:30): [True: 0, False: 0]
  ------------------
  331|      0|        }                                                               \
  332|     15|        x = safe_mul_##type_name(a, b, &e2);                            \
  333|     15|        if (!e2)                                                        \
  ------------------
  |  Branch (333:13): [True: 15, False: 0]
  ------------------
  334|     15|            return safe_div_##type_name(x, c, err);                     \
  335|     15|        if (b > a) {                                                    \
  ------------------
  |  Branch (335:13): [True: 0, False: 0]
  ------------------
  336|      0|            x = b;                                                      \
  337|      0|            b = a;                                                      \
  338|      0|            a = x;                                                      \
  339|      0|        }                                                               \
  340|      0|        q = safe_div_##type_name(a, c, err);                            \
  341|      0|        r = safe_mod_##type_name(a, c, err);                            \
  342|      0|        x = safe_mul_##type_name(r, b, err);                            \
  343|      0|        y = safe_mul_##type_name(q, b, err);                            \
  344|      0|        q = safe_div_##type_name(x, c, err);                            \
  345|      0|        return safe_add_##type_name(y, q, err);                         \
  346|     15|    }
stack.c:safe_mul_int:
  138|     15|    {                                                                \
  139|     15|        type r;                                                      \
  140|     15|                                                                     \
  141|     15|        if (!__builtin_mul_overflow(a, b, &r))                       \
  ------------------
  |  Branch (141:13): [True: 15, False: 0]
  ------------------
  142|     15|            return r;                                                \
  143|     15|        *err |= 1;                                                   \
  144|      0|        return (a < 0) ^ (b < 0) ? min : max;                        \
  ------------------
  |  Branch (144:16): [True: 0, False: 0]
  ------------------
  145|     15|    }
stack.c:safe_div_int:
  201|     15|    {                                                                \
  202|     15|        if (b == 0) {                                                \
  ------------------
  |  Branch (202:13): [True: 0, False: 15]
  ------------------
  203|      0|            *err |= 1;                                               \
  204|      0|            return a < 0 ? min : max;                                \
  ------------------
  |  Branch (204:20): [True: 0, False: 0]
  ------------------
  205|      0|        }                                                            \
  206|     15|        if (b == -1 && a == min) {                                   \
  ------------------
  |  Branch (206:13): [True: 0, False: 15]
  |  Branch (206:24): [True: 0, False: 0]
  ------------------
  207|      0|            *err |= 1;                                               \
  208|      0|            return max;                                              \
  209|      0|        }                                                            \
  210|     15|        return a / b;                                                \
  211|     15|    }

err.c:do_err_strings_init_ossl_:
   73|      1|    {                                \
   74|      1|        init##_ossl_ret_ = init();   \
   75|      1|    }                                \
context.c:default_context_do_thread_key_init_ossl_:
   73|      1|    {                                \
   74|      1|        init##_ossl_ret_ = init();   \
   75|      1|    }                                \
context.c:default_context_do_init_ossl_:
   73|      1|    {                                \
   74|      1|        init##_ossl_ret_ = init();   \
   75|      1|    }                                \
init.c:ossl_init_base_ossl_:
   73|      1|    {                                \
   74|      1|        init##_ossl_ret_ = init();   \
   75|      1|    }                                \
init.c:ossl_init_load_crypto_strings_ossl_:
   73|      1|    {                                \
   74|      1|        init##_ossl_ret_ = init();   \
   75|      1|    }                                \
init.c:ossl_init_add_all_ciphers_ossl_:
   73|      1|    {                                \
   74|      1|        init##_ossl_ret_ = init();   \
   75|      1|    }                                \
init.c:ossl_init_add_all_digests_ossl_:
   73|      1|    {                                \
   74|      1|        init##_ossl_ret_ = init();   \
   75|      1|    }                                \
initthread.c:create_global_tevent_register_ossl_:
   73|      1|    {                                \
   74|      1|        init##_ossl_ret_ = init();   \
   75|      1|    }                                \
o_names.c:o_names_init_ossl_:
   73|      1|    {                                \
   74|      1|        init##_ossl_ret_ = init();   \
   75|      1|    }                                \

sha512.c:OPENSSL_store_u64_be:
  181|  35.4k|{
  182|  35.4k|#ifdef OSSL_HTOLE64
  183|  35.4k|    uint64_t t = OSSL_HTOBE64(val);
  ------------------
  |  |   46|  35.4k|#define OSSL_HTOBE64(x) htobe64(x)
  ------------------
  184|       |
  185|  35.4k|    memcpy(out, (unsigned char *)&t, 8);
  186|  35.4k|    return out + 8;
  187|       |#else
  188|       |    *out++ = (val >> 56) & 0xff;
  189|       |    *out++ = (val >> 48) & 0xff;
  190|       |    *out++ = (val >> 40) & 0xff;
  191|       |    *out++ = (val >> 32) & 0xff;
  192|       |    *out++ = (val >> 24) & 0xff;
  193|       |    *out++ = (val >> 16) & 0xff;
  194|       |    *out++ = (val >> 8) & 0xff;
  195|       |    *out++ = (val & 0xff);
  196|       |    return out;
  197|       |#endif
  198|  35.4k|}

digest.c:OSSL_FUNC_digest_newctx:
   60|     34|    {                                                  \
   61|     34|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|     34|    }
digest.c:OSSL_FUNC_digest_init:
   60|     34|    {                                                  \
   61|     34|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|     34|    }
digest.c:OSSL_FUNC_digest_update:
   60|     34|    {                                                  \
   61|     34|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|     34|    }
digest.c:OSSL_FUNC_digest_final:
   60|     34|    {                                                  \
   61|     34|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|     34|    }
digest.c:OSSL_FUNC_digest_squeeze:
   60|      6|    {                                                  \
   61|      6|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      6|    }
digest.c:OSSL_FUNC_digest_freectx:
   60|     34|    {                                                  \
   61|     34|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|     34|    }
digest.c:OSSL_FUNC_digest_dupctx:
   60|     34|    {                                                  \
   61|     34|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|     34|    }
digest.c:OSSL_FUNC_digest_get_params:
   60|     34|    {                                                  \
   61|     34|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|     34|    }
digest.c:OSSL_FUNC_digest_set_ctx_params:
   60|     12|    {                                                  \
   61|     12|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|     12|    }
digest.c:OSSL_FUNC_digest_get_ctx_params:
   60|      9|    {                                                  \
   61|      9|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      9|    }
digest.c:OSSL_FUNC_digest_gettable_params:
   60|     34|    {                                                  \
   61|     34|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|     34|    }
digest.c:OSSL_FUNC_digest_settable_ctx_params:
   60|     12|    {                                                  \
   61|     12|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|     12|    }
digest.c:OSSL_FUNC_digest_gettable_ctx_params:
   60|      9|    {                                                  \
   61|      9|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      9|    }
digest.c:OSSL_FUNC_digest_copyctx:
   60|     31|    {                                                  \
   61|     31|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|     31|    }
digest.c:OSSL_FUNC_digest_serialize:
   60|     19|    {                                                  \
   61|     19|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|     19|    }
digest.c:OSSL_FUNC_digest_deserialize:
   60|     19|    {                                                  \
   61|     19|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|     19|    }
provider_child.c:OSSL_FUNC_core_get_libctx:
   60|      3|    {                                                  \
   61|      3|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      3|    }
provider_child.c:OSSL_FUNC_provider_register_child_cb:
   60|      1|    {                                                  \
   61|      1|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      1|    }
provider_child.c:OSSL_FUNC_provider_deregister_child_cb:
   60|      1|    {                                                  \
   61|      1|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      1|    }
provider_child.c:OSSL_FUNC_provider_name:
   60|      1|    {                                                  \
   61|      1|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      1|    }
provider_child.c:OSSL_FUNC_provider_get0_provider_ctx:
   60|      1|    {                                                  \
   61|      1|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      1|    }
provider_child.c:OSSL_FUNC_provider_get0_dispatch:
   60|      1|    {                                                  \
   61|      1|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      1|    }
provider_child.c:OSSL_FUNC_provider_up_ref:
   60|      1|    {                                                  \
   61|      1|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      1|    }
provider_child.c:OSSL_FUNC_provider_free:
   60|      1|    {                                                  \
   61|      1|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      1|    }
provider_core.c:OSSL_FUNC_provider_teardown:
   60|      4|    {                                                  \
   61|      4|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      4|    }
provider_core.c:OSSL_FUNC_provider_gettable_params:
   60|      4|    {                                                  \
   61|      4|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      4|    }
provider_core.c:OSSL_FUNC_provider_get_params:
   60|      4|    {                                                  \
   61|      4|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      4|    }
provider_core.c:OSSL_FUNC_provider_get_capabilities:
   60|      2|    {                                                  \
   61|      2|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      2|    }
provider_core.c:OSSL_FUNC_provider_query_operation:
   60|      4|    {                                                  \
   61|      4|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      4|    }
defltprov.c:OSSL_FUNC_core_get_params:
   60|      1|    {                                                  \
   61|      1|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      1|    }
defltprov.c:OSSL_FUNC_core_get_libctx:
   60|      1|    {                                                  \
   61|      1|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      1|    }
bio_prov.c:OSSL_FUNC_BIO_new_file:
   60|      1|    {                                                  \
   61|      1|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      1|    }
bio_prov.c:OSSL_FUNC_BIO_new_membuf:
   60|      1|    {                                                  \
   61|      1|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      1|    }
bio_prov.c:OSSL_FUNC_BIO_read_ex:
   60|      1|    {                                                  \
   61|      1|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      1|    }
bio_prov.c:OSSL_FUNC_BIO_write_ex:
   60|      1|    {                                                  \
   61|      1|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      1|    }
bio_prov.c:OSSL_FUNC_BIO_gets:
   60|      1|    {                                                  \
   61|      1|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      1|    }
bio_prov.c:OSSL_FUNC_BIO_puts:
   60|      1|    {                                                  \
   61|      1|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      1|    }
bio_prov.c:OSSL_FUNC_BIO_ctrl:
   60|      1|    {                                                  \
   61|      1|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      1|    }
bio_prov.c:OSSL_FUNC_BIO_up_ref:
   60|      1|    {                                                  \
   61|      1|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      1|    }
bio_prov.c:OSSL_FUNC_BIO_free:
   60|      1|    {                                                  \
   61|      1|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      1|    }
bio_prov.c:OSSL_FUNC_BIO_vprintf:
   60|      1|    {                                                  \
   61|      1|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      1|    }
provider_seeding.c:OSSL_FUNC_get_entropy:
   60|      1|    {                                                  \
   61|      1|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      1|    }
provider_seeding.c:OSSL_FUNC_get_user_entropy:
   60|      1|    {                                                  \
   61|      1|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      1|    }
provider_seeding.c:OSSL_FUNC_cleanup_entropy:
   60|      1|    {                                                  \
   61|      1|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      1|    }
provider_seeding.c:OSSL_FUNC_cleanup_user_entropy:
   60|      1|    {                                                  \
   61|      1|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      1|    }
provider_seeding.c:OSSL_FUNC_get_nonce:
   60|      1|    {                                                  \
   61|      1|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      1|    }
provider_seeding.c:OSSL_FUNC_get_user_nonce:
   60|      1|    {                                                  \
   61|      1|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      1|    }
provider_seeding.c:OSSL_FUNC_cleanup_nonce:
   60|      1|    {                                                  \
   61|      1|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      1|    }
provider_seeding.c:OSSL_FUNC_cleanup_user_nonce:
   60|      1|    {                                                  \
   61|      1|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      1|    }
bss_core.c:OSSL_FUNC_BIO_read_ex:
   60|      1|    {                                                  \
   61|      1|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      1|    }
bss_core.c:OSSL_FUNC_BIO_write_ex:
   60|      1|    {                                                  \
   61|      1|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      1|    }
bss_core.c:OSSL_FUNC_BIO_gets:
   60|      1|    {                                                  \
   61|      1|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      1|    }
bss_core.c:OSSL_FUNC_BIO_puts:
   60|      1|    {                                                  \
   61|      1|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      1|    }
bss_core.c:OSSL_FUNC_BIO_ctrl:
   60|      1|    {                                                  \
   61|      1|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      1|    }
bss_core.c:OSSL_FUNC_BIO_up_ref:
   60|      1|    {                                                  \
   61|      1|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      1|    }
bss_core.c:OSSL_FUNC_BIO_free:
   60|      1|    {                                                  \
   61|      1|        return (OSSL_FUNC_##name##_fn *)opf->function; \
   62|      1|    }

err.c:ERR_GET_LIB:
  225|  4.41k|{
  226|  4.41k|    if (ERR_SYSTEM_ERROR(errcode))
  ------------------
  |  |  222|  4.41k|#define ERR_SYSTEM_ERROR(errcode) (((errcode) & ERR_SYSTEM_FLAG) != 0)
  |  |  ------------------
  |  |  |  |  201|  4.41k|#define ERR_SYSTEM_FLAG ((unsigned int)INT_MAX + 1)
  |  |  ------------------
  |  |  |  Branch (222:35): [True: 0, False: 4.41k]
  |  |  ------------------
  ------------------
  227|      0|        return ERR_LIB_SYS;
  ------------------
  |  |   55|      0|#define ERR_LIB_SYS 2
  ------------------
  228|  4.41k|    return (errcode >> ERR_LIB_OFFSET) & ERR_LIB_MASK;
  ------------------
  |  |  209|  4.41k|#define ERR_LIB_OFFSET 23L
  ------------------
                  return (errcode >> ERR_LIB_OFFSET) & ERR_LIB_MASK;
  ------------------
  |  |  210|  4.41k|#define ERR_LIB_MASK 0xFF
  ------------------
  229|  4.41k|}
err.c:ERR_GET_REASON:
  239|     34|{
  240|     34|    if (ERR_SYSTEM_ERROR(errcode))
  ------------------
  |  |  222|     34|#define ERR_SYSTEM_ERROR(errcode) (((errcode) & ERR_SYSTEM_FLAG) != 0)
  |  |  ------------------
  |  |  |  |  201|     34|#define ERR_SYSTEM_FLAG ((unsigned int)INT_MAX + 1)
  |  |  ------------------
  |  |  |  Branch (222:35): [True: 0, False: 34]
  |  |  ------------------
  ------------------
  241|      0|        return errcode & ERR_SYSTEM_MASK;
  ------------------
  |  |  202|      0|#define ERR_SYSTEM_MASK ((unsigned int)INT_MAX)
  ------------------
  242|     34|    return errcode & ERR_REASON_MASK;
  ------------------
  |  |  213|     34|#define ERR_REASON_MASK 0X7FFFFF
  ------------------
  243|     34|}

err.c:ossl_check_ERR_STRING_DATA_lh_type:
  208|  4.38k|    {                                                                                                          \
  209|  4.38k|        return (OPENSSL_LHASH *)lh;                                                                            \
  210|  4.38k|    }                                                                                                          \
err.c:ossl_check_ERR_STRING_DATA_lh_hashfunc_type:
  218|      1|    {                                                                                                          \
  219|      1|        return (OPENSSL_LH_HASHFUNC)hfn;                                                                       \
  220|      1|    }                                                                                                          \
err.c:ossl_check_ERR_STRING_DATA_lh_compfunc_type:
  213|      1|    {                                                                                                          \
  214|      1|        return (OPENSSL_LH_COMPFUNC)cmp;                                                                       \
  215|      1|    }                                                                                                          \
err.c:lh_ERR_STRING_DATA_hash_thunk:
  172|  4.38k|    {                                                                                                          \
  173|  4.38k|        unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn;                        \
  174|  4.38k|        return hfn_conv((const type *)data);                                                                   \
  175|  4.38k|    }                                                                                                          \
err.c:lh_ERR_STRING_DATA_comp_thunk:
  177|  2.94k|    {                                                                                                          \
  178|  2.94k|        int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn;                \
  179|  2.94k|        return cfn_conv((const type *)da, (const type *)db);                                                   \
  180|  2.94k|    }                                                                                                          \
err.c:ossl_check_ERR_STRING_DATA_lh_plain_type:
  193|  4.31k|    {                                                                                                          \
  194|  4.31k|        return ptr;                                                                                            \
  195|  4.31k|    }                                                                                                          \
err.c:ossl_check_const_ERR_STRING_DATA_lh_plain_type:
  198|     68|    {                                                                                                          \
  199|     68|        return ptr;                                                                                            \
  200|     68|    }                                                                                                          \
o_names.c:lh_OBJ_NAME_new:
  334|      1|    {                                                                                                                      \
  335|      1|        return (LHASH_OF(type) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn), \
  336|      1|            lh_##type##_hfn_thunk, lh_##type##_cfn_thunk,                                                                  \
  337|      1|            lh_##type##_doall_thunk,                                                                                       \
  338|      1|            lh_##type##_doall_arg_thunk);                                                                                  \
  339|      1|    }                                                                                                                      \
o_names.c:lh_OBJ_NAME_hfn_thunk:
  260|    804|    {                                                                                                                      \
  261|    804|        unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn;                                    \
  262|    804|        return hfn_conv((const type *)data);                                                                               \
  263|    804|    }                                                                                                                      \
o_names.c:lh_OBJ_NAME_cfn_thunk:
  265|    511|    {                                                                                                                      \
  266|    511|        int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn;                            \
  267|    511|        return cfn_conv((const type *)da, (const type *)db);                                                               \
  268|    511|    }                                                                                                                      \
o_names.c:lh_OBJ_NAME_retrieve:
  291|    398|    {                                                                                                                      \
  292|    398|        return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d);                                                        \
  293|    398|    }                                                                                                                      \
o_names.c:lh_OBJ_NAME_insert:
  281|    406|    {                                                                                                                      \
  282|    406|        return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d);                                                          \
  283|    406|    }                                                                                                                      \
o_names.c:lh_OBJ_NAME_error:
  296|    233|    {                                                                                                                      \
  297|    233|        return OPENSSL_LH_error((OPENSSL_LHASH *)lh);                                                                      \
  298|    233|    }                                                                                                                      \
o_names.c:lh_OBJ_NAME_doall_OBJ_DOALL:
  371|      2|    {                                                                                       \
  372|      2|        OPENSSL_LH_doall_arg_thunk((OPENSSL_LHASH *)lh,                                     \
  373|      2|            lh_##type##_doall_##argtype##_thunk,                                            \
  374|      2|            (OPENSSL_LH_DOALL_FUNCARG)fn,                                                   \
  375|      2|            (void *)arg);                                                                   \
  376|      2|    }                                                                                       \
o_names.c:lh_OBJ_NAME_doall_OBJ_DOALL_thunk:
  363|    466|    {                                                                                       \
  364|    466|        void (*fn_conv)(cbargtype *, argtype *) = (void (*)(cbargtype *, argtype *))fn;     \
  365|    466|        fn_conv((cbargtype *)node, (argtype *)arg);                                         \
  366|    466|    }                                                                                       \
defn_cache.c:lh_PROPERTY_DEFN_ELEM_new:
  334|      3|    {                                                                                                                      \
  335|      3|        return (LHASH_OF(type) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn), \
  336|      3|            lh_##type##_hfn_thunk, lh_##type##_cfn_thunk,                                                                  \
  337|      3|            lh_##type##_doall_thunk,                                                                                       \
  338|      3|            lh_##type##_doall_arg_thunk);                                                                                  \
  339|      3|    }                                                                                                                      \
defn_cache.c:lh_PROPERTY_DEFN_ELEM_hfn_thunk:
  260|     38|    {                                                                                                                      \
  261|     38|        unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn;                                    \
  262|     38|        return hfn_conv((const type *)data);                                                                               \
  263|     38|    }                                                                                                                      \
defn_cache.c:lh_PROPERTY_DEFN_ELEM_cfn_thunk:
  265|     32|    {                                                                                                                      \
  266|     32|        int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn;                            \
  267|     32|        return cfn_conv((const type *)da, (const type *)db);                                                               \
  268|     32|    }                                                                                                                      \
defn_cache.c:lh_PROPERTY_DEFN_ELEM_retrieve:
  291|     36|    {                                                                                                                      \
  292|     36|        return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d);                                                        \
  293|     36|    }                                                                                                                      \
defn_cache.c:lh_PROPERTY_DEFN_ELEM_insert:
  281|      2|    {                                                                                                                      \
  282|      2|        return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d);                                                          \
  283|      2|    }                                                                                                                      \
defn_cache.c:lh_PROPERTY_DEFN_ELEM_error:
  296|      2|    {                                                                                                                      \
  297|      2|        return OPENSSL_LH_error((OPENSSL_LHASH *)lh);                                                                      \
  298|      2|    }                                                                                                                      \
property_string.c:lh_PROPERTY_STRING_new:
  334|      6|    {                                                                                                                      \
  335|      6|        return (LHASH_OF(type) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn), \
  336|      6|            lh_##type##_hfn_thunk, lh_##type##_cfn_thunk,                                                                  \
  337|      6|            lh_##type##_doall_thunk,                                                                                       \
  338|      6|            lh_##type##_doall_arg_thunk);                                                                                  \
  339|      6|    }                                                                                                                      \
property_string.c:lh_PROPERTY_STRING_hfn_thunk:
  260|     80|    {                                                                                                                      \
  261|     80|        unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn;                                    \
  262|     80|        return hfn_conv((const type *)data);                                                                               \
  263|     80|    }                                                                                                                      \
property_string.c:lh_PROPERTY_STRING_cfn_thunk:
  265|      2|    {                                                                                                                      \
  266|      2|        int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn;                            \
  267|      2|        return cfn_conv((const type *)da, (const type *)db);                                                               \
  268|      2|    }                                                                                                                      \
property_string.c:lh_PROPERTY_STRING_retrieve:
  291|     54|    {                                                                                                                      \
  292|     54|        return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d);                                                        \
  293|     54|    }                                                                                                                      \
property_string.c:lh_PROPERTY_STRING_insert:
  281|     26|    {                                                                                                                      \
  282|     26|        return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d);                                                          \
  283|     26|    }                                                                                                                      \
property_string.c:lh_PROPERTY_STRING_error:
  296|     26|    {                                                                                                                      \
  297|     26|        return OPENSSL_LH_error((OPENSSL_LHASH *)lh);                                                                      \
  298|     26|    }                                                                                                                      \
decoder_pkey.c:lh_DECODER_CACHE_ENTRY_new:
  334|      3|    {                                                                                                                      \
  335|      3|        return (LHASH_OF(type) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn), \
  336|      3|            lh_##type##_hfn_thunk, lh_##type##_cfn_thunk,                                                                  \
  337|      3|            lh_##type##_doall_thunk,                                                                                       \
  338|      3|            lh_##type##_doall_arg_thunk);                                                                                  \
  339|      3|    }                                                                                                                      \
decoder_pkey.c:lh_DECODER_CACHE_ENTRY_doall:
  328|      5|    {                                                                                                                      \
  329|      5|        OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall);                                               \
  330|      5|    }                                                                                                                      \
decoder_pkey.c:lh_DECODER_CACHE_ENTRY_flush:
  276|      5|    {                                                                                                                      \
  277|      5|        OPENSSL_LH_flush((OPENSSL_LHASH *)lh);                                                                             \
  278|      5|    }                                                                                                                      \

core_namemap.c:sk_NAMES_value:
  112|    204|    {                                                                                                                      \
  113|    204|        return (t2 *)OPENSSL_sk_value((const OPENSSL_STACK *)sk, idx);                                                     \
  114|    204|    }                                                                                                                      \
core_namemap.c:ossl_check_const_OPENSSL_STRING_sk_type:
   64|    246|    {                                                                                                                    \
   65|    246|        return (const OPENSSL_STACK *)sk;                                                                                \
   66|    246|    }                                                                                                                    \
core_namemap.c:ossl_check_OPENSSL_STRING_sk_type:
   68|    333|    {                                                                                                                    \
   69|    333|        return (OPENSSL_STACK *)sk;                                                                                      \
   70|    333|    }                                                                                                                    \
core_namemap.c:ossl_check_OPENSSL_STRING_type:
   60|    299|    {                                                                                                                    \
   61|    299|        return ptr;                                                                                                      \
   62|    299|    }                                                                                                                    \
core_namemap.c:sk_NAMES_push:
  167|    129|    {                                                                                                                      \
  168|    129|        return OPENSSL_sk_push((OPENSSL_STACK *)sk, (const void *)ptr);                                                    \
  169|    129|    }                                                                                                                      \
core_namemap.c:sk_NAMES_num:
  108|    129|    {                                                                                                                      \
  109|    129|        return OPENSSL_sk_num((const OPENSSL_STACK *)sk);                                                                  \
  110|    129|    }                                                                                                                      \
core_namemap.c:sk_NAMES_new_null:
  126|      3|    {                                                                                                                      \
  127|      3|        OPENSSL_STACK *ret = OPENSSL_sk_new_null();                                                                        \
  128|      3|        OPENSSL_sk_freefunc_thunk f_thunk;                                                                                 \
  129|      3|                                                                                                                           \
  130|      3|        f_thunk = (OPENSSL_sk_freefunc_thunk)sk_##t1##_freefunc_thunk;                                                     \
  131|      3|        OPENSSL_sk_set_cmp_thunks(ret, sk_##t1##_cmpfunc_thunk);                                                           \
  132|      3|        OPENSSL_sk_set_copy_thunks(ret, sk_##t1##_copyfunc_thunk);                                                         \
  133|      3|        return (STACK_OF(t1) *)OPENSSL_sk_set_thunks(ret, f_thunk);                                                        \
  134|      3|    }                                                                                                                      \
initthread.c:sk_THREAD_EVENT_HANDLER_PTR_new_null:
  126|      1|    {                                                                                                                      \
  127|      1|        OPENSSL_STACK *ret = OPENSSL_sk_new_null();                                                                        \
  128|      1|        OPENSSL_sk_freefunc_thunk f_thunk;                                                                                 \
  129|      1|                                                                                                                           \
  130|      1|        f_thunk = (OPENSSL_sk_freefunc_thunk)sk_##t1##_freefunc_thunk;                                                     \
  131|      1|        OPENSSL_sk_set_cmp_thunks(ret, sk_##t1##_cmpfunc_thunk);                                                           \
  132|      1|        OPENSSL_sk_set_copy_thunks(ret, sk_##t1##_copyfunc_thunk);                                                         \
  133|      1|        return (STACK_OF(t1) *)OPENSSL_sk_set_thunks(ret, f_thunk);                                                        \
  134|      1|    }                                                                                                                      \
initthread.c:sk_THREAD_EVENT_HANDLER_PTR_push:
  167|      1|    {                                                                                                                      \
  168|      1|        return OPENSSL_sk_push((OPENSSL_STACK *)sk, (const void *)ptr);                                                    \
  169|      1|    }                                                                                                                      \
provider_core.c:sk_OSSL_PROVIDER_new:
  116|      3|    {                                                                                                                      \
  117|      3|        OPENSSL_STACK *ret = OPENSSL_sk_new((OPENSSL_sk_compfunc)compare);                                                 \
  118|      3|        OPENSSL_sk_freefunc_thunk f_thunk;                                                                                 \
  119|      3|                                                                                                                           \
  120|      3|        f_thunk = (OPENSSL_sk_freefunc_thunk)sk_##t1##_freefunc_thunk;                                                     \
  121|      3|        OPENSSL_sk_set_cmp_thunks(ret, sk_##t1##_cmpfunc_thunk);                                                           \
  122|      3|        OPENSSL_sk_set_copy_thunks(ret, sk_##t1##_copyfunc_thunk);                                                         \
  123|      3|        return (STACK_OF(t1) *)OPENSSL_sk_set_thunks(ret, f_thunk);                                                        \
  124|      3|    }                                                                                                                      \
provider_core.c:sk_OSSL_PROVIDER_cmpfunc_thunk:
  100|      6|    {                                                                                                                      \
  101|      6|        int (*realcmp)(const t3 *const *a, const t3 *const *b) = (int (*)(const t3 *const *a, const t3 *const *b))(cmp);   \
  102|      6|        const t3 *const *at = (const t3 *const *)a;                                                                        \
  103|      6|        const t3 *const *bt = (const t3 *const *)b;                                                                        \
  104|      6|                                                                                                                           \
  105|      6|        return realcmp(at, bt);                                                                                            \
  106|      6|    }                                                                                                                      \
provider_core.c:sk_OSSL_PROVIDER_CHILD_CB_new_null:
  126|      3|    {                                                                                                                      \
  127|      3|        OPENSSL_STACK *ret = OPENSSL_sk_new_null();                                                                        \
  128|      3|        OPENSSL_sk_freefunc_thunk f_thunk;                                                                                 \
  129|      3|                                                                                                                           \
  130|      3|        f_thunk = (OPENSSL_sk_freefunc_thunk)sk_##t1##_freefunc_thunk;                                                     \
  131|      3|        OPENSSL_sk_set_cmp_thunks(ret, sk_##t1##_cmpfunc_thunk);                                                           \
  132|      3|        OPENSSL_sk_set_copy_thunks(ret, sk_##t1##_copyfunc_thunk);                                                         \
  133|      3|        return (STACK_OF(t1) *)OPENSSL_sk_set_thunks(ret, f_thunk);                                                        \
  134|      3|    }                                                                                                                      \
provider_core.c:sk_OSSL_PROVIDER_is_sorted:
  217|      4|    {                                                                                                                      \
  218|      4|        return OPENSSL_sk_is_sorted((const OPENSSL_STACK *)sk);                                                            \
  219|      4|    }                                                                                                                      \
provider_core.c:sk_OSSL_PROVIDER_find:
  200|      8|    {                                                                                                                      \
  201|      8|        return OPENSSL_sk_find((const OPENSSL_STACK *)sk, (const void *)ptr);                                              \
  202|      8|    }                                                                                                                      \
provider_core.c:sk_OSSL_PROVIDER_value:
  112|  3.06k|    {                                                                                                                      \
  113|  3.06k|        return (t2 *)OPENSSL_sk_value((const OPENSSL_STACK *)sk, idx);                                                     \
  114|  3.06k|    }                                                                                                                      \
provider_core.c:sk_INFOPAIR_deep_copy:
  233|      4|    {                                                                                                                      \
  234|      4|        OPENSSL_STACK *ret = OPENSSL_sk_deep_copy((const OPENSSL_STACK *)sk,                                               \
  235|      4|            (OPENSSL_sk_copyfunc)copyfunc,                                                                                 \
  236|      4|            (OPENSSL_sk_freefunc)freefunc);                                                                                \
  237|      4|        OPENSSL_sk_freefunc_thunk f_thunk;                                                                                 \
  238|      4|                                                                                                                           \
  239|      4|        f_thunk = (OPENSSL_sk_freefunc_thunk)sk_##t1##_freefunc_thunk;                                                     \
  240|      4|        OPENSSL_sk_set_cmp_thunks(ret, sk_##t1##_cmpfunc_thunk);                                                           \
  241|      4|        OPENSSL_sk_set_copy_thunks(ret, sk_##t1##_copyfunc_thunk);                                                         \
  242|      4|        return (STACK_OF(t1) *)OPENSSL_sk_set_thunks(ret, f_thunk);                                                        \
  243|      4|    }                                                                                                                      \
provider_core.c:sk_OSSL_PROVIDER_push:
  167|      4|    {                                                                                                                      \
  168|      4|        return OPENSSL_sk_push((OPENSSL_STACK *)sk, (const void *)ptr);                                                    \
  169|      4|    }                                                                                                                      \
provider_core.c:sk_OSSL_PROVIDER_CHILD_CB_push:
  167|      1|    {                                                                                                                      \
  168|      1|        return OPENSSL_sk_push((OPENSSL_STACK *)sk, (const void *)ptr);                                                    \
  169|      1|    }                                                                                                                      \
provider_core.c:sk_OSSL_PROVIDER_dup:
  221|    511|    {                                                                                                                      \
  222|    511|        OPENSSL_STACK *ret = OPENSSL_sk_dup((const OPENSSL_STACK *)sk);                                                    \
  223|    511|        OPENSSL_sk_freefunc_thunk f_thunk;                                                                                 \
  224|    511|                                                                                                                           \
  225|    511|        f_thunk = (OPENSSL_sk_freefunc_thunk)sk_##t1##_freefunc_thunk;                                                     \
  226|    511|        OPENSSL_sk_set_cmp_thunks(ret, sk_##t1##_cmpfunc_thunk);                                                           \
  227|    511|        OPENSSL_sk_set_copy_thunks(ret, sk_##t1##_copyfunc_thunk);                                                         \
  228|    511|        return (STACK_OF(t1) *)OPENSSL_sk_set_thunks(ret, f_thunk);                                                        \
  229|    511|    }                                                                                                                      \
provider_core.c:sk_OSSL_PROVIDER_num:
  108|    512|    {                                                                                                                      \
  109|    512|        return OPENSSL_sk_num((const OPENSSL_STACK *)sk);                                                                  \
  110|    512|    }                                                                                                                      \
provider_core.c:sk_OSSL_PROVIDER_free:
  150|    511|    {                                                                                                                      \
  151|    511|        OPENSSL_sk_free((OPENSSL_STACK *)sk);                                                                              \
  152|    511|    }                                                                                                                      \
provider_core.c:sk_OSSL_PROVIDER_CHILD_CB_num:
  108|      5|    {                                                                                                                      \
  109|      5|        return OPENSSL_sk_num((const OPENSSL_STACK *)sk);                                                                  \
  110|      5|    }                                                                                                                      \
provider_core.c:sk_OSSL_PROVIDER_CHILD_CB_value:
  112|      1|    {                                                                                                                      \
  113|      1|        return (t2 *)OPENSSL_sk_value((const OPENSSL_STACK *)sk, idx);                                                     \
  114|      1|    }                                                                                                                      \
property.c:sk_IMPLEMENTATION_new_null:
  126|     33|    {                                                                                                                      \
  127|     33|        OPENSSL_STACK *ret = OPENSSL_sk_new_null();                                                                        \
  128|     33|        OPENSSL_sk_freefunc_thunk f_thunk;                                                                                 \
  129|     33|                                                                                                                           \
  130|     33|        f_thunk = (OPENSSL_sk_freefunc_thunk)sk_##t1##_freefunc_thunk;                                                     \
  131|     33|        OPENSSL_sk_set_cmp_thunks(ret, sk_##t1##_cmpfunc_thunk);                                                           \
  132|     33|        OPENSSL_sk_set_copy_thunks(ret, sk_##t1##_copyfunc_thunk);                                                         \
  133|     33|        return (STACK_OF(t1) *)OPENSSL_sk_set_thunks(ret, f_thunk);                                                        \
  134|     33|    }                                                                                                                      \
property.c:sk_IMPLEMENTATION_num:
  108|    280|    {                                                                                                                      \
  109|    280|        return OPENSSL_sk_num((const OPENSSL_STACK *)sk);                                                                  \
  110|    280|    }                                                                                                                      \
property.c:sk_IMPLEMENTATION_value:
  112|    212|    {                                                                                                                      \
  113|    212|        return (t2 *)OPENSSL_sk_value((const OPENSSL_STACK *)sk, idx);                                                     \
  114|    212|    }                                                                                                                      \
property.c:sk_IMPLEMENTATION_push:
  167|     34|    {                                                                                                                      \
  168|     34|        return OPENSSL_sk_push((OPENSSL_STACK *)sk, (const void *)ptr);                                                    \
  169|     34|    }                                                                                                                      \
property_parse.c:sk_OSSL_PROPERTY_DEFINITION_new:
  116|    214|    {                                                                                                                      \
  117|    214|        OPENSSL_STACK *ret = OPENSSL_sk_new((OPENSSL_sk_compfunc)compare);                                                 \
  118|    214|        OPENSSL_sk_freefunc_thunk f_thunk;                                                                                 \
  119|    214|                                                                                                                           \
  120|    214|        f_thunk = (OPENSSL_sk_freefunc_thunk)sk_##t1##_freefunc_thunk;                                                     \
  121|    214|        OPENSSL_sk_set_cmp_thunks(ret, sk_##t1##_cmpfunc_thunk);                                                           \
  122|    214|        OPENSSL_sk_set_copy_thunks(ret, sk_##t1##_copyfunc_thunk);                                                         \
  123|    214|        return (STACK_OF(t1) *)OPENSSL_sk_set_thunks(ret, f_thunk);                                                        \
  124|    214|    }                                                                                                                      \
property_parse.c:sk_OSSL_PROPERTY_DEFINITION_freefunc_thunk:
   90|      2|    {                                                                                                                      \
   91|      2|        sk_##t1##_freefunc freefunc = (sk_##t1##_freefunc)freefunc_arg;                                                    \
   92|      2|        freefunc((t3 *)ptr);                                                                                               \
   93|      2|    }                                                                                                                      \
property_parse.c:sk_OSSL_PROPERTY_DEFINITION_push:
  167|      2|    {                                                                                                                      \
  168|      2|        return OPENSSL_sk_push((OPENSSL_STACK *)sk, (const void *)ptr);                                                    \
  169|      2|    }                                                                                                                      \
property_parse.c:sk_OSSL_PROPERTY_DEFINITION_num:
  108|    214|    {                                                                                                                      \
  109|    214|        return OPENSSL_sk_num((const OPENSSL_STACK *)sk);                                                                  \
  110|    214|    }                                                                                                                      \
property_parse.c:sk_OSSL_PROPERTY_DEFINITION_sort:
  213|    214|    {                                                                                                                      \
  214|    214|        OPENSSL_sk_sort((OPENSSL_STACK *)sk);                                                                              \
  215|    214|    }                                                                                                                      \
property_parse.c:sk_OSSL_PROPERTY_DEFINITION_value:
  112|      2|    {                                                                                                                      \
  113|      2|        return (t2 *)OPENSSL_sk_value((const OPENSSL_STACK *)sk, idx);                                                     \
  114|      2|    }                                                                                                                      \
property_parse.c:sk_OSSL_PROPERTY_DEFINITION_pop_free:
  183|    214|    {                                                                                                                      \
  184|    214|        OPENSSL_sk_freefunc_thunk f_thunk;                                                                                 \
  185|    214|                                                                                                                           \
  186|    214|        f_thunk = (OPENSSL_sk_freefunc_thunk)sk_##t1##_freefunc_thunk;                                                     \
  187|    214|        sk = (STACK_OF(t1) *)OPENSSL_sk_set_thunks((OPENSSL_STACK *)sk, f_thunk);                                          \
  188|    214|                                                                                                                           \
  189|    214|        OPENSSL_sk_pop_free((OPENSSL_STACK *)sk, (OPENSSL_sk_freefunc)freefunc);                                           \
  190|    214|    }                                                                                                                      \
property_string.c:ossl_check_OPENSSL_CSTRING_sk_type:
   68|     26|    {                                                                                                                    \
   69|     26|        return (OPENSSL_STACK *)sk;                                                                                      \
   70|     26|    }                                                                                                                    \
property_string.c:ossl_check_OPENSSL_CSTRING_type:
   60|     26|    {                                                                                                                    \
   61|     26|        return ptr;                                                                                                      \
   62|     26|    }                                                                                                                    \
comp_methods.c:ossl_check_SSL_COMP_compfunc_type:
   72|      3|    {                                                                                                                    \
   73|      3|        return (OPENSSL_sk_compfunc)cmp;                                                                                 \
   74|      3|    }                                                                                                                    \

ossl_prov_bio_from_dispatch:
   27|      1|{
   28|     54|    for (; fns->function_id != 0; fns++) {
  ------------------
  |  Branch (28:12): [True: 53, False: 1]
  ------------------
   29|     53|        switch (fns->function_id) {
  ------------------
  |  Branch (29:17): [True: 10, False: 43]
  ------------------
   30|      1|        case OSSL_FUNC_BIO_NEW_FILE:
  ------------------
  |  |  151|      1|#define OSSL_FUNC_BIO_NEW_FILE 40
  ------------------
  |  Branch (30:9): [True: 1, False: 52]
  ------------------
   31|      1|            if (c_bio_new_file == NULL)
  ------------------
  |  Branch (31:17): [True: 1, False: 0]
  ------------------
   32|      1|                c_bio_new_file = OSSL_FUNC_BIO_new_file(fns);
   33|      1|            break;
   34|      1|        case OSSL_FUNC_BIO_NEW_MEMBUF:
  ------------------
  |  |  152|      1|#define OSSL_FUNC_BIO_NEW_MEMBUF 41
  ------------------
  |  Branch (34:9): [True: 1, False: 52]
  ------------------
   35|      1|            if (c_bio_new_membuf == NULL)
  ------------------
  |  Branch (35:17): [True: 1, False: 0]
  ------------------
   36|      1|                c_bio_new_membuf = OSSL_FUNC_BIO_new_membuf(fns);
   37|      1|            break;
   38|      1|        case OSSL_FUNC_BIO_READ_EX:
  ------------------
  |  |  153|      1|#define OSSL_FUNC_BIO_READ_EX 42
  ------------------
  |  Branch (38:9): [True: 1, False: 52]
  ------------------
   39|      1|            if (c_bio_read_ex == NULL)
  ------------------
  |  Branch (39:17): [True: 1, False: 0]
  ------------------
   40|      1|                c_bio_read_ex = OSSL_FUNC_BIO_read_ex(fns);
   41|      1|            break;
   42|      1|        case OSSL_FUNC_BIO_WRITE_EX:
  ------------------
  |  |  154|      1|#define OSSL_FUNC_BIO_WRITE_EX 43
  ------------------
  |  Branch (42:9): [True: 1, False: 52]
  ------------------
   43|      1|            if (c_bio_write_ex == NULL)
  ------------------
  |  Branch (43:17): [True: 1, False: 0]
  ------------------
   44|      1|                c_bio_write_ex = OSSL_FUNC_BIO_write_ex(fns);
   45|      1|            break;
   46|      1|        case OSSL_FUNC_BIO_GETS:
  ------------------
  |  |  160|      1|#define OSSL_FUNC_BIO_GETS 49
  ------------------
  |  Branch (46:9): [True: 1, False: 52]
  ------------------
   47|      1|            if (c_bio_gets == NULL)
  ------------------
  |  Branch (47:17): [True: 1, False: 0]
  ------------------
   48|      1|                c_bio_gets = OSSL_FUNC_BIO_gets(fns);
   49|      1|            break;
   50|      1|        case OSSL_FUNC_BIO_PUTS:
  ------------------
  |  |  159|      1|#define OSSL_FUNC_BIO_PUTS 48
  ------------------
  |  Branch (50:9): [True: 1, False: 52]
  ------------------
   51|      1|            if (c_bio_puts == NULL)
  ------------------
  |  Branch (51:17): [True: 1, False: 0]
  ------------------
   52|      1|                c_bio_puts = OSSL_FUNC_BIO_puts(fns);
   53|      1|            break;
   54|      1|        case OSSL_FUNC_BIO_CTRL:
  ------------------
  |  |  161|      1|#define OSSL_FUNC_BIO_CTRL 50
  ------------------
  |  Branch (54:9): [True: 1, False: 52]
  ------------------
   55|      1|            if (c_bio_ctrl == NULL)
  ------------------
  |  Branch (55:17): [True: 1, False: 0]
  ------------------
   56|      1|                c_bio_ctrl = OSSL_FUNC_BIO_ctrl(fns);
   57|      1|            break;
   58|      1|        case OSSL_FUNC_BIO_UP_REF:
  ------------------
  |  |  155|      1|#define OSSL_FUNC_BIO_UP_REF 44
  ------------------
  |  Branch (58:9): [True: 1, False: 52]
  ------------------
   59|      1|            if (c_bio_up_ref == NULL)
  ------------------
  |  Branch (59:17): [True: 1, False: 0]
  ------------------
   60|      1|                c_bio_up_ref = OSSL_FUNC_BIO_up_ref(fns);
   61|      1|            break;
   62|      1|        case OSSL_FUNC_BIO_FREE:
  ------------------
  |  |  156|      1|#define OSSL_FUNC_BIO_FREE 45
  ------------------
  |  Branch (62:9): [True: 1, False: 52]
  ------------------
   63|      1|            if (c_bio_free == NULL)
  ------------------
  |  Branch (63:17): [True: 1, False: 0]
  ------------------
   64|      1|                c_bio_free = OSSL_FUNC_BIO_free(fns);
   65|      1|            break;
   66|      1|        case OSSL_FUNC_BIO_VPRINTF:
  ------------------
  |  |  157|      1|#define OSSL_FUNC_BIO_VPRINTF 46
  ------------------
  |  Branch (66:9): [True: 1, False: 52]
  ------------------
   67|      1|            if (c_bio_vprintf == NULL)
  ------------------
  |  Branch (67:17): [True: 1, False: 0]
  ------------------
   68|      1|                c_bio_vprintf = OSSL_FUNC_BIO_vprintf(fns);
   69|      1|            break;
   70|     53|        }
   71|     53|    }
   72|       |
   73|      1|    return 1;
   74|      1|}
ossl_bio_prov_init_bio_method:
  207|      1|{
  208|      1|    BIO_METHOD *corebiometh = NULL;
  209|       |
  210|      1|    corebiometh = BIO_meth_new(BIO_TYPE_CORE_TO_PROV, "BIO to Core filter");
  ------------------
  |  |   71|      1|#define BIO_TYPE_CORE_TO_PROV (25 | BIO_TYPE_SOURCE_SINK)
  |  |  ------------------
  |  |  |  |   43|      1|#define BIO_TYPE_SOURCE_SINK 0x0400
  |  |  ------------------
  ------------------
  211|      1|    if (corebiometh == NULL
  ------------------
  |  Branch (211:9): [True: 0, False: 1]
  ------------------
  212|      1|        || !BIO_meth_set_write_ex(corebiometh, bio_core_write_ex)
  ------------------
  |  Branch (212:12): [True: 0, False: 1]
  ------------------
  213|      1|        || !BIO_meth_set_read_ex(corebiometh, bio_core_read_ex)
  ------------------
  |  Branch (213:12): [True: 0, False: 1]
  ------------------
  214|      1|        || !BIO_meth_set_puts(corebiometh, bio_core_puts)
  ------------------
  |  Branch (214:12): [True: 0, False: 1]
  ------------------
  215|      1|        || !BIO_meth_set_gets(corebiometh, bio_core_gets)
  ------------------
  |  Branch (215:12): [True: 0, False: 1]
  ------------------
  216|      1|        || !BIO_meth_set_ctrl(corebiometh, bio_core_ctrl)
  ------------------
  |  Branch (216:12): [True: 0, False: 1]
  ------------------
  217|      1|        || !BIO_meth_set_create(corebiometh, bio_core_new)
  ------------------
  |  Branch (217:12): [True: 0, False: 1]
  ------------------
  218|      1|        || !BIO_meth_set_destroy(corebiometh, bio_core_free)) {
  ------------------
  |  Branch (218:12): [True: 0, False: 1]
  ------------------
  219|      0|        BIO_meth_free(corebiometh);
  220|      0|        return NULL;
  221|      0|    }
  222|       |
  223|      1|    return corebiometh;
  224|      1|}

md5_sha1_prov.c:ossl_param_is_empty:
   33|     36|{
   34|     36|    return params == NULL || params->key == NULL;
  ------------------
  |  Branch (34:12): [True: 36, False: 0]
  |  Branch (34:30): [True: 0, False: 0]
  ------------------
   35|     36|}

ossl_prov_ctx_new:
   16|      2|{
   17|      2|    return OPENSSL_zalloc(sizeof(PROV_CTX));
  ------------------
  |  |  113|      2|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   18|      2|}
ossl_prov_ctx_set0_libctx:
   26|      2|{
   27|      2|    if (ctx != NULL)
  ------------------
  |  Branch (27:9): [True: 2, False: 0]
  ------------------
   28|      2|        ctx->libctx = libctx;
   29|      2|}
ossl_prov_ctx_set0_handle:
   32|      2|{
   33|      2|    if (ctx != NULL)
  ------------------
  |  Branch (33:9): [True: 2, False: 0]
  ------------------
   34|      2|        ctx->handle = handle;
   35|      2|}
ossl_prov_ctx_set0_core_bio_method:
   38|      1|{
   39|      1|    if (ctx != NULL)
  ------------------
  |  Branch (39:9): [True: 1, False: 0]
  ------------------
   40|      1|        ctx->corebiometh = corebiometh;
   41|      1|}
ossl_prov_ctx_set0_core_get_params:
   45|      1|{
   46|      1|    if (ctx != NULL)
  ------------------
  |  Branch (46:9): [True: 1, False: 0]
  ------------------
   47|      1|        ctx->core_get_params = c_get_params;
   48|      1|}
ossl_prov_ctx_get0_libctx:
   51|      3|{
   52|      3|    if (ctx == NULL)
  ------------------
  |  Branch (52:9): [True: 0, False: 3]
  ------------------
   53|      0|        return NULL;
   54|      3|    return ctx->libctx;
   55|      3|}

ossl_err_load_PROV_strings:
  283|      1|{
  284|      1|#ifndef OPENSSL_NO_ERR
  285|      1|    if (ERR_reason_error_string(PROV_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (285:9): [True: 1, False: 0]
  ------------------
  286|      1|        ERR_load_strings_const(PROV_str_reasons);
  287|      1|#endif
  288|      1|    return 1;
  289|      1|}

ossl_prov_seeding_from_dispatch:
   42|      1|{
   43|     54|    for (; fns->function_id != 0; fns++) {
  ------------------
  |  Branch (43:12): [True: 53, False: 1]
  ------------------
   44|       |        /*
   45|       |         * We do not support the scenario of an application linked against
   46|       |         * multiple versions of libcrypto (e.g. one static and one dynamic), but
   47|       |         * sharing a single fips.so. We do a simple sanity check here.
   48|       |         */
   49|     53|#define set_func(c, f)   \
   50|     53|    do {                 \
   51|     53|        if (c == NULL)   \
   52|     53|            c = f;       \
   53|     53|        else if (c != f) \
   54|     53|            return 0;    \
   55|     53|    } while (0)
   56|     53|        switch (fns->function_id) {
  ------------------
  |  Branch (56:17): [True: 8, False: 45]
  ------------------
   57|      1|        case OSSL_FUNC_GET_ENTROPY:
  ------------------
  |  |  188|      1|#define OSSL_FUNC_GET_ENTROPY 101
  ------------------
  |  Branch (57:9): [True: 1, False: 52]
  ------------------
   58|      1|            set_func(c_get_entropy, OSSL_FUNC_get_entropy(fns));
  ------------------
  |  |   50|      1|    do {                 \
  |  |   51|      1|        if (c == NULL)   \
  |  |  ------------------
  |  |  |  Branch (51:13): [True: 1, False: 0]
  |  |  ------------------
  |  |   52|      1|            c = f;       \
  |  |   53|      1|        else if (c != f) \
  |  |  ------------------
  |  |  |  Branch (53:18): [True: 0, False: 0]
  |  |  ------------------
  |  |   54|      0|            return 0;    \
  |  |   55|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (55:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
   59|      1|            break;
   60|      1|        case OSSL_FUNC_GET_USER_ENTROPY:
  ------------------
  |  |  179|      1|#define OSSL_FUNC_GET_USER_ENTROPY 98
  ------------------
  |  Branch (60:9): [True: 1, False: 52]
  ------------------
   61|      1|            set_func(c_get_user_entropy, OSSL_FUNC_get_user_entropy(fns));
  ------------------
  |  |   50|      1|    do {                 \
  |  |   51|      1|        if (c == NULL)   \
  |  |  ------------------
  |  |  |  Branch (51:13): [True: 1, False: 0]
  |  |  ------------------
  |  |   52|      1|            c = f;       \
  |  |   53|      1|        else if (c != f) \
  |  |  ------------------
  |  |  |  Branch (53:18): [True: 0, False: 0]
  |  |  ------------------
  |  |   54|      0|            return 0;    \
  |  |   55|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (55:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
   62|      1|            break;
   63|      1|        case OSSL_FUNC_CLEANUP_ENTROPY:
  ------------------
  |  |  189|      1|#define OSSL_FUNC_CLEANUP_ENTROPY 102
  ------------------
  |  Branch (63:9): [True: 1, False: 52]
  ------------------
   64|      1|            set_func(c_cleanup_entropy, OSSL_FUNC_cleanup_entropy(fns));
  ------------------
  |  |   50|      1|    do {                 \
  |  |   51|      1|        if (c == NULL)   \
  |  |  ------------------
  |  |  |  Branch (51:13): [True: 1, False: 0]
  |  |  ------------------
  |  |   52|      1|            c = f;       \
  |  |   53|      1|        else if (c != f) \
  |  |  ------------------
  |  |  |  Branch (53:18): [True: 0, False: 0]
  |  |  ------------------
  |  |   54|      0|            return 0;    \
  |  |   55|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (55:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
   65|      1|            break;
   66|      1|        case OSSL_FUNC_CLEANUP_USER_ENTROPY:
  ------------------
  |  |  177|      1|#define OSSL_FUNC_CLEANUP_USER_ENTROPY 96
  ------------------
  |  Branch (66:9): [True: 1, False: 52]
  ------------------
   67|      1|            set_func(c_cleanup_user_entropy, OSSL_FUNC_cleanup_user_entropy(fns));
  ------------------
  |  |   50|      1|    do {                 \
  |  |   51|      1|        if (c == NULL)   \
  |  |  ------------------
  |  |  |  Branch (51:13): [True: 1, False: 0]
  |  |  ------------------
  |  |   52|      1|            c = f;       \
  |  |   53|      1|        else if (c != f) \
  |  |  ------------------
  |  |  |  Branch (53:18): [True: 0, False: 0]
  |  |  ------------------
  |  |   54|      0|            return 0;    \
  |  |   55|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (55:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
   68|      1|            break;
   69|      1|        case OSSL_FUNC_GET_NONCE:
  ------------------
  |  |  190|      1|#define OSSL_FUNC_GET_NONCE 103
  ------------------
  |  Branch (69:9): [True: 1, False: 52]
  ------------------
   70|      1|            set_func(c_get_nonce, OSSL_FUNC_get_nonce(fns));
  ------------------
  |  |   50|      1|    do {                 \
  |  |   51|      1|        if (c == NULL)   \
  |  |  ------------------
  |  |  |  Branch (51:13): [True: 1, False: 0]
  |  |  ------------------
  |  |   52|      1|            c = f;       \
  |  |   53|      1|        else if (c != f) \
  |  |  ------------------
  |  |  |  Branch (53:18): [True: 0, False: 0]
  |  |  ------------------
  |  |   54|      0|            return 0;    \
  |  |   55|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (55:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
   71|      1|            break;
   72|      1|        case OSSL_FUNC_GET_USER_NONCE:
  ------------------
  |  |  180|      1|#define OSSL_FUNC_GET_USER_NONCE 99
  ------------------
  |  Branch (72:9): [True: 1, False: 52]
  ------------------
   73|      1|            set_func(c_get_user_nonce, OSSL_FUNC_get_user_nonce(fns));
  ------------------
  |  |   50|      1|    do {                 \
  |  |   51|      1|        if (c == NULL)   \
  |  |  ------------------
  |  |  |  Branch (51:13): [True: 1, False: 0]
  |  |  ------------------
  |  |   52|      1|            c = f;       \
  |  |   53|      1|        else if (c != f) \
  |  |  ------------------
  |  |  |  Branch (53:18): [True: 0, False: 0]
  |  |  ------------------
  |  |   54|      0|            return 0;    \
  |  |   55|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (55:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
   74|      1|            break;
   75|      1|        case OSSL_FUNC_CLEANUP_NONCE:
  ------------------
  |  |  191|      1|#define OSSL_FUNC_CLEANUP_NONCE 104
  ------------------
  |  Branch (75:9): [True: 1, False: 52]
  ------------------
   76|      1|            set_func(c_cleanup_nonce, OSSL_FUNC_cleanup_nonce(fns));
  ------------------
  |  |   50|      1|    do {                 \
  |  |   51|      1|        if (c == NULL)   \
  |  |  ------------------
  |  |  |  Branch (51:13): [True: 1, False: 0]
  |  |  ------------------
  |  |   52|      1|            c = f;       \
  |  |   53|      1|        else if (c != f) \
  |  |  ------------------
  |  |  |  Branch (53:18): [True: 0, False: 0]
  |  |  ------------------
  |  |   54|      0|            return 0;    \
  |  |   55|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (55:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
   77|      1|            break;
   78|      1|        case OSSL_FUNC_CLEANUP_USER_NONCE:
  ------------------
  |  |  178|      1|#define OSSL_FUNC_CLEANUP_USER_NONCE 97
  ------------------
  |  Branch (78:9): [True: 1, False: 52]
  ------------------
   79|      1|            set_func(c_cleanup_user_nonce, OSSL_FUNC_cleanup_user_nonce(fns));
  ------------------
  |  |   50|      1|    do {                 \
  |  |   51|      1|        if (c == NULL)   \
  |  |  ------------------
  |  |  |  Branch (51:13): [True: 1, False: 0]
  |  |  ------------------
  |  |   52|      1|            c = f;       \
  |  |   53|      1|        else if (c != f) \
  |  |  ------------------
  |  |  |  Branch (53:18): [True: 0, False: 0]
  |  |  ------------------
  |  |   54|      0|            return 0;    \
  |  |   55|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (55:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
   80|      1|            break;
   81|     53|        }
   82|     53|#undef set_func
   83|     53|    }
   84|      1|    return 1;
   85|      1|}

ossl_prov_cache_exported_algorithms:
  221|      1|{
  222|      1|    int i, j;
  223|       |
  224|      1|    if (out[0].algorithm_names == NULL) {
  ------------------
  |  Branch (224:9): [True: 1, False: 0]
  ------------------
  225|    140|        for (i = j = 0; in[i].alg.algorithm_names != NULL; ++i) {
  ------------------
  |  Branch (225:25): [True: 139, False: 1]
  ------------------
  226|    139|            if (in[i].capable == NULL || in[i].capable())
  ------------------
  |  Branch (226:17): [True: 126, False: 13]
  |  Branch (226:42): [True: 0, False: 13]
  ------------------
  227|    126|                out[j++] = in[i].alg;
  228|    139|        }
  229|      1|        out[j++] = in[i].alg;
  230|      1|    }
  231|      1|}

ossl_default_provider_init:
  796|      1|{
  797|      1|    OSSL_FUNC_core_get_libctx_fn *c_get_libctx = NULL;
  798|      1|    OSSL_FUNC_core_get_params_fn *c_get_params = NULL;
  799|      1|    BIO_METHOD *corebiometh;
  800|       |
  801|      1|    if (!ossl_prov_bio_from_dispatch(in)
  ------------------
  |  Branch (801:9): [True: 0, False: 1]
  ------------------
  802|      1|        || !ossl_prov_seeding_from_dispatch(in))
  ------------------
  |  Branch (802:12): [True: 0, False: 1]
  ------------------
  803|      0|        return 0;
  804|     54|    for (; in->function_id != 0; in++) {
  ------------------
  |  Branch (804:12): [True: 53, False: 1]
  ------------------
  805|     53|        switch (in->function_id) {
  806|      1|        case OSSL_FUNC_CORE_GET_PARAMS:
  ------------------
  |  |   75|      1|#define OSSL_FUNC_CORE_GET_PARAMS 2
  ------------------
  |  Branch (806:9): [True: 1, False: 52]
  ------------------
  807|      1|            c_get_params = OSSL_FUNC_core_get_params(in);
  808|      1|            break;
  809|      1|        case OSSL_FUNC_CORE_GET_LIBCTX:
  ------------------
  |  |   79|      1|#define OSSL_FUNC_CORE_GET_LIBCTX 4
  ------------------
  |  Branch (809:9): [True: 1, False: 52]
  ------------------
  810|      1|            c_get_libctx = OSSL_FUNC_core_get_libctx(in);
  811|      1|            break;
  812|     51|        default:
  ------------------
  |  Branch (812:9): [True: 51, False: 2]
  ------------------
  813|       |            /* Just ignore anything we don't understand */
  814|     51|            break;
  815|     53|        }
  816|     53|    }
  817|       |
  818|      1|    if (c_get_libctx == NULL)
  ------------------
  |  Branch (818:9): [True: 0, False: 1]
  ------------------
  819|      0|        return 0;
  820|       |
  821|       |    /*
  822|       |     * We want to make sure that all calls from this provider that requires
  823|       |     * a library context use the same context as the one used to call our
  824|       |     * functions.  We do that by passing it along in the provider context.
  825|       |     *
  826|       |     * This only works for built-in providers.  Most providers should
  827|       |     * create their own library context.
  828|       |     */
  829|      1|    if ((*provctx = ossl_prov_ctx_new()) == NULL
  ------------------
  |  Branch (829:9): [True: 0, False: 1]
  ------------------
  830|      1|        || (corebiometh = ossl_bio_prov_init_bio_method()) == NULL) {
  ------------------
  |  Branch (830:12): [True: 0, False: 1]
  ------------------
  831|      0|        ossl_prov_ctx_free(*provctx);
  832|      0|        *provctx = NULL;
  833|      0|        return 0;
  834|      0|    }
  835|      1|    ossl_prov_ctx_set0_libctx(*provctx,
  836|      1|        (OSSL_LIB_CTX *)c_get_libctx(handle));
  837|      1|    ossl_prov_ctx_set0_handle(*provctx, handle);
  838|      1|    ossl_prov_ctx_set0_core_bio_method(*provctx, corebiometh);
  839|      1|    ossl_prov_ctx_set0_core_get_params(*provctx, c_get_params);
  840|       |
  841|      1|    *out = deflt_dispatch_table;
  842|      1|    ossl_prov_cache_exported_algorithms(deflt_ciphers, exported_ciphers);
  843|       |
  844|      1|    return 1;
  845|      1|}
defltprov.c:deflt_query:
  738|    511|{
  739|    511|    *no_cache = 0;
  740|    511|    switch (operation_id) {
  ------------------
  |  Branch (740:13): [True: 511, False: 0]
  ------------------
  741|    511|    case OSSL_OP_DIGEST:
  ------------------
  |  |  283|    511|#define OSSL_OP_DIGEST 1
  ------------------
  |  Branch (741:5): [True: 511, False: 0]
  ------------------
  742|    511|        return deflt_digests;
  743|      0|    case OSSL_OP_CIPHER:
  ------------------
  |  |  284|      0|#define OSSL_OP_CIPHER 2 /* Symmetric Ciphers */
  ------------------
  |  Branch (743:5): [True: 0, False: 511]
  ------------------
  744|      0|        return exported_ciphers;
  745|      0|    case OSSL_OP_MAC:
  ------------------
  |  |  285|      0|#define OSSL_OP_MAC 3
  ------------------
  |  Branch (745:5): [True: 0, False: 511]
  ------------------
  746|      0|        return deflt_macs;
  747|      0|    case OSSL_OP_KDF:
  ------------------
  |  |  286|      0|#define OSSL_OP_KDF 4
  ------------------
  |  Branch (747:5): [True: 0, False: 511]
  ------------------
  748|      0|        return deflt_kdfs;
  749|      0|    case OSSL_OP_RAND:
  ------------------
  |  |  287|      0|#define OSSL_OP_RAND 5
  ------------------
  |  Branch (749:5): [True: 0, False: 511]
  ------------------
  750|      0|        return deflt_rands;
  751|      0|    case OSSL_OP_KEYMGMT:
  ------------------
  |  |  288|      0|#define OSSL_OP_KEYMGMT 10
  ------------------
  |  Branch (751:5): [True: 0, False: 511]
  ------------------
  752|      0|        return deflt_keymgmt;
  753|      0|    case OSSL_OP_KEYEXCH:
  ------------------
  |  |  289|      0|#define OSSL_OP_KEYEXCH 11
  ------------------
  |  Branch (753:5): [True: 0, False: 511]
  ------------------
  754|      0|        return deflt_keyexch;
  755|      0|    case OSSL_OP_SIGNATURE:
  ------------------
  |  |  290|      0|#define OSSL_OP_SIGNATURE 12
  ------------------
  |  Branch (755:5): [True: 0, False: 511]
  ------------------
  756|      0|        return deflt_signature;
  757|      0|    case OSSL_OP_ASYM_CIPHER:
  ------------------
  |  |  291|      0|#define OSSL_OP_ASYM_CIPHER 13
  ------------------
  |  Branch (757:5): [True: 0, False: 511]
  ------------------
  758|      0|        return deflt_asym_cipher;
  759|      0|    case OSSL_OP_KEM:
  ------------------
  |  |  292|      0|#define OSSL_OP_KEM 14
  ------------------
  |  Branch (759:5): [True: 0, False: 511]
  ------------------
  760|      0|        return deflt_asym_kem;
  761|      0|    case OSSL_OP_ENCODER:
  ------------------
  |  |  295|      0|#define OSSL_OP_ENCODER 20
  ------------------
  |  Branch (761:5): [True: 0, False: 511]
  ------------------
  762|      0|        return deflt_encoder;
  763|      0|    case OSSL_OP_DECODER:
  ------------------
  |  |  296|      0|#define OSSL_OP_DECODER 21
  ------------------
  |  Branch (763:5): [True: 0, False: 511]
  ------------------
  764|      0|        return deflt_decoder;
  765|      0|    case OSSL_OP_STORE:
  ------------------
  |  |  297|      0|#define OSSL_OP_STORE 22
  ------------------
  |  Branch (765:5): [True: 0, False: 511]
  ------------------
  766|      0|        return deflt_store;
  767|      0|    case OSSL_OP_SKEYMGMT:
  ------------------
  |  |  293|      0|#define OSSL_OP_SKEYMGMT 15
  ------------------
  |  Branch (767:5): [True: 0, False: 511]
  ------------------
  768|      0|        return deflt_skeymgmt;
  769|    511|    }
  770|      0|    return NULL;
  771|    511|}

ossl_cipher_capable_aes_cbc_hmac_sha1_etm:
   14|      3|{
   15|      3|    return 0;
   16|      3|}

ossl_cipher_capable_aes_cbc_hmac_sha1:
   21|      2|{
   22|      2|    return 0;
   23|      2|}

ossl_cipher_capable_aes_cbc_hmac_sha256_etm:
   14|      3|{
   15|      3|    return 0;
   16|      3|}

ossl_cipher_capable_aes_cbc_hmac_sha256:
   21|      2|{
   22|      2|    return 0;
   23|      2|}

ossl_cipher_capable_aes_cbc_hmac_sha512_etm:
   20|      3|{
   21|      3|    return 0;
   22|      3|}

blake2b_prov.c:store32:
   65|    170|{
   66|    170|    DECLARE_IS_ENDIAN;
  ------------------
  |  |   25|    170|#define DECLARE_IS_ENDIAN const int ossl_is_little_endian = __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
  ------------------
   67|       |
   68|    170|    if (IS_LITTLE_ENDIAN) {
  ------------------
  |  |   26|    170|#define IS_LITTLE_ENDIAN (ossl_is_little_endian)
  |  |  ------------------
  |  |  |  Branch (26:26): [True: 170, Folded]
  |  |  ------------------
  ------------------
   69|    170|        memcpy(dst, &w, sizeof(w));
   70|    170|    } else {
   71|      0|        uint8_t *p = (uint8_t *)dst;
   72|      0|        int i;
   73|       |
   74|      0|        for (i = 0; i < 4; i++)
  ------------------
  |  Branch (74:21): [True: 0, False: 0]
  ------------------
   75|      0|            p[i] = (uint8_t)(w >> (8 * i));
   76|      0|    }
   77|    170|}
blake2b_prov.c:store64:
   80|    850|{
   81|    850|    DECLARE_IS_ENDIAN;
  ------------------
  |  |   25|    850|#define DECLARE_IS_ENDIAN const int ossl_is_little_endian = __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
  ------------------
   82|       |
   83|    850|    if (IS_LITTLE_ENDIAN) {
  ------------------
  |  |   26|    850|#define IS_LITTLE_ENDIAN (ossl_is_little_endian)
  |  |  ------------------
  |  |  |  Branch (26:26): [True: 850, Folded]
  |  |  ------------------
  ------------------
   84|    850|        memcpy(dst, &w, sizeof(w));
   85|    850|    } else {
   86|      0|        uint8_t *p = (uint8_t *)dst;
   87|      0|        int i;
   88|       |
   89|      0|        for (i = 0; i < 8; i++)
  ------------------
  |  Branch (89:21): [True: 0, False: 0]
  ------------------
   90|      0|            p[i] = (uint8_t)(w >> (8 * i));
   91|      0|    }
   92|    850|}
blake2b_prov.c:load64:
   44|  16.2M|{
   45|  16.2M|    DECLARE_IS_ENDIAN;
  ------------------
  |  |   25|  16.2M|#define DECLARE_IS_ENDIAN const int ossl_is_little_endian = __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
  ------------------
   46|       |
   47|  16.2M|    if (IS_LITTLE_ENDIAN) {
  ------------------
  |  |   26|  16.2M|#define IS_LITTLE_ENDIAN (ossl_is_little_endian)
  |  |  ------------------
  |  |  |  Branch (26:26): [True: 16.2M, Folded]
  |  |  ------------------
  ------------------
   48|  16.2M|        uint64_t w;
   49|  16.2M|        memcpy(&w, src, sizeof(w));
   50|  16.2M|        return w;
   51|  16.2M|    } else {
   52|      0|        uint64_t w = ((uint64_t)src[0])
   53|      0|            | ((uint64_t)src[1] << 8)
   54|      0|            | ((uint64_t)src[2] << 16)
   55|      0|            | ((uint64_t)src[3] << 24)
   56|      0|            | ((uint64_t)src[4] << 32)
   57|      0|            | ((uint64_t)src[5] << 40)
   58|      0|            | ((uint64_t)src[6] << 48)
   59|      0|            | ((uint64_t)src[7] << 56);
   60|      0|        return w;
   61|      0|    }
   62|  16.2M|}
blake2b_prov.c:rotr64:
  122|   390M|{
  123|   390M|    return (w >> c) | (w << (64 - c));
  124|   390M|}
blake2s_prov.c:store32:
   65|    940|{
   66|    940|    DECLARE_IS_ENDIAN;
  ------------------
  |  |   25|    940|#define DECLARE_IS_ENDIAN const int ossl_is_little_endian = __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
  ------------------
   67|       |
   68|    940|    if (IS_LITTLE_ENDIAN) {
  ------------------
  |  |   26|    940|#define IS_LITTLE_ENDIAN (ossl_is_little_endian)
  |  |  ------------------
  |  |  |  Branch (26:26): [True: 940, Folded]
  |  |  ------------------
  ------------------
   69|    940|        memcpy(dst, &w, sizeof(w));
   70|    940|    } else {
   71|      0|        uint8_t *p = (uint8_t *)dst;
   72|      0|        int i;
   73|       |
   74|      0|        for (i = 0; i < 4; i++)
  ------------------
  |  Branch (74:21): [True: 0, False: 0]
  ------------------
   75|      0|            p[i] = (uint8_t)(w >> (8 * i));
   76|      0|    }
   77|    940|}
blake2s_prov.c:store48:
  106|    188|{
  107|    188|    uint8_t *p = (uint8_t *)dst;
  108|    188|    p[0] = (uint8_t)w;
  109|    188|    p[1] = (uint8_t)(w >> 8);
  110|    188|    p[2] = (uint8_t)(w >> 16);
  111|    188|    p[3] = (uint8_t)(w >> 24);
  112|    188|    p[4] = (uint8_t)(w >> 32);
  113|    188|    p[5] = (uint8_t)(w >> 40);
  114|    188|}
blake2s_prov.c:load32:
   27|  17.2M|{
   28|  17.2M|    DECLARE_IS_ENDIAN;
  ------------------
  |  |   25|  17.2M|#define DECLARE_IS_ENDIAN const int ossl_is_little_endian = __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
  ------------------
   29|       |
   30|  17.2M|    if (IS_LITTLE_ENDIAN) {
  ------------------
  |  |   26|  17.2M|#define IS_LITTLE_ENDIAN (ossl_is_little_endian)
  |  |  ------------------
  |  |  |  Branch (26:26): [True: 17.2M, Folded]
  |  |  ------------------
  ------------------
   31|  17.2M|        uint32_t w;
   32|  17.2M|        memcpy(&w, src, sizeof(w));
   33|  17.2M|        return w;
   34|  17.2M|    } else {
   35|      0|        uint32_t w = ((uint32_t)src[0])
   36|      0|            | ((uint32_t)src[1] << 8)
   37|      0|            | ((uint32_t)src[2] << 16)
   38|      0|            | ((uint32_t)src[3] << 24);
   39|      0|        return w;
   40|      0|    }
   41|  17.2M|}
blake2s_prov.c:rotr32:
  117|   345M|{
  118|   345M|    return (w >> c) | (w << (32 - c));
  119|   345M|}

blake2_prov.c:blake2s256_freectx:
  115|     94|    {                                                                                                             \
  116|     94|        struct blake##variant##_md_data_st *ctx;                                                                  \
  117|     94|                                                                                                                  \
  118|     94|        ctx = (struct blake##variant##_md_data_st *)vctx;                                                         \
  119|     94|        OPENSSL_clear_free(ctx, sizeof(*ctx));                                                                    \
  ------------------
  |  |  134|     94|    CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  120|     94|    }                                                                                                             \
blake2_prov.c:blake2s256_get_params:
  166|      1|    {                                                                                                             \
  167|      1|        return ossl_digest_default_get_params(params, BLAKE##VARIANT##_BLOCKBYTES, BLAKE##VARIANT##_OUTBYTES, 0); \
  ------------------
  |  |   19|      1|#define BLAKE2S_BLOCKBYTES 64
  ------------------
                      return ossl_digest_default_get_params(params, BLAKE##VARIANT##_BLOCKBYTES, BLAKE##VARIANT##_OUTBYTES, 0); \
  ------------------
  |  |   20|      1|#define BLAKE2S_OUTBYTES 32
  ------------------
  168|      1|    }                                                                                                             \
blake2_prov.c:blake2s256_internal_init:
  101|    188|    {                                                                                                             \
  102|    188|        return ossl_prov_is_running() && ossl_blake##variant##_set_ctx_params(ctx, params)                        \
  ------------------
  |  Branch (102:16): [True: 188, False: 0]
  |  Branch (102:42): [True: 188, False: 0]
  ------------------
  103|    188|            && ossl_blake##variantsize##_init(ctx);                                                               \
  ------------------
  |  Branch (103:16): [True: 188, False: 0]
  ------------------
  104|    188|    }                                                                                                             \
blake2_prov.c:ossl_blake2s256_init:
   83|    188|    {                                                                                                             \
   84|    188|        struct blake##variant##_md_data_st *mdctx = ctx;                                                          \
   85|    188|        uint8_t digest_length = mdctx->params.digest_length;                                                      \
   86|    188|                                                                                                                  \
   87|    188|        ossl_blake##variant##_param_init(&mdctx->params);                                                         \
   88|    188|        if (digest_length != 0)                                                                                   \
  ------------------
  |  Branch (88:13): [True: 94, False: 94]
  ------------------
   89|    188|            mdctx->params.digest_length = digest_length;                                                          \
   90|    188|        return ossl_blake##variant##_init(&mdctx->ctx, &mdctx->params);                                           \
   91|    188|    }                                                                                                             \
blake2_prov.c:blake_gettable_ctx_params:
   26|    179|{
   27|    179|    return blake_get_ctx_params_list;
   28|    179|}
blake2_prov.c:blake2b512_freectx:
  115|     85|    {                                                                                                             \
  116|     85|        struct blake##variant##_md_data_st *ctx;                                                                  \
  117|     85|                                                                                                                  \
  118|     85|        ctx = (struct blake##variant##_md_data_st *)vctx;                                                         \
  119|     85|        OPENSSL_clear_free(ctx, sizeof(*ctx));                                                                    \
  ------------------
  |  |  134|     85|    CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  120|     85|    }                                                                                                             \
blake2_prov.c:blake2b512_get_params:
  166|      1|    {                                                                                                             \
  167|      1|        return ossl_digest_default_get_params(params, BLAKE##VARIANT##_BLOCKBYTES, BLAKE##VARIANT##_OUTBYTES, 0); \
  ------------------
  |  |   25|      1|#define BLAKE2B_BLOCKBYTES 128
  ------------------
                      return ossl_digest_default_get_params(params, BLAKE##VARIANT##_BLOCKBYTES, BLAKE##VARIANT##_OUTBYTES, 0); \
  ------------------
  |  |   26|      1|#define BLAKE2B_OUTBYTES 64
  ------------------
  168|      1|    }                                                                                                             \
blake2_prov.c:blake2b512_internal_init:
  101|    170|    {                                                                                                             \
  102|    170|        return ossl_prov_is_running() && ossl_blake##variant##_set_ctx_params(ctx, params)                        \
  ------------------
  |  Branch (102:16): [True: 170, False: 0]
  |  Branch (102:42): [True: 170, False: 0]
  ------------------
  103|    170|            && ossl_blake##variantsize##_init(ctx);                                                               \
  ------------------
  |  Branch (103:16): [True: 170, False: 0]
  ------------------
  104|    170|    }                                                                                                             \
blake2_prov.c:ossl_blake2b512_init:
   83|    170|    {                                                                                                             \
   84|    170|        struct blake##variant##_md_data_st *mdctx = ctx;                                                          \
   85|    170|        uint8_t digest_length = mdctx->params.digest_length;                                                      \
   86|    170|                                                                                                                  \
   87|    170|        ossl_blake##variant##_param_init(&mdctx->params);                                                         \
   88|    170|        if (digest_length != 0)                                                                                   \
  ------------------
  |  Branch (88:13): [True: 85, False: 85]
  ------------------
   89|    170|            mdctx->params.digest_length = digest_length;                                                          \
   90|    170|        return ossl_blake##variant##_init(&mdctx->ctx, &mdctx->params);                                           \
   91|    170|    }                                                                                                             \

blake2_prov.c:blake_get_ctx_params_decoder:
   34|    179|{
   35|    179|    const char *s;
   36|       |
   37|    179|    memset(r, 0, sizeof(*r));
   38|    179|    if (p != NULL)
  ------------------
  |  Branch (38:9): [True: 179, False: 0]
  ------------------
   39|    358|        for (; (s = p->key) != NULL; p++)
  ------------------
  |  Branch (39:16): [True: 179, False: 179]
  ------------------
   40|    179|            if (ossl_likely(strcmp("size", s + 0) == 0)) {
  ------------------
  |  |   22|    179|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (22:24): [True: 179, False: 0]
  |  |  ------------------
  ------------------
   41|       |                /* OSSL_DIGEST_PARAM_SIZE */
   42|    179|                if (ossl_unlikely(r->size != NULL)) {
  ------------------
  |  |   23|    179|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 179]
  |  |  ------------------
  ------------------
   43|      0|                    ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|      0|        ERR_set_error)
  ------------------
                                  ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  101|      0|#define ERR_LIB_PROV 57
  ------------------
                                  ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  148|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
   44|      0|                                   "param %s is repeated", s);
   45|      0|                    return 0;
   46|      0|                }
   47|    179|                r->size = (OSSL_PARAM *)p;
   48|    179|            }
   49|    179|    return 1;
   50|    179|}
blake2_prov.c:blake_set_ctx_params_decoder:
   76|    358|{
   77|    358|    const char *s;
   78|       |
   79|    358|    memset(r, 0, sizeof(*r));
   80|    358|    if (p != NULL)
  ------------------
  |  Branch (80:9): [True: 0, False: 358]
  ------------------
   81|      0|        for (; (s = p->key) != NULL; p++)
  ------------------
  |  Branch (81:16): [True: 0, False: 0]
  ------------------
   82|      0|            if (ossl_likely(strcmp("size", s + 0) == 0)) {
  ------------------
  |  |   22|      0|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (22:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   83|       |                /* OSSL_DIGEST_PARAM_SIZE */
   84|      0|                if (ossl_unlikely(r->size != NULL)) {
  ------------------
  |  |   23|      0|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   85|      0|                    ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|      0|        ERR_set_error)
  ------------------
                                  ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  101|      0|#define ERR_LIB_PROV 57
  ------------------
                                  ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  148|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
   86|      0|                                   "param %s is repeated", s);
   87|      0|                    return 0;
   88|      0|                }
   89|      0|                r->size = (OSSL_PARAM *)p;
   90|      0|            }
   91|    358|    return 1;
   92|    358|}

ossl_blake2b_param_init:
   83|    170|{
   84|    170|    P->digest_length = BLAKE2B_DIGEST_LENGTH;
  ------------------
  |  |   80|    170|#define BLAKE2B_DIGEST_LENGTH 64
  ------------------
   85|    170|    P->key_length = 0;
   86|    170|    P->fanout = 1;
   87|    170|    P->depth = 1;
   88|    170|    store32(P->leaf_length, 0);
   89|    170|    store64(P->node_offset, 0);
   90|    170|    P->node_depth = 0;
   91|    170|    P->inner_length = 0;
   92|    170|    memset(P->reserved, 0, sizeof(P->reserved));
   93|    170|    memset(P->salt, 0, sizeof(P->salt));
   94|    170|    memset(P->personal, 0, sizeof(P->personal));
   95|    170|}
ossl_blake2b_init:
  126|    170|{
  127|    170|    blake2b_init_param(c, P);
  128|    170|    return 1;
  129|    170|}
ossl_blake2b_update:
  258|    170|{
  259|    170|    const uint8_t *in = data;
  260|    170|    size_t fill;
  261|       |
  262|       |    /*
  263|       |     * Intuitively one would expect intermediate buffer, c->buf, to
  264|       |     * store incomplete blocks. But in this case we are interested to
  265|       |     * temporarily stash even complete blocks, because last one in the
  266|       |     * stream has to be treated in special way, and at this point we
  267|       |     * don't know if last block in *this* call is last one "ever". This
  268|       |     * is the reason for why |datalen| is compared as >, and not >=.
  269|       |     */
  270|    170|    fill = sizeof(c->buf) - c->buflen;
  271|    170|    if (datalen > fill) {
  ------------------
  |  Branch (271:9): [True: 170, False: 0]
  ------------------
  272|    170|        if (c->buflen) {
  ------------------
  |  Branch (272:13): [True: 85, False: 85]
  ------------------
  273|     85|            memcpy(c->buf + c->buflen, in, fill); /* Fill buffer */
  274|     85|            blake2b_compress(c, c->buf, BLAKE2B_BLOCKBYTES);
  ------------------
  |  |   25|     85|#define BLAKE2B_BLOCKBYTES 128
  ------------------
  275|     85|            c->buflen = 0;
  276|     85|            in += fill;
  277|     85|            datalen -= fill;
  278|     85|        }
  279|    170|        if (datalen > BLAKE2B_BLOCKBYTES) {
  ------------------
  |  |   25|    170|#define BLAKE2B_BLOCKBYTES 128
  ------------------
  |  Branch (279:13): [True: 170, False: 0]
  ------------------
  280|    170|            size_t stashlen = datalen % BLAKE2B_BLOCKBYTES;
  ------------------
  |  |   25|    170|#define BLAKE2B_BLOCKBYTES 128
  ------------------
  281|       |            /*
  282|       |             * If |datalen| is a multiple of the blocksize, stash
  283|       |             * last complete block, it can be final one...
  284|       |             */
  285|    170|            stashlen = stashlen ? stashlen : BLAKE2B_BLOCKBYTES;
  ------------------
  |  |   25|    275|#define BLAKE2B_BLOCKBYTES 128
  ------------------
  |  Branch (285:24): [True: 65, False: 105]
  ------------------
  286|    170|            datalen -= stashlen;
  287|    170|            blake2b_compress(c, in, datalen);
  288|    170|            in += datalen;
  289|    170|            datalen = stashlen;
  290|    170|        }
  291|    170|    }
  292|       |
  293|    170|    assert(datalen <= BLAKE2B_BLOCKBYTES);
  294|       |
  295|    170|    memcpy(c->buf + c->buflen, in, datalen);
  296|    170|    c->buflen += datalen; /* Be lazy, do not compress */
  297|       |
  298|    170|    return 1;
  299|    170|}
ossl_blake2b_final:
  306|     85|{
  307|     85|    uint8_t outbuffer[BLAKE2B_OUTBYTES] = { 0 };
  308|     85|    uint8_t *target = outbuffer;
  309|     85|    int iter = (int)((c->outlen + 7) / 8);
  310|     85|    int i;
  311|       |
  312|       |    /* Avoid writing to the temporary buffer if possible */
  313|     85|    if ((c->outlen % sizeof(c->h[0])) == 0)
  ------------------
  |  Branch (313:9): [True: 85, False: 0]
  ------------------
  314|     85|        target = md;
  315|       |
  316|     85|    blake2b_set_lastblock(c);
  317|       |    /* Padding */
  318|     85|    memset(c->buf + c->buflen, 0, sizeof(c->buf) - c->buflen);
  319|     85|    blake2b_compress(c, c->buf, c->buflen);
  320|       |
  321|       |    /* Output full hash to buffer */
  322|    765|    for (i = 0; i < iter; ++i)
  ------------------
  |  Branch (322:17): [True: 680, False: 85]
  ------------------
  323|    680|        store64(target + sizeof(c->h[i]) * i, c->h[i]);
  324|       |
  325|     85|    if (target != md) {
  ------------------
  |  Branch (325:9): [True: 0, False: 85]
  ------------------
  326|      0|        memcpy(md, target, c->outlen);
  327|      0|        OPENSSL_cleanse(target, sizeof(outbuffer));
  328|      0|    }
  329|       |
  330|     85|    OPENSSL_cleanse(c, sizeof(BLAKE2B_CTX));
  331|     85|    return 1;
  332|     85|}
blake2b_prov.c:blake2b_init_param:
   65|    170|{
   66|    170|    size_t i;
   67|    170|    const uint8_t *p = (const uint8_t *)(P);
   68|       |
   69|    170|    blake2b_init0(S);
   70|    170|    S->outlen = P->digest_length;
   71|       |
   72|       |    /* The param struct is carefully hand packed, and should be 64 bytes on
   73|       |     * every platform. */
   74|    170|    assert(sizeof(BLAKE2B_PARAM) == 64);
   75|       |    /* IV XOR ParamBlock */
   76|  1.53k|    for (i = 0; i < 8; ++i) {
  ------------------
  |  Branch (76:17): [True: 1.36k, False: 170]
  ------------------
   77|  1.36k|        S->h[i] ^= load64(p + sizeof(S->h[i]) * i);
   78|  1.36k|    }
   79|    170|}
blake2b_prov.c:blake2b_init0:
   54|    170|{
   55|    170|    int i;
   56|       |
   57|    170|    memset(S, 0, sizeof(BLAKE2B_CTX));
   58|  1.53k|    for (i = 0; i < 8; ++i) {
  ------------------
  |  Branch (58:17): [True: 1.36k, False: 170]
  ------------------
   59|  1.36k|        S->h[i] = blake2b_IV[i];
   60|  1.36k|    }
   61|    170|}
blake2b_prov.c:blake2b_compress:
  156|    340|{
  157|    340|    uint64_t m[16];
  158|    340|    uint64_t v[16];
  159|    340|    int i;
  160|    340|    size_t increment;
  161|       |
  162|       |    /*
  163|       |     * There are two distinct usage vectors for this function:
  164|       |     *
  165|       |     * a) BLAKE2b_Update uses it to process complete blocks,
  166|       |     *    possibly more than one at a time;
  167|       |     *
  168|       |     * b) BLAK2b_Final uses it to process last block, always
  169|       |     *    single but possibly incomplete, in which case caller
  170|       |     *    pads input with zeros.
  171|       |     */
  172|    340|    assert(len < BLAKE2B_BLOCKBYTES || len % BLAKE2B_BLOCKBYTES == 0);
  173|       |
  174|       |    /*
  175|       |     * Since last block is always processed with separate call,
  176|       |     * |len| not being multiple of complete blocks can be observed
  177|       |     * only with |len| being less than BLAKE2B_BLOCKBYTES ("less"
  178|       |     * including even zero), which is why following assignment doesn't
  179|       |     * have to reside inside the main loop below.
  180|       |     */
  181|    340|    increment = len < BLAKE2B_BLOCKBYTES ? len : BLAKE2B_BLOCKBYTES;
  ------------------
  |  |   25|    340|#define BLAKE2B_BLOCKBYTES 128
  ------------------
                  increment = len < BLAKE2B_BLOCKBYTES ? len : BLAKE2B_BLOCKBYTES;
  ------------------
  |  |   25|    615|#define BLAKE2B_BLOCKBYTES 128
  ------------------
  |  Branch (181:17): [True: 65, False: 275]
  ------------------
  182|       |
  183|  3.06k|    for (i = 0; i < 8; ++i) {
  ------------------
  |  Branch (183:17): [True: 2.72k, False: 340]
  ------------------
  184|  2.72k|        v[i] = S->h[i];
  185|  2.72k|    }
  186|       |
  187|  1.01M|    do {
  188|  17.2M|        for (i = 0; i < 16; ++i) {
  ------------------
  |  Branch (188:21): [True: 16.2M, False: 1.01M]
  ------------------
  189|  16.2M|            m[i] = load64(blocks + i * sizeof(m[i]));
  190|  16.2M|        }
  191|       |
  192|       |        /* blake2b_increment_counter */
  193|  1.01M|        S->t[0] += increment;
  194|  1.01M|        S->t[1] += (S->t[0] < increment);
  195|       |
  196|  1.01M|        v[8] = blake2b_IV[0];
  197|  1.01M|        v[9] = blake2b_IV[1];
  198|  1.01M|        v[10] = blake2b_IV[2];
  199|  1.01M|        v[11] = blake2b_IV[3];
  200|  1.01M|        v[12] = S->t[0] ^ blake2b_IV[4];
  201|  1.01M|        v[13] = S->t[1] ^ blake2b_IV[5];
  202|  1.01M|        v[14] = S->f[0] ^ blake2b_IV[6];
  203|  1.01M|        v[15] = S->f[1] ^ blake2b_IV[7];
  204|  1.01M|#define G(r, i, a, b, c, d)                         \
  205|  1.01M|    do {                                            \
  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  208|  1.01M|        c = c + d;                                  \
  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  212|  1.01M|        c = c + d;                                  \
  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  214|  1.01M|    } while (0)
  215|  1.01M|#define ROUND(r)                           \
  216|  1.01M|    do {                                   \
  217|  1.01M|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  218|  1.01M|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  219|  1.01M|        G(r, 2, v[2], v[6], v[10], v[14]); \
  220|  1.01M|        G(r, 3, v[3], v[7], v[11], v[15]); \
  221|  1.01M|        G(r, 4, v[0], v[5], v[10], v[15]); \
  222|  1.01M|        G(r, 5, v[1], v[6], v[11], v[12]); \
  223|  1.01M|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  224|  1.01M|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  225|  1.01M|    } while (0)
  226|       |#if defined(OPENSSL_SMALL_FOOTPRINT)
  227|       |        /* 3x size reduction on x86_64, almost 7x on ARMv8, 9x on ARMv4 */
  228|       |        for (i = 0; i < 12; i++) {
  229|       |            ROUND(i);
  230|       |        }
  231|       |#else
  232|  1.01M|        ROUND(0);
  ------------------
  |  |  216|  1.01M|    do {                                   \
  |  |  217|  1.01M|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|  1.01M|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  219|  1.01M|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  220|  1.01M|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  221|  1.01M|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  222|  1.01M|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|  1.01M|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  224|  1.01M|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  225|  1.01M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (225:14): [Folded, False: 1.01M]
  |  |  ------------------
  ------------------
  233|  1.01M|        ROUND(1);
  ------------------
  |  |  216|  1.01M|    do {                                   \
  |  |  217|  1.01M|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|  1.01M|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  219|  1.01M|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  220|  1.01M|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  221|  1.01M|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  222|  1.01M|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|  1.01M|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  224|  1.01M|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  225|  1.01M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (225:14): [Folded, False: 1.01M]
  |  |  ------------------
  ------------------
  234|  1.01M|        ROUND(2);
  ------------------
  |  |  216|  1.01M|    do {                                   \
  |  |  217|  1.01M|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|  1.01M|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  219|  1.01M|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  220|  1.01M|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  221|  1.01M|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  222|  1.01M|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|  1.01M|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  224|  1.01M|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  225|  1.01M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (225:14): [Folded, False: 1.01M]
  |  |  ------------------
  ------------------
  235|  1.01M|        ROUND(3);
  ------------------
  |  |  216|  1.01M|    do {                                   \
  |  |  217|  1.01M|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|  1.01M|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  219|  1.01M|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  220|  1.01M|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  221|  1.01M|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  222|  1.01M|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|  1.01M|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  224|  1.01M|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  225|  1.01M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (225:14): [Folded, False: 1.01M]
  |  |  ------------------
  ------------------
  236|  1.01M|        ROUND(4);
  ------------------
  |  |  216|  1.01M|    do {                                   \
  |  |  217|  1.01M|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|  1.01M|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  219|  1.01M|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  220|  1.01M|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  221|  1.01M|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  222|  1.01M|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|  1.01M|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  224|  1.01M|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  225|  1.01M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (225:14): [Folded, False: 1.01M]
  |  |  ------------------
  ------------------
  237|  1.01M|        ROUND(5);
  ------------------
  |  |  216|  1.01M|    do {                                   \
  |  |  217|  1.01M|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|  1.01M|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  219|  1.01M|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  220|  1.01M|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  221|  1.01M|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  222|  1.01M|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|  1.01M|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  224|  1.01M|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  225|  1.01M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (225:14): [Folded, False: 1.01M]
  |  |  ------------------
  ------------------
  238|  1.01M|        ROUND(6);
  ------------------
  |  |  216|  1.01M|    do {                                   \
  |  |  217|  1.01M|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|  1.01M|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  219|  1.01M|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  220|  1.01M|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  221|  1.01M|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  222|  1.01M|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|  1.01M|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  224|  1.01M|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  225|  1.01M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (225:14): [Folded, False: 1.01M]
  |  |  ------------------
  ------------------
  239|  1.01M|        ROUND(7);
  ------------------
  |  |  216|  1.01M|    do {                                   \
  |  |  217|  1.01M|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|  1.01M|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  219|  1.01M|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  220|  1.01M|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  221|  1.01M|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  222|  1.01M|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|  1.01M|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  224|  1.01M|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  225|  1.01M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (225:14): [Folded, False: 1.01M]
  |  |  ------------------
  ------------------
  240|  1.01M|        ROUND(8);
  ------------------
  |  |  216|  1.01M|    do {                                   \
  |  |  217|  1.01M|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|  1.01M|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  219|  1.01M|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  220|  1.01M|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  221|  1.01M|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  222|  1.01M|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|  1.01M|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  224|  1.01M|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  225|  1.01M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (225:14): [Folded, False: 1.01M]
  |  |  ------------------
  ------------------
  241|  1.01M|        ROUND(9);
  ------------------
  |  |  216|  1.01M|    do {                                   \
  |  |  217|  1.01M|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|  1.01M|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  219|  1.01M|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  220|  1.01M|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  221|  1.01M|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  222|  1.01M|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|  1.01M|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  224|  1.01M|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  225|  1.01M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (225:14): [Folded, False: 1.01M]
  |  |  ------------------
  ------------------
  242|  1.01M|        ROUND(10);
  ------------------
  |  |  216|  1.01M|    do {                                   \
  |  |  217|  1.01M|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|  1.01M|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  219|  1.01M|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  220|  1.01M|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  221|  1.01M|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  222|  1.01M|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|  1.01M|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  224|  1.01M|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  225|  1.01M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (225:14): [Folded, False: 1.01M]
  |  |  ------------------
  ------------------
  243|  1.01M|        ROUND(11);
  ------------------
  |  |  216|  1.01M|    do {                                   \
  |  |  217|  1.01M|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|  1.01M|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  219|  1.01M|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  220|  1.01M|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  221|  1.01M|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  222|  1.01M|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|  1.01M|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  224|  1.01M|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  205|  1.01M|    do {                                            \
  |  |  |  |  206|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|  1.01M|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|  1.01M|        c = c + d;                                  \
  |  |  |  |  209|  1.01M|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|  1.01M|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|  1.01M|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|  1.01M|        c = c + d;                                  \
  |  |  |  |  213|  1.01M|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|  1.01M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 1.01M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  225|  1.01M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (225:14): [Folded, False: 1.01M]
  |  |  ------------------
  ------------------
  244|  1.01M|#endif
  245|       |
  246|  9.15M|        for (i = 0; i < 8; ++i) {
  ------------------
  |  Branch (246:21): [True: 8.13M, False: 1.01M]
  ------------------
  247|  8.13M|            S->h[i] = v[i] ^= v[i + 8] ^ S->h[i];
  248|  8.13M|        }
  249|  1.01M|#undef G
  250|  1.01M|#undef ROUND
  251|  1.01M|        blocks += increment;
  252|  1.01M|        len -= increment;
  253|  1.01M|    } while (len);
  ------------------
  |  Branch (253:14): [True: 1.01M, False: 340]
  ------------------
  254|    340|}
blake2b_prov.c:blake2b_set_lastblock:
   48|     85|{
   49|     85|    S->f[0] = -1;
   50|     85|}

ossl_blake2s_param_init:
   77|    188|{
   78|    188|    P->digest_length = BLAKE2S_DIGEST_LENGTH;
  ------------------
  |  |   81|    188|#define BLAKE2S_DIGEST_LENGTH 32
  ------------------
   79|    188|    P->key_length = 0;
   80|    188|    P->fanout = 1;
   81|    188|    P->depth = 1;
   82|    188|    store32(P->leaf_length, 0);
   83|    188|    store48(P->node_offset, 0);
   84|    188|    P->node_depth = 0;
   85|    188|    P->inner_length = 0;
   86|    188|    memset(P->salt, 0, sizeof(P->salt));
   87|    188|    memset(P->personal, 0, sizeof(P->personal));
   88|    188|}
ossl_blake2s_init:
  119|    188|{
  120|    188|    blake2s_init_param(c, P);
  121|    188|    return 1;
  122|    188|}
ossl_blake2s_update:
  249|    188|{
  250|    188|    const uint8_t *in = data;
  251|    188|    size_t fill;
  252|       |
  253|       |    /*
  254|       |     * Intuitively one would expect intermediate buffer, c->buf, to
  255|       |     * store incomplete blocks. But in this case we are interested to
  256|       |     * temporarily stash even complete blocks, because last one in the
  257|       |     * stream has to be treated in special way, and at this point we
  258|       |     * don't know if last block in *this* call is last one "ever". This
  259|       |     * is the reason for why |datalen| is compared as >, and not >=.
  260|       |     */
  261|    188|    fill = sizeof(c->buf) - c->buflen;
  262|    188|    if (datalen > fill) {
  ------------------
  |  Branch (262:9): [True: 188, False: 0]
  ------------------
  263|    188|        if (c->buflen) {
  ------------------
  |  Branch (263:13): [True: 94, False: 94]
  ------------------
  264|     94|            memcpy(c->buf + c->buflen, in, fill); /* Fill buffer */
  265|     94|            blake2s_compress(c, c->buf, BLAKE2S_BLOCKBYTES);
  ------------------
  |  |   19|     94|#define BLAKE2S_BLOCKBYTES 64
  ------------------
  266|     94|            c->buflen = 0;
  267|     94|            in += fill;
  268|     94|            datalen -= fill;
  269|     94|        }
  270|    188|        if (datalen > BLAKE2S_BLOCKBYTES) {
  ------------------
  |  |   19|    188|#define BLAKE2S_BLOCKBYTES 64
  ------------------
  |  Branch (270:13): [True: 188, False: 0]
  ------------------
  271|    188|            size_t stashlen = datalen % BLAKE2S_BLOCKBYTES;
  ------------------
  |  |   19|    188|#define BLAKE2S_BLOCKBYTES 64
  ------------------
  272|       |            /*
  273|       |             * If |datalen| is a multiple of the blocksize, stash
  274|       |             * last complete block, it can be final one...
  275|       |             */
  276|    188|            stashlen = stashlen ? stashlen : BLAKE2S_BLOCKBYTES;
  ------------------
  |  |   19|    313|#define BLAKE2S_BLOCKBYTES 64
  ------------------
  |  Branch (276:24): [True: 63, False: 125]
  ------------------
  277|    188|            datalen -= stashlen;
  278|    188|            blake2s_compress(c, in, datalen);
  279|    188|            in += datalen;
  280|    188|            datalen = stashlen;
  281|    188|        }
  282|    188|    }
  283|       |
  284|    188|    assert(datalen <= BLAKE2S_BLOCKBYTES);
  285|       |
  286|    188|    memcpy(c->buf + c->buflen, in, datalen);
  287|    188|    c->buflen += datalen; /* Be lazy, do not compress */
  288|       |
  289|    188|    return 1;
  290|    188|}
ossl_blake2s_final:
  297|     94|{
  298|     94|    uint8_t outbuffer[BLAKE2S_OUTBYTES] = { 0 };
  299|     94|    uint8_t *target = outbuffer;
  300|     94|    int iter = (int)((c->outlen + 3) / 4);
  301|     94|    int i;
  302|       |
  303|       |    /* Avoid writing to the temporary buffer if possible */
  304|     94|    if ((c->outlen % sizeof(c->h[0])) == 0)
  ------------------
  |  Branch (304:9): [True: 94, False: 0]
  ------------------
  305|     94|        target = md;
  306|       |
  307|     94|    blake2s_set_lastblock(c);
  308|       |    /* Padding */
  309|     94|    memset(c->buf + c->buflen, 0, sizeof(c->buf) - c->buflen);
  310|     94|    blake2s_compress(c, c->buf, c->buflen);
  311|       |
  312|       |    /* Output full hash to buffer */
  313|    846|    for (i = 0; i < iter; ++i)
  ------------------
  |  Branch (313:17): [True: 752, False: 94]
  ------------------
  314|    752|        store32(target + sizeof(c->h[i]) * i, c->h[i]);
  315|       |
  316|     94|    if (target != md) {
  ------------------
  |  Branch (316:9): [True: 0, False: 94]
  ------------------
  317|      0|        memcpy(md, target, c->outlen);
  318|      0|        OPENSSL_cleanse(target, sizeof(outbuffer));
  319|      0|    }
  320|       |
  321|     94|    OPENSSL_cleanse(c, sizeof(BLAKE2S_CTX));
  322|     94|    return 1;
  323|     94|}
blake2s_prov.c:blake2s_init_param:
   60|    188|{
   61|    188|    size_t i;
   62|    188|    const uint8_t *p = (const uint8_t *)(P);
   63|       |
   64|    188|    blake2s_init0(S);
   65|    188|    S->outlen = P->digest_length;
   66|       |
   67|       |    /* The param struct is carefully hand packed, and should be 32 bytes on
   68|       |     * every platform. */
   69|    188|    assert(sizeof(BLAKE2S_PARAM) == 32);
   70|       |    /* IV XOR ParamBlock */
   71|  1.69k|    for (i = 0; i < 8; ++i) {
  ------------------
  |  Branch (71:17): [True: 1.50k, False: 188]
  ------------------
   72|  1.50k|        S->h[i] ^= load32(&p[i * 4]);
   73|  1.50k|    }
   74|    188|}
blake2s_prov.c:blake2s_init0:
   49|    188|{
   50|    188|    int i;
   51|       |
   52|    188|    memset(S, 0, sizeof(BLAKE2S_CTX));
   53|  1.69k|    for (i = 0; i < 8; ++i) {
  ------------------
  |  Branch (53:17): [True: 1.50k, False: 188]
  ------------------
   54|  1.50k|        S->h[i] = blake2s_IV[i];
   55|  1.50k|    }
   56|    188|}
blake2s_prov.c:blake2s_compress:
  149|    376|{
  150|    376|    uint32_t m[16];
  151|    376|    uint32_t v[16];
  152|    376|    size_t i;
  153|    376|    uint32_t increment;
  154|       |
  155|       |    /*
  156|       |     * There are two distinct usage vectors for this function:
  157|       |     *
  158|       |     * a) BLAKE2s_Update uses it to process complete blocks,
  159|       |     *    possibly more than one at a time;
  160|       |     *
  161|       |     * b) BLAK2s_Final uses it to process last block, always
  162|       |     *    single but possibly incomplete, in which case caller
  163|       |     *    pads input with zeros.
  164|       |     */
  165|    376|    assert(len < BLAKE2S_BLOCKBYTES || len % BLAKE2S_BLOCKBYTES == 0);
  166|       |
  167|       |    /*
  168|       |     * Since last block is always processed with separate call,
  169|       |     * |len| not being multiple of complete blocks can be observed
  170|       |     * only with |len| being less than BLAKE2S_BLOCKBYTES ("less"
  171|       |     * including even zero), which is why following assignment doesn't
  172|       |     * have to reside inside the main loop below.
  173|       |     */
  174|    376|    increment = len < BLAKE2S_BLOCKBYTES ? (uint32_t)len : BLAKE2S_BLOCKBYTES;
  ------------------
  |  |   19|    376|#define BLAKE2S_BLOCKBYTES 64
  ------------------
                  increment = len < BLAKE2S_BLOCKBYTES ? (uint32_t)len : BLAKE2S_BLOCKBYTES;
  ------------------
  |  |   19|    689|#define BLAKE2S_BLOCKBYTES 64
  ------------------
  |  Branch (174:17): [True: 63, False: 313]
  ------------------
  175|       |
  176|  3.38k|    for (i = 0; i < 8; ++i) {
  ------------------
  |  Branch (176:17): [True: 3.00k, False: 376]
  ------------------
  177|  3.00k|        v[i] = S->h[i];
  178|  3.00k|    }
  179|       |
  180|  1.08M|    do {
  181|  18.3M|        for (i = 0; i < 16; ++i) {
  ------------------
  |  Branch (181:21): [True: 17.2M, False: 1.08M]
  ------------------
  182|  17.2M|            m[i] = load32(blocks + i * sizeof(m[i]));
  183|  17.2M|        }
  184|       |
  185|       |        /* blake2s_increment_counter */
  186|  1.08M|        S->t[0] += increment;
  187|  1.08M|        S->t[1] += (S->t[0] < increment);
  188|       |
  189|  1.08M|        v[8] = blake2s_IV[0];
  190|  1.08M|        v[9] = blake2s_IV[1];
  191|  1.08M|        v[10] = blake2s_IV[2];
  192|  1.08M|        v[11] = blake2s_IV[3];
  193|  1.08M|        v[12] = S->t[0] ^ blake2s_IV[4];
  194|  1.08M|        v[13] = S->t[1] ^ blake2s_IV[5];
  195|  1.08M|        v[14] = S->f[0] ^ blake2s_IV[6];
  196|  1.08M|        v[15] = S->f[1] ^ blake2s_IV[7];
  197|  1.08M|#define G(r, i, a, b, c, d)                         \
  198|  1.08M|    do {                                            \
  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  201|  1.08M|        c = c + d;                                  \
  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  205|  1.08M|        c = c + d;                                  \
  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  207|  1.08M|    } while (0)
  208|  1.08M|#define ROUND(r)                           \
  209|  1.08M|    do {                                   \
  210|  1.08M|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  211|  1.08M|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  212|  1.08M|        G(r, 2, v[2], v[6], v[10], v[14]); \
  213|  1.08M|        G(r, 3, v[3], v[7], v[11], v[15]); \
  214|  1.08M|        G(r, 4, v[0], v[5], v[10], v[15]); \
  215|  1.08M|        G(r, 5, v[1], v[6], v[11], v[12]); \
  216|  1.08M|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  217|  1.08M|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  218|  1.08M|    } while (0)
  219|       |#if defined(OPENSSL_SMALL_FOOTPRINT)
  220|       |        /* almost 3x reduction on x86_64, 4.5x on ARMv8, 4x on ARMv4 */
  221|       |        for (i = 0; i < 10; i++) {
  222|       |            ROUND(i);
  223|       |        }
  224|       |#else
  225|  1.08M|        ROUND(0);
  ------------------
  |  |  209|  1.08M|    do {                                   \
  |  |  210|  1.08M|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  211|  1.08M|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  212|  1.08M|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  213|  1.08M|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  214|  1.08M|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  215|  1.08M|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  216|  1.08M|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  217|  1.08M|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|  1.08M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (218:14): [Folded, False: 1.08M]
  |  |  ------------------
  ------------------
  226|  1.08M|        ROUND(1);
  ------------------
  |  |  209|  1.08M|    do {                                   \
  |  |  210|  1.08M|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  211|  1.08M|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  212|  1.08M|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  213|  1.08M|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  214|  1.08M|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  215|  1.08M|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  216|  1.08M|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  217|  1.08M|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|  1.08M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (218:14): [Folded, False: 1.08M]
  |  |  ------------------
  ------------------
  227|  1.08M|        ROUND(2);
  ------------------
  |  |  209|  1.08M|    do {                                   \
  |  |  210|  1.08M|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  211|  1.08M|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  212|  1.08M|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  213|  1.08M|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  214|  1.08M|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  215|  1.08M|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  216|  1.08M|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  217|  1.08M|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|  1.08M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (218:14): [Folded, False: 1.08M]
  |  |  ------------------
  ------------------
  228|  1.08M|        ROUND(3);
  ------------------
  |  |  209|  1.08M|    do {                                   \
  |  |  210|  1.08M|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  211|  1.08M|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  212|  1.08M|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  213|  1.08M|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  214|  1.08M|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  215|  1.08M|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  216|  1.08M|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  217|  1.08M|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|  1.08M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (218:14): [Folded, False: 1.08M]
  |  |  ------------------
  ------------------
  229|  1.08M|        ROUND(4);
  ------------------
  |  |  209|  1.08M|    do {                                   \
  |  |  210|  1.08M|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  211|  1.08M|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  212|  1.08M|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  213|  1.08M|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  214|  1.08M|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  215|  1.08M|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  216|  1.08M|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  217|  1.08M|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|  1.08M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (218:14): [Folded, False: 1.08M]
  |  |  ------------------
  ------------------
  230|  1.08M|        ROUND(5);
  ------------------
  |  |  209|  1.08M|    do {                                   \
  |  |  210|  1.08M|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  211|  1.08M|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  212|  1.08M|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  213|  1.08M|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  214|  1.08M|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  215|  1.08M|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  216|  1.08M|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  217|  1.08M|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|  1.08M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (218:14): [Folded, False: 1.08M]
  |  |  ------------------
  ------------------
  231|  1.08M|        ROUND(6);
  ------------------
  |  |  209|  1.08M|    do {                                   \
  |  |  210|  1.08M|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  211|  1.08M|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  212|  1.08M|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  213|  1.08M|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  214|  1.08M|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  215|  1.08M|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  216|  1.08M|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  217|  1.08M|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|  1.08M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (218:14): [Folded, False: 1.08M]
  |  |  ------------------
  ------------------
  232|  1.08M|        ROUND(7);
  ------------------
  |  |  209|  1.08M|    do {                                   \
  |  |  210|  1.08M|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  211|  1.08M|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  212|  1.08M|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  213|  1.08M|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  214|  1.08M|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  215|  1.08M|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  216|  1.08M|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  217|  1.08M|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|  1.08M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (218:14): [Folded, False: 1.08M]
  |  |  ------------------
  ------------------
  233|  1.08M|        ROUND(8);
  ------------------
  |  |  209|  1.08M|    do {                                   \
  |  |  210|  1.08M|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  211|  1.08M|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  212|  1.08M|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  213|  1.08M|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  214|  1.08M|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  215|  1.08M|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  216|  1.08M|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  217|  1.08M|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|  1.08M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (218:14): [Folded, False: 1.08M]
  |  |  ------------------
  ------------------
  234|  1.08M|        ROUND(9);
  ------------------
  |  |  209|  1.08M|    do {                                   \
  |  |  210|  1.08M|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  211|  1.08M|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  212|  1.08M|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  213|  1.08M|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  214|  1.08M|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  215|  1.08M|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  216|  1.08M|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  217|  1.08M|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  198|  1.08M|    do {                                            \
  |  |  |  |  199|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.08M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.08M|        c = c + d;                                  \
  |  |  |  |  202|  1.08M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.08M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.08M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.08M|        c = c + d;                                  \
  |  |  |  |  206|  1.08M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.08M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|  1.08M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (218:14): [Folded, False: 1.08M]
  |  |  ------------------
  ------------------
  235|  1.08M|#endif
  236|       |
  237|  9.72M|        for (i = 0; i < 8; ++i) {
  ------------------
  |  Branch (237:21): [True: 8.64M, False: 1.08M]
  ------------------
  238|  8.64M|            S->h[i] = v[i] ^= v[i + 8] ^ S->h[i];
  239|  8.64M|        }
  240|  1.08M|#undef G
  241|  1.08M|#undef ROUND
  242|  1.08M|        blocks += increment;
  243|  1.08M|        len -= increment;
  244|  1.08M|    } while (len);
  ------------------
  |  Branch (244:14): [True: 1.08M, False: 376]
  ------------------
  245|    376|}
blake2s_prov.c:blake2s_set_lastblock:
   43|     94|{
   44|     94|    S->f[0] = -1;
   45|     94|}

cshake_prov.c:cshake_128_newctx:
  479|      1|    {                                                                               \
  480|      1|        return cshake_newctx(provctx, bitlen);                                      \
  481|      1|    }                                                                               \
cshake_prov.c:cshake_newctx:
  203|      3|{
  204|      3|    CSHAKE_CTX *ctx;
  205|       |
  206|      3|    if (ossl_unlikely(!ossl_prov_is_running()))
  ------------------
  |  |   23|      3|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  207|      0|        return NULL;
  208|      3|    ctx = OPENSSL_zalloc(sizeof(*ctx));
  ------------------
  |  |  113|      3|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  209|      3|    if (ctx != NULL) {
  ------------------
  |  Branch (209:9): [True: 3, False: 0]
  ------------------
  210|      3|        ctx->mdctx = EVP_MD_CTX_create();
  ------------------
  |  |  630|      3|#define EVP_MD_CTX_create() EVP_MD_CTX_new()
  ------------------
  211|      3|        if (ctx->mdctx == NULL) {
  ------------------
  |  Branch (211:13): [True: 0, False: 3]
  ------------------
  212|      0|            OPENSSL_free(ctx);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  213|      0|            return NULL;
  214|      0|        }
  215|      3|        ctx->bitlen = bitlen;
  216|      3|        ctx->libctx = PROV_LIBCTX_OF(provctx);
  ------------------
  |  |   31|      3|    ossl_prov_ctx_get0_libctx((provctx))
  ------------------
  217|      3|    }
  218|      3|    return ctx;
  219|      3|}
cshake_prov.c:cshake_init:
  266|      6|{
  267|      6|    CSHAKE_CTX *ctx = (CSHAKE_CTX *)vctx;
  268|       |
  269|      6|    if (ossl_unlikely(!ossl_prov_is_running()))
  ------------------
  |  |   23|      6|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 6]
  |  |  ------------------
  ------------------
  270|      0|        return 0;
  271|      6|    ctx->inited = 0;
  272|      6|    ctx->xoflen = (ctx->bitlen == 128) ? 32 : 64; /* Set default values here */
  ------------------
  |  Branch (272:19): [True: 2, False: 4]
  ------------------
  273|      6|    cshake_set_func_encode_string(NULL, &ctx->func, &ctx->funclen);
  274|       |    cshake_set_encode_string(NULL, ctx->custom, sizeof(ctx->custom), &ctx->customlen);
  275|      6|    return cshake_set_ctx_params(vctx, params);
  276|      6|}
cshake_prov.c:cshake_set_func_encode_string:
  100|      6|{
  101|       |    /*
  102|       |     * A list of valid function names to encoded string mappings
  103|       |     * See NIST SP800-185 Section 3.4
  104|       |     */
  105|      6|    static NAME_ENCODE_MAP functionNameMap[] = {
  106|      6|        { "", empty_encoded_string, sizeof(empty_encoded_string) },
  107|      6|        { "KMAC", kmac_encoded_string, sizeof(kmac_encoded_string) },
  108|      6|        { "TupleHash", tuplehash_encoded_string, sizeof(tuplehash_encoded_string) },
  109|      6|        { "ParallelHash", parallelhash_encoded_string, sizeof(parallelhash_encoded_string) },
  110|      6|        { NULL, NULL, 0 }
  111|      6|    };
  112|       |
  113|      6|    *out = NULL;
  114|      6|    *outlen = 0;
  115|       |    /*
  116|       |     * Don't encode an empty string here - this is done manually later only when
  117|       |     * one of the strings is not empty. If both are empty then we don't want it
  118|       |     * to encode at all.
  119|       |     */
  120|      6|    if (in == NULL || in[0] == 0)
  ------------------
  |  Branch (120:9): [True: 6, False: 0]
  |  Branch (120:23): [True: 0, False: 0]
  ------------------
  121|      6|        return 1;
  122|      0|    for (int i = 1; functionNameMap[i].name != NULL; ++i) {
  ------------------
  |  Branch (122:21): [True: 0, False: 0]
  ------------------
  123|      0|        if (functionNameMap[i].name[0] == in[0]) {
  ------------------
  |  Branch (123:13): [True: 0, False: 0]
  ------------------
  124|      0|            if (OPENSSL_strcasecmp(functionNameMap[i].name, in) == 0) {
  ------------------
  |  Branch (124:17): [True: 0, False: 0]
  ------------------
  125|      0|                *out = functionNameMap[i].encoding;
  126|      0|                *outlen = functionNameMap[i].encodinglen;
  127|      0|                return 1;
  128|      0|            }
  129|      0|            return 0; /* Name does not match a known name */
  130|      0|        }
  131|      0|    }
  132|      0|    return 0; /* Name not found */
  133|      0|}
cshake_prov.c:cshake_set_encode_string:
  137|      6|{
  138|      6|    size_t inlen;
  139|       |
  140|      6|    if (*outlen != 0)
  ------------------
  |  Branch (140:9): [True: 0, False: 6]
  ------------------
  141|      0|        OPENSSL_cleanse(out, outmax);
  142|      6|    *outlen = 0;
  143|      6|    if (in == NULL)
  ------------------
  |  Branch (143:9): [True: 6, False: 0]
  ------------------
  144|      6|        return 1;
  145|       |
  146|      0|    inlen = strlen(in);
  147|       |    /*
  148|       |     * Don't encode an empty string here - this is done manually later only when
  149|       |     * one of the strings is not empty. If both are empty then we don't want it
  150|       |     * to encode at all.
  151|       |     */
  152|      0|    if (inlen == 0)
  ------------------
  |  Branch (152:9): [True: 0, False: 0]
  ------------------
  153|      0|        return 1;
  154|      0|    if (inlen >= CSHAKE_MAX_STRING)
  ------------------
  |  |   41|      0|#define CSHAKE_MAX_STRING 512
  ------------------
  |  Branch (154:9): [True: 0, False: 0]
  ------------------
  155|      0|        return 0;
  156|      0|    return ossl_sp800_185_encode_string(out, outmax, outlen,
  157|      0|        (const unsigned char *)in, inlen);
  158|      0|}
cshake_prov.c:cshake_update:
  406|      6|{
  407|      6|    CSHAKE_CTX *ctx = (CSHAKE_CTX *)vctx;
  408|       |
  409|      6|    return check_init(ctx)
  ------------------
  |  Branch (409:12): [True: 6, False: 0]
  ------------------
  410|      6|        && EVP_DigestUpdate(ctx->mdctx, in, inlen);
  ------------------
  |  Branch (410:12): [True: 6, False: 0]
  ------------------
  411|      6|}
cshake_prov.c:check_init:
  384|      9|{
  385|       |    /*
  386|       |     * We have to defer choosing the mode EVP_MD object (SHAKE or KECCAK)
  387|       |     * until the first call to either update(), final() or squeeze()
  388|       |     * since the strings can be set at any time before this point.
  389|       |     */
  390|      9|    if (ctx->inited == 0) {
  ------------------
  |  Branch (390:9): [True: 3, False: 6]
  ------------------
  391|      3|        if (ctx->funclen != 0 || ctx->customlen != 0) {
  ------------------
  |  Branch (391:13): [True: 0, False: 3]
  |  Branch (391:34): [True: 0, False: 3]
  ------------------
  392|      0|            if (!cshake_set_shake_mode(ctx, 0)
  ------------------
  |  Branch (392:17): [True: 0, False: 0]
  ------------------
  393|      0|                || !cshake_absorb_bytepad_strings(ctx))
  ------------------
  |  Branch (393:20): [True: 0, False: 0]
  ------------------
  394|      0|                return 0;
  395|      3|        } else {
  396|       |            /* Use SHAKE if N and S are both empty strings */
  397|      3|            if (!cshake_set_shake_mode(ctx, 1))
  ------------------
  |  Branch (397:17): [True: 0, False: 3]
  ------------------
  398|      0|                return 0;
  399|      3|        }
  400|      3|        ctx->inited = 1;
  401|      3|    }
  402|      9|    return 1;
  403|      9|}
cshake_prov.c:cshake_set_shake_mode:
  182|      3|{
  183|      3|    OSSL_PARAM params[2];
  184|      3|    const char *name;
  185|       |
  186|      3|    if (shake)
  ------------------
  |  Branch (186:9): [True: 3, False: 0]
  ------------------
  187|      3|        name = (ctx->bitlen == 128 ? "SHAKE128" : "SHAKE256");
  ------------------
  |  Branch (187:17): [True: 1, False: 2]
  ------------------
  188|      0|    else
  189|      0|        name = (ctx->bitlen == 128 ? "CSHAKE-KECCAK-128" : "CSHAKE-KECCAK-256");
  ------------------
  |  Branch (189:17): [True: 0, False: 0]
  ------------------
  190|       |
  191|      3|    if (ctx->md == NULL || !EVP_MD_is_a(ctx->md, name)) {
  ------------------
  |  Branch (191:9): [True: 3, False: 0]
  |  Branch (191:28): [True: 0, False: 0]
  ------------------
  192|      3|        ctx->md = EVP_MD_fetch(ctx->libctx, name, ctx->propq);
  193|      3|        if (ctx->md == NULL)
  ------------------
  |  Branch (193:13): [True: 0, False: 3]
  ------------------
  194|      0|            return 0;
  195|      3|    }
  196|      3|    params[0] = OSSL_PARAM_construct_size_t(OSSL_DIGEST_PARAM_XOFLEN,
  ------------------
  |  |  237|      3|# define OSSL_DIGEST_PARAM_XOFLEN "xoflen"
  ------------------
  197|      3|        &ctx->xoflen);
  198|      3|    params[1] = OSSL_PARAM_construct_end();
  199|      3|    return EVP_DigestInit_ex2(ctx->mdctx, ctx->md, params);
  200|      3|}
cshake_prov.c:cshake_final:
  414|      3|{
  415|      3|    CSHAKE_CTX *ctx = (CSHAKE_CTX *)vctx;
  416|      3|    unsigned int der = (unsigned int)(*outl);
  417|      3|    int ret = 1;
  418|       |
  419|      3|    if (ossl_unlikely(!ossl_prov_is_running()))
  ------------------
  |  |   23|      3|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  420|      0|        return 0;
  421|       |
  422|      3|    if (outsz > 0)
  ------------------
  |  Branch (422:9): [True: 3, False: 0]
  ------------------
  423|      3|        ret = check_init(ctx) && EVP_DigestFinal_ex(ctx->mdctx, out, &der);
  ------------------
  |  Branch (423:15): [True: 3, False: 0]
  |  Branch (423:34): [True: 3, False: 0]
  ------------------
  424|      3|    *outl = der;
  425|      3|    return ret;
  426|      3|}
cshake_prov.c:cshake_freectx:
  222|      3|{
  223|      3|    CSHAKE_CTX *ctx = (CSHAKE_CTX *)vctx;
  224|       |
  225|      3|    OPENSSL_free(ctx->propq);
  ------------------
  |  |  136|      3|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  226|      3|    EVP_MD_free(ctx->md);
  227|      3|    EVP_MD_CTX_destroy(ctx->mdctx);
  ------------------
  |  |  632|      3|#define EVP_MD_CTX_destroy(ctx) EVP_MD_CTX_free((ctx))
  ------------------
  228|      3|    OPENSSL_clear_free(ctx, sizeof(*ctx));
  ------------------
  |  |  134|      3|    CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  229|      3|}
cshake_prov.c:cshake_set_ctx_params:
  297|      6|{
  298|      6|    CSHAKE_CTX *ctx = (CSHAKE_CTX *)vctx;
  299|      6|    struct cshake_set_ctx_params_st p;
  300|       |
  301|      6|    if (ctx == NULL || !cshake_set_ctx_params_decoder(params, &p))
  ------------------
  |  Branch (301:9): [True: 0, False: 6]
  |  Branch (301:24): [True: 0, False: 6]
  ------------------
  302|      0|        return 0;
  303|       |
  304|      6|    if (p.xoflen != NULL) {
  ------------------
  |  Branch (304:9): [True: 0, False: 6]
  ------------------
  305|      0|        size_t xoflen;
  306|       |
  307|      0|        if (!OSSL_PARAM_get_size_t(p.xoflen, &xoflen)
  ------------------
  |  Branch (307:13): [True: 0, False: 0]
  ------------------
  308|      0|            || !cshake_set_xoflen(ctx, xoflen)) {
  ------------------
  |  Branch (308:16): [True: 0, False: 0]
  ------------------
  309|      0|            ERR_raise(ERR_LIB_PROV, PROV_R_FAILED_TO_GET_PARAMETER);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  310|      0|            return 0;
  311|      0|        }
  312|      0|    }
  313|      6|    if (p.func != NULL) {
  ------------------
  |  Branch (313:9): [True: 0, False: 6]
  ------------------
  314|      0|        if (p.func->data_type != OSSL_PARAM_UTF8_STRING)
  ------------------
  |  |  117|      0|#define OSSL_PARAM_UTF8_STRING 4
  ------------------
  |  Branch (314:13): [True: 0, False: 0]
  ------------------
  315|      0|            return 0;
  316|      0|        if (!cshake_set_func_encode_string(p.func->data, &ctx->func, &ctx->funclen)) {
  ------------------
  |  Branch (316:13): [True: 0, False: 0]
  ------------------
  317|      0|            ERR_raise(ERR_LIB_PROV, PROV_R_INVALID_FUNCTION_NAME);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  318|      0|            return 0;
  319|      0|        }
  320|      0|    }
  321|      6|    if (p.custom != NULL) {
  ------------------
  |  Branch (321:9): [True: 0, False: 6]
  ------------------
  322|      0|        if (p.custom->data_type != OSSL_PARAM_UTF8_STRING)
  ------------------
  |  |  117|      0|#define OSSL_PARAM_UTF8_STRING 4
  ------------------
  |  Branch (322:13): [True: 0, False: 0]
  ------------------
  323|      0|            return 0;
  324|      0|        if (!cshake_set_encode_string(p.custom->data, ctx->custom, sizeof(ctx->custom), &ctx->customlen))
  ------------------
  |  Branch (324:13): [True: 0, False: 0]
  ------------------
  325|      0|            return 0;
  326|      0|    }
  327|      6|    if (p.propq != NULL) {
  ------------------
  |  Branch (327:9): [True: 0, False: 6]
  ------------------
  328|      0|        if (p.propq->data_type != OSSL_PARAM_UTF8_STRING
  ------------------
  |  |  117|      0|#define OSSL_PARAM_UTF8_STRING 4
  ------------------
  |  Branch (328:13): [True: 0, False: 0]
  ------------------
  329|      0|            || !set_property_query(ctx, p.propq->data))
  ------------------
  |  Branch (329:16): [True: 0, False: 0]
  ------------------
  330|      0|            return 0;
  331|      0|    }
  332|      6|    return 1;
  333|      6|}
cshake_prov.c:cshake_get_ctx_params:
  450|      3|{
  451|      3|    CSHAKE_CTX *ctx = (CSHAKE_CTX *)vctx;
  452|      3|    struct cshake_get_ctx_params_st p;
  453|       |
  454|      3|    if (ctx == NULL || !cshake_get_ctx_params_decoder(params, &p))
  ------------------
  |  Branch (454:9): [True: 0, False: 3]
  |  Branch (454:24): [True: 0, False: 3]
  ------------------
  455|      0|        return 0;
  456|       |
  457|       |    /* Size is an alias of xoflen */
  458|      3|    if (p.xoflen != NULL || p.size != NULL) {
  ------------------
  |  Branch (458:9): [True: 0, False: 3]
  |  Branch (458:29): [True: 3, False: 0]
  ------------------
  459|      3|        size_t xoflen = ctx->xoflen;
  460|       |
  461|      3|        if (ctx->md != NULL)
  ------------------
  |  Branch (461:13): [True: 3, False: 0]
  ------------------
  462|      3|            xoflen = EVP_MD_CTX_get_size_ex(ctx->mdctx);
  463|       |
  464|      3|        if (p.size != NULL && !OSSL_PARAM_set_size_t(p.size, xoflen)) {
  ------------------
  |  Branch (464:13): [True: 3, False: 0]
  |  Branch (464:31): [True: 0, False: 3]
  ------------------
  465|      0|            ERR_raise(ERR_LIB_PROV, PROV_R_FAILED_TO_GET_PARAMETER);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  466|      0|            return 0;
  467|      0|        }
  468|      3|        if (p.xoflen != NULL && !OSSL_PARAM_set_size_t(p.xoflen, xoflen)) {
  ------------------
  |  Branch (468:13): [True: 0, False: 3]
  |  Branch (468:33): [True: 0, False: 0]
  ------------------
  469|      0|            ERR_raise(ERR_LIB_PROV, PROV_R_FAILED_TO_GET_PARAMETER);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  470|      0|            return 0;
  471|      0|        }
  472|      3|    }
  473|      3|    return 1;
  474|      3|}
cshake_prov.c:cshake_gettable_ctx_params:
  445|      3|{
  446|      3|    return cshake_get_ctx_params_list;
  447|      3|}
cshake_prov.c:cshake_256_newctx:
  479|      2|    {                                                                               \
  480|      2|        return cshake_newctx(provctx, bitlen);                                      \
  481|      2|    }                                                                               \

cshake_prov.c:cshake_set_ctx_params_decoder:
   40|      6|{
   41|      6|    const char *s;
   42|       |
   43|      6|    memset(r, 0, sizeof(*r));
   44|      6|    if (p != NULL)
  ------------------
  |  Branch (44:9): [True: 0, False: 6]
  ------------------
   45|      0|        for (; (s = p->key) != NULL; p++)
  ------------------
  |  Branch (45:16): [True: 0, False: 0]
  ------------------
   46|      0|            switch(s[0]) {
   47|      0|            default:
  ------------------
  |  Branch (47:13): [True: 0, False: 0]
  ------------------
   48|      0|                break;
   49|      0|            case 'c':
  ------------------
  |  Branch (49:13): [True: 0, False: 0]
  ------------------
   50|      0|                if (ossl_likely(strcmp("ustomization", s + 1) == 0)) {
  ------------------
  |  |   22|      0|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (22:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   51|       |                    /* OSSL_DIGEST_PARAM_CUSTOMIZATION */
   52|      0|                    if (ossl_unlikely(r->custom != NULL)) {
  ------------------
  |  |   23|      0|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   53|      0|                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|      0|        ERR_set_error)
  ------------------
                                      ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  101|      0|#define ERR_LIB_PROV 57
  ------------------
                                      ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  148|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
   54|      0|                                       "param %s is repeated", s);
   55|      0|                        return 0;
   56|      0|                    }
   57|      0|                    r->custom = (OSSL_PARAM *)p;
   58|      0|                }
   59|      0|                break;
   60|      0|            case 'f':
  ------------------
  |  Branch (60:13): [True: 0, False: 0]
  ------------------
   61|      0|                if (ossl_likely(strcmp("unction-name", s + 1) == 0)) {
  ------------------
  |  |   22|      0|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (22:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   62|       |                    /* OSSL_DIGEST_PARAM_FUNCTION_NAME */
   63|      0|                    if (ossl_unlikely(r->func != NULL)) {
  ------------------
  |  |   23|      0|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   64|      0|                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|      0|        ERR_set_error)
  ------------------
                                      ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  101|      0|#define ERR_LIB_PROV 57
  ------------------
                                      ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  148|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
   65|      0|                                       "param %s is repeated", s);
   66|      0|                        return 0;
   67|      0|                    }
   68|      0|                    r->func = (OSSL_PARAM *)p;
   69|      0|                }
   70|      0|                break;
   71|      0|            case 'p':
  ------------------
  |  Branch (71:13): [True: 0, False: 0]
  ------------------
   72|      0|                if (ossl_likely(strcmp("roperties", s + 1) == 0)) {
  ------------------
  |  |   22|      0|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (22:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   73|       |                    /* OSSL_DIGEST_PARAM_PROPERTIES */
   74|      0|                    if (ossl_unlikely(r->propq != NULL)) {
  ------------------
  |  |   23|      0|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   75|      0|                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|      0|        ERR_set_error)
  ------------------
                                      ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  101|      0|#define ERR_LIB_PROV 57
  ------------------
                                      ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  148|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
   76|      0|                                       "param %s is repeated", s);
   77|      0|                        return 0;
   78|      0|                    }
   79|      0|                    r->propq = (OSSL_PARAM *)p;
   80|      0|                }
   81|      0|                break;
   82|      0|            case 's':
  ------------------
  |  Branch (82:13): [True: 0, False: 0]
  ------------------
   83|      0|                if (ossl_likely(strcmp("ize", s + 1) == 0)) {
  ------------------
  |  |   22|      0|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (22:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   84|       |                    /* OSSL_DIGEST_PARAM_SIZE */
   85|      0|                    if (ossl_unlikely(r->xoflen != NULL)) {
  ------------------
  |  |   23|      0|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   86|      0|                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|      0|        ERR_set_error)
  ------------------
                                      ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  101|      0|#define ERR_LIB_PROV 57
  ------------------
                                      ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  148|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
   87|      0|                                       "param %s is repeated", s);
   88|      0|                        return 0;
   89|      0|                    }
   90|      0|                    r->xoflen = (OSSL_PARAM *)p;
   91|      0|                }
   92|      0|                break;
   93|      0|            case 'x':
  ------------------
  |  Branch (93:13): [True: 0, False: 0]
  ------------------
   94|      0|                if (ossl_likely(strcmp("oflen", s + 1) == 0)) {
  ------------------
  |  |   22|      0|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (22:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   95|       |                    /* OSSL_DIGEST_PARAM_XOFLEN */
   96|      0|                    if (ossl_unlikely(r->xoflen != NULL)) {
  ------------------
  |  |   23|      0|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   97|      0|                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|      0|        ERR_set_error)
  ------------------
                                      ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  101|      0|#define ERR_LIB_PROV 57
  ------------------
                                      ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  148|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
   98|      0|                                       "param %s is repeated", s);
   99|      0|                        return 0;
  100|      0|                    }
  101|      0|                    r->xoflen = (OSSL_PARAM *)p;
  102|      0|                }
  103|      0|            }
  104|      6|    return 1;
  105|      6|}
cshake_prov.c:cshake_get_ctx_params_decoder:
  133|      3|{
  134|      3|    const char *s;
  135|       |
  136|      3|    memset(r, 0, sizeof(*r));
  137|      3|    if (p != NULL)
  ------------------
  |  Branch (137:9): [True: 3, False: 0]
  ------------------
  138|      6|        for (; (s = p->key) != NULL; p++)
  ------------------
  |  Branch (138:16): [True: 3, False: 3]
  ------------------
  139|      3|            switch(s[0]) {
  140|      0|            default:
  ------------------
  |  Branch (140:13): [True: 0, False: 3]
  ------------------
  141|      0|                break;
  142|      3|            case 's':
  ------------------
  |  Branch (142:13): [True: 3, False: 0]
  ------------------
  143|      3|                if (ossl_likely(strcmp("ize", s + 1) == 0)) {
  ------------------
  |  |   22|      3|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (22:24): [True: 3, False: 0]
  |  |  ------------------
  ------------------
  144|       |                    /* OSSL_DIGEST_PARAM_SIZE */
  145|      3|                    if (ossl_unlikely(r->size != NULL)) {
  ------------------
  |  |   23|      3|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  146|      0|                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|      0|        ERR_set_error)
  ------------------
                                      ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  101|      0|#define ERR_LIB_PROV 57
  ------------------
                                      ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  148|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
  147|      0|                                       "param %s is repeated", s);
  148|      0|                        return 0;
  149|      0|                    }
  150|      3|                    r->size = (OSSL_PARAM *)p;
  151|      3|                }
  152|      3|                break;
  153|      3|            case 'x':
  ------------------
  |  Branch (153:13): [True: 0, False: 3]
  ------------------
  154|      0|                if (ossl_likely(strcmp("oflen", s + 1) == 0)) {
  ------------------
  |  |   22|      0|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (22:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  155|       |                    /* OSSL_DIGEST_PARAM_XOFLEN */
  156|      0|                    if (ossl_unlikely(r->xoflen != NULL)) {
  ------------------
  |  |   23|      0|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  157|      0|                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|      0|        ERR_set_error)
  ------------------
                                      ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  101|      0|#define ERR_LIB_PROV 57
  ------------------
                                      ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  148|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
  158|      0|                                       "param %s is repeated", s);
  159|      0|                        return 0;
  160|      0|                    }
  161|      0|                    r->xoflen = (OSSL_PARAM *)p;
  162|      0|                }
  163|      3|            }
  164|      3|    return 1;
  165|      3|}

ossl_digest_default_get_params:
   20|     34|{
   21|     34|    struct digest_default_get_params_st p;
   22|       |
   23|     34|    if (!digest_default_get_params_decoder(params, &p))
  ------------------
  |  Branch (23:9): [True: 0, False: 34]
  ------------------
   24|      0|        return 0;
   25|       |
   26|     34|    if (p.bsize != NULL && !OSSL_PARAM_set_size_t(p.bsize, blksz)) {
  ------------------
  |  Branch (26:9): [True: 34, False: 0]
  |  Branch (26:28): [True: 0, False: 34]
  ------------------
   27|      0|        ERR_raise(ERR_LIB_PROV, PROV_R_FAILED_TO_SET_PARAMETER);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
   28|      0|        return 0;
   29|      0|    }
   30|     34|    if (p.size != NULL && !OSSL_PARAM_set_size_t(p.size, paramsz)) {
  ------------------
  |  Branch (30:9): [True: 34, False: 0]
  |  Branch (30:27): [True: 0, False: 34]
  ------------------
   31|      0|        ERR_raise(ERR_LIB_PROV, PROV_R_FAILED_TO_SET_PARAMETER);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
   32|      0|        return 0;
   33|      0|    }
   34|     34|    if (p.xof != NULL
  ------------------
  |  Branch (34:9): [True: 34, False: 0]
  ------------------
   35|     34|        && !OSSL_PARAM_set_int(p.xof, (flags & PROV_DIGEST_FLAG_XOF) != 0)) {
  ------------------
  |  |   19|     34|#define PROV_DIGEST_FLAG_XOF 0x0001
  ------------------
  |  Branch (35:12): [True: 0, False: 34]
  ------------------
   36|      0|        ERR_raise(ERR_LIB_PROV, PROV_R_FAILED_TO_SET_PARAMETER);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
   37|      0|        return 0;
   38|      0|    }
   39|     34|    if (p.aldid != NULL
  ------------------
  |  Branch (39:9): [True: 34, False: 0]
  ------------------
   40|     34|        && !OSSL_PARAM_set_int(p.aldid, (flags & PROV_DIGEST_FLAG_ALGID_ABSENT) != 0)) {
  ------------------
  |  |   20|     34|#define PROV_DIGEST_FLAG_ALGID_ABSENT 0x0002
  ------------------
  |  Branch (40:12): [True: 0, False: 34]
  ------------------
   41|      0|        ERR_raise(ERR_LIB_PROV, PROV_R_FAILED_TO_SET_PARAMETER);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
   42|      0|        return 0;
   43|      0|    }
   44|     34|    return 1;
   45|     34|}

digestcommon.c:digest_default_get_params_decoder:
   40|     34|{
   41|     34|    const char *s;
   42|       |
   43|     34|    memset(r, 0, sizeof(*r));
   44|     34|    if (p != NULL)
  ------------------
  |  Branch (44:9): [True: 34, False: 0]
  ------------------
   45|    170|        for (; (s = p->key) != NULL; p++)
  ------------------
  |  Branch (45:16): [True: 136, False: 34]
  ------------------
   46|    136|            switch(s[0]) {
   47|      0|            default:
  ------------------
  |  Branch (47:13): [True: 0, False: 136]
  ------------------
   48|      0|                break;
   49|     34|            case 'a':
  ------------------
  |  Branch (49:13): [True: 34, False: 102]
  ------------------
   50|     34|                if (ossl_likely(strcmp("lgid-absent", s + 1) == 0)) {
  ------------------
  |  |   22|     34|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (22:24): [True: 34, False: 0]
  |  |  ------------------
  ------------------
   51|       |                    /* OSSL_DIGEST_PARAM_ALGID_ABSENT */
   52|     34|                    if (ossl_unlikely(r->aldid != NULL)) {
  ------------------
  |  |   23|     34|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 34]
  |  |  ------------------
  ------------------
   53|      0|                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|      0|        ERR_set_error)
  ------------------
                                      ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  101|      0|#define ERR_LIB_PROV 57
  ------------------
                                      ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  148|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
   54|      0|                                       "param %s is repeated", s);
   55|      0|                        return 0;
   56|      0|                    }
   57|     34|                    r->aldid = (OSSL_PARAM *)p;
   58|     34|                }
   59|     34|                break;
   60|     34|            case 'b':
  ------------------
  |  Branch (60:13): [True: 34, False: 102]
  ------------------
   61|     34|                if (ossl_likely(strcmp("locksize", s + 1) == 0)) {
  ------------------
  |  |   22|     34|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (22:24): [True: 34, False: 0]
  |  |  ------------------
  ------------------
   62|       |                    /* OSSL_DIGEST_PARAM_BLOCK_SIZE */
   63|     34|                    if (ossl_unlikely(r->bsize != NULL)) {
  ------------------
  |  |   23|     34|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 34]
  |  |  ------------------
  ------------------
   64|      0|                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|      0|        ERR_set_error)
  ------------------
                                      ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  101|      0|#define ERR_LIB_PROV 57
  ------------------
                                      ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  148|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
   65|      0|                                       "param %s is repeated", s);
   66|      0|                        return 0;
   67|      0|                    }
   68|     34|                    r->bsize = (OSSL_PARAM *)p;
   69|     34|                }
   70|     34|                break;
   71|     34|            case 's':
  ------------------
  |  Branch (71:13): [True: 34, False: 102]
  ------------------
   72|     34|                if (ossl_likely(strcmp("ize", s + 1) == 0)) {
  ------------------
  |  |   22|     34|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (22:24): [True: 34, False: 0]
  |  |  ------------------
  ------------------
   73|       |                    /* OSSL_DIGEST_PARAM_SIZE */
   74|     34|                    if (ossl_unlikely(r->size != NULL)) {
  ------------------
  |  |   23|     34|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 34]
  |  |  ------------------
  ------------------
   75|      0|                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|      0|        ERR_set_error)
  ------------------
                                      ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  101|      0|#define ERR_LIB_PROV 57
  ------------------
                                      ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  148|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
   76|      0|                                       "param %s is repeated", s);
   77|      0|                        return 0;
   78|      0|                    }
   79|     34|                    r->size = (OSSL_PARAM *)p;
   80|     34|                }
   81|     34|                break;
   82|     34|            case 'x':
  ------------------
  |  Branch (82:13): [True: 34, False: 102]
  ------------------
   83|     34|                if (ossl_likely(strcmp("of", s + 1) == 0)) {
  ------------------
  |  |   22|     34|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (22:24): [True: 34, False: 0]
  |  |  ------------------
  ------------------
   84|       |                    /* OSSL_DIGEST_PARAM_XOF */
   85|     34|                    if (ossl_unlikely(r->xof != NULL)) {
  ------------------
  |  |   23|     34|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 34]
  |  |  ------------------
  ------------------
   86|      0|                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|      0|        ERR_set_error)
  ------------------
                                      ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  101|      0|#define ERR_LIB_PROV 57
  ------------------
                                      ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  148|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
   87|      0|                                       "param %s is repeated", s);
   88|      0|                        return 0;
   89|      0|                    }
   90|     34|                    r->xof = (OSSL_PARAM *)p;
   91|     34|                }
   92|    136|            }
   93|     34|    return 1;
   94|     34|}

md5_sha1_prov.c:md5_sha1_set_ctx_params:
   41|     36|{
   42|     36|    const OSSL_PARAM *p;
   43|     36|    MD5_SHA1_CTX *ctx = (MD5_SHA1_CTX *)vctx;
   44|       |
   45|     36|    if (ctx == NULL)
  ------------------
  |  Branch (45:9): [True: 0, False: 36]
  ------------------
   46|      0|        return 0;
   47|     36|    if (ossl_param_is_empty(params))
  ------------------
  |  Branch (47:9): [True: 36, False: 0]
  ------------------
   48|     36|        return 1;
   49|       |
   50|      0|    p = OSSL_PARAM_locate_const(params, OSSL_DIGEST_PARAM_SSL3_MS);
  ------------------
  |  |  235|      0|# define OSSL_DIGEST_PARAM_SSL3_MS "ssl3-ms"
  ------------------
   51|      0|    if (p != NULL && p->data_type == OSSL_PARAM_OCTET_STRING)
  ------------------
  |  |  123|      0|#define OSSL_PARAM_OCTET_STRING 5
  ------------------
  |  Branch (51:9): [True: 0, False: 0]
  |  Branch (51:22): [True: 0, False: 0]
  ------------------
   52|      0|        return ossl_md5_sha1_ctrl(ctx, EVP_CTRL_SSL3_MASTER_SECRET,
  ------------------
  |  |  324|      0|#define EVP_CTRL_SSL3_MASTER_SECRET 0x1d
  ------------------
   53|      0|            (int)p->data_size, p->data);
   54|      0|    return 1;
   55|      0|}

mdc2_prov.c:mdc2_set_ctx_params:
   38|     62|{
   39|     62|    struct mdc2_set_ctx_params_st p;
   40|     62|    MDC2_CTX *ctx = (MDC2_CTX *)vctx;
   41|       |
   42|     62|    if (ctx == NULL || !mdc2_set_ctx_params_decoder(params, &p))
  ------------------
  |  Branch (42:9): [True: 0, False: 62]
  |  Branch (42:24): [True: 0, False: 62]
  ------------------
   43|      0|        return 0;
   44|       |
   45|     62|    if (p.pad != NULL && !OSSL_PARAM_get_uint(p.pad, &ctx->pad_type)) {
  ------------------
  |  Branch (45:9): [True: 0, False: 62]
  |  Branch (45:26): [True: 0, False: 0]
  ------------------
   46|      0|        ERR_raise(ERR_LIB_PROV, PROV_R_FAILED_TO_GET_PARAMETER);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
   47|      0|        return 0;
   48|      0|    }
   49|     62|    return 1;
   50|     62|}

mdc2_prov.c:mdc2_set_ctx_params_decoder:
   34|     62|{
   35|     62|    const char *s;
   36|       |
   37|     62|    memset(r, 0, sizeof(*r));
   38|     62|    if (p != NULL)
  ------------------
  |  Branch (38:9): [True: 0, False: 62]
  ------------------
   39|      0|        for (; (s = p->key) != NULL; p++)
  ------------------
  |  Branch (39:16): [True: 0, False: 0]
  ------------------
   40|      0|            if (ossl_likely(strcmp("pad-type", s + 0) == 0)) {
  ------------------
  |  |   22|      0|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (22:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   41|       |                /* OSSL_DIGEST_PARAM_PAD_TYPE */
   42|      0|                if (ossl_unlikely(r->pad != NULL)) {
  ------------------
  |  |   23|      0|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   43|      0|                    ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|      0|        ERR_set_error)
  ------------------
                                  ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  101|      0|#define ERR_LIB_PROV 57
  ------------------
                                  ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  148|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
   44|      0|                                   "param %s is repeated", s);
   45|      0|                    return 0;
   46|      0|                }
   47|      0|                r->pad = (OSSL_PARAM *)p;
   48|      0|            }
   49|     62|    return 1;
   50|     62|}

ml_dsa_mu_prov.c:mu_get_params:
  136|      1|{
  137|      1|    return ossl_digest_default_get_params(params, SHA3_BLOCKSIZE(256),
  ------------------
  |  |   21|      1|#define SHA3_BLOCKSIZE(bitlen) (KECCAK1600_WIDTH - bitlen * 2) / 8
  |  |  ------------------
  |  |  |  |   18|      1|#define KECCAK1600_WIDTH 1600
  |  |  ------------------
  ------------------
  138|      1|        SHAKE256_SIZE, SHAKE_FLAGS);
  ------------------
  |  |   36|      1|#define SHAKE256_SIZE 64
  ------------------
                      SHAKE256_SIZE, SHAKE_FLAGS);
  ------------------
  |  |   37|      1|#define SHAKE_FLAGS (PROV_DIGEST_FLAG_ALGID_ABSENT)
  |  |  ------------------
  |  |  |  |   20|      1|#define PROV_DIGEST_FLAG_ALGID_ABSENT 0x0002
  |  |  ------------------
  ------------------
  139|      1|}

sha2_prov.c:sha1_set_ctx_params:
   39|    190|{
   40|    190|    struct sha1_set_ctx_params_st p;
   41|    190|    SHA_CTX *ctx = (SHA_CTX *)vctx;
   42|       |
   43|    190|    if (ossl_unlikely(ctx == NULL || !sha1_set_ctx_params_decoder(params, &p)))
  ------------------
  |  |   23|    380|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 190]
  |  |  |  Branch (23:46): [True: 0, False: 190]
  |  |  |  Branch (23:46): [True: 0, False: 190]
  |  |  ------------------
  ------------------
   44|      0|        return 0;
   45|       |
   46|    190|    if (p.ssl3_ms != NULL)
  ------------------
  |  Branch (46:9): [True: 0, False: 190]
  ------------------
   47|      0|        return ossl_sha1_ctrl(ctx, EVP_CTRL_SSL3_MASTER_SECRET,
  ------------------
  |  |  324|      0|#define EVP_CTRL_SSL3_MASTER_SECRET 0x1d
  ------------------
   48|      0|            (int)p.ssl3_ms->data_size, p.ssl3_ms->data);
   49|       |
   50|    190|    return 1;
   51|    190|}

sha2_prov.c:sha1_set_ctx_params_decoder:
   34|    190|{
   35|    190|    const char *s;
   36|       |
   37|    190|    memset(r, 0, sizeof(*r));
   38|    190|    if (p != NULL)
  ------------------
  |  Branch (38:9): [True: 0, False: 190]
  ------------------
   39|      0|        for (; (s = p->key) != NULL; p++)
  ------------------
  |  Branch (39:16): [True: 0, False: 0]
  ------------------
   40|      0|            if (ossl_likely(strcmp("ssl3-ms", s + 0) == 0)) {
  ------------------
  |  |   22|      0|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (22:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   41|       |                /* OSSL_DIGEST_PARAM_SSL3_MS */
   42|      0|                if (ossl_unlikely(r->ssl3_ms != NULL)) {
  ------------------
  |  |   23|      0|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   43|      0|                    ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|      0|        ERR_set_error)
  ------------------
                                  ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  101|      0|#define ERR_LIB_PROV 57
  ------------------
                                  ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  148|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
   44|      0|                                   "param %s is repeated", s);
   45|      0|                    return 0;
   46|      0|                }
   47|      0|                r->ssl3_ms = (OSSL_PARAM *)p;
   48|      0|            }
   49|    190|    return 1;
   50|    190|}

sha3_prov.c:keccak_update:
  115|    126|{
  116|    126|    return ossl_sha3_absorb((KECCAK1600_CTX *)vctx, inp, len);
  117|    126|}
sha3_prov.c:keccak_final:
  121|     63|{
  122|     63|    int ret = 1;
  123|     63|    KECCAK1600_CTX *ctx = vctx;
  124|       |
  125|     63|    if (ossl_unlikely(!ossl_prov_is_running()))
  ------------------
  |  |   23|     63|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 63]
  |  |  ------------------
  ------------------
  126|      0|        return 0;
  127|     63|    if (ossl_unlikely(ctx->md_size == SIZE_MAX)) {
  ------------------
  |  |   23|     63|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 63]
  |  |  ------------------
  ------------------
  128|      0|        ERR_raise(ERR_LIB_PROV, PROV_R_INVALID_DIGEST_LENGTH);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  129|      0|        return 0;
  130|      0|    }
  131|     63|    ret = ossl_sha3_final(ctx, out, ctx->md_size);
  132|     63|    *outl = ctx->md_size;
  133|     63|    return ret;
  134|     63|}
sha3_prov.c:keccak_freectx:
  503|     63|{
  504|     63|    KECCAK1600_CTX *ctx = (KECCAK1600_CTX *)vctx;
  505|       |
  506|     63|    OPENSSL_clear_free(ctx, sizeof(*ctx));
  ------------------
  |  |  134|     63|    CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  507|     63|}
sha3_prov.c:keccak_init:
  100|    123|{
  101|    123|    if (ossl_unlikely(!ossl_prov_is_running()))
  ------------------
  |  |   23|    123|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 123]
  |  |  ------------------
  ------------------
  102|      0|        return 0;
  103|       |    /* The newctx() handles most of the ctx fixed setup. */
  104|    123|    ossl_sha3_reset((KECCAK1600_CTX *)vctx);
  105|    123|    return 1;
  106|    123|}
sha3_prov.c:keccak_init_params:
  109|      3|{
  110|      3|    return keccak_init(vctx, NULL)
  ------------------
  |  Branch (110:12): [True: 3, False: 0]
  ------------------
  111|      3|        && shake_set_ctx_params(vctx, params);
  ------------------
  |  Branch (111:12): [True: 3, False: 0]
  ------------------
  112|      3|}
sha3_prov.c:shake_set_ctx_params:
  692|      3|{
  693|      3|    struct shake_set_ctx_params_st p;
  694|      3|    KECCAK1600_CTX *ctx = (KECCAK1600_CTX *)vctx;
  695|       |
  696|      3|    if (ossl_unlikely(ctx == NULL || !shake_set_ctx_params_decoder(params, &p)))
  ------------------
  |  |   23|      6|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 3]
  |  |  |  Branch (23:46): [True: 0, False: 3]
  |  |  |  Branch (23:46): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  697|      0|        return 0;
  698|       |
  699|      3|    if (ossl_unlikely(p.xoflen != NULL
  ------------------
  |  |   23|      6|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 3]
  |  |  |  Branch (23:46): [True: 3, False: 0]
  |  |  |  Branch (23:46): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  700|      3|            && !OSSL_PARAM_get_size_t(p.xoflen, &ctx->md_size))) {
  701|      0|        ERR_raise(ERR_LIB_PROV, PROV_R_FAILED_TO_GET_PARAMETER);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  702|      0|        return 0;
  703|      0|    }
  704|      3|    return 1;
  705|      3|}
sha3_prov.c:shake_get_ctx_params:
  666|      6|{
  667|      6|    struct shake_get_ctx_params_st p;
  668|      6|    KECCAK1600_CTX *ctx = (KECCAK1600_CTX *)vctx;
  669|       |
  670|      6|    if (ctx == NULL || !shake_get_ctx_params_decoder(params, &p))
  ------------------
  |  Branch (670:9): [True: 0, False: 6]
  |  Branch (670:24): [True: 0, False: 6]
  ------------------
  671|      0|        return 0;
  672|       |
  673|      6|    if (p.xoflen != NULL && !OSSL_PARAM_set_size_t(p.xoflen, ctx->md_size)) {
  ------------------
  |  Branch (673:9): [True: 0, False: 6]
  |  Branch (673:29): [True: 0, False: 0]
  ------------------
  674|      0|        ERR_raise(ERR_LIB_PROV, PROV_R_FAILED_TO_GET_PARAMETER);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  675|      0|        return 0;
  676|      0|    }
  677|       |    /* Size is an alias of xoflen but separate them for compatibility */
  678|      6|    if (p.size != NULL && !OSSL_PARAM_set_size_t(p.size, ctx->md_size)) {
  ------------------
  |  Branch (678:9): [True: 6, False: 0]
  |  Branch (678:27): [True: 0, False: 6]
  ------------------
  679|      0|        ERR_raise(ERR_LIB_PROV, PROV_R_FAILED_TO_GET_PARAMETER);
  ------------------
  |  |  357|      0|#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
  |  |  ------------------
  |  |  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  680|      0|        return 0;
  681|      0|    }
  682|      6|    return 1;
  683|      6|}
sha3_prov.c:shake_gettable_ctx_params:
  661|      6|{
  662|      6|    return shake_get_ctx_params_list;
  663|      6|}

sha3_prov.c:shake_set_ctx_params_decoder:
   95|      3|{
   96|      3|    const char *s;
   97|       |
   98|      3|    memset(r, 0, sizeof(*r));
   99|      3|    if (p != NULL)
  ------------------
  |  Branch (99:9): [True: 3, False: 0]
  ------------------
  100|      6|        for (; (s = p->key) != NULL; p++)
  ------------------
  |  Branch (100:16): [True: 3, False: 3]
  ------------------
  101|      3|            switch(s[0]) {
  102|      0|            default:
  ------------------
  |  Branch (102:13): [True: 0, False: 3]
  ------------------
  103|      0|                break;
  104|      0|            case 's':
  ------------------
  |  Branch (104:13): [True: 0, False: 3]
  ------------------
  105|      0|                if (ossl_likely(strcmp("ize", s + 1) == 0)) {
  ------------------
  |  |   22|      0|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (22:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  106|       |                    /* OSSL_DIGEST_PARAM_SIZE */
  107|      0|                    if (ossl_unlikely(r->xoflen != NULL)) {
  ------------------
  |  |   23|      0|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  108|      0|                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|      0|        ERR_set_error)
  ------------------
                                      ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  101|      0|#define ERR_LIB_PROV 57
  ------------------
                                      ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  148|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
  109|      0|                                       "param %s is repeated", s);
  110|      0|                        return 0;
  111|      0|                    }
  112|      0|                    r->xoflen = (OSSL_PARAM *)p;
  113|      0|                }
  114|      0|                break;
  115|      3|            case 'x':
  ------------------
  |  Branch (115:13): [True: 3, False: 0]
  ------------------
  116|      3|                if (ossl_likely(strcmp("oflen", s + 1) == 0)) {
  ------------------
  |  |   22|      3|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (22:24): [True: 3, False: 0]
  |  |  ------------------
  ------------------
  117|       |                    /* OSSL_DIGEST_PARAM_XOFLEN */
  118|      3|                    if (ossl_unlikely(r->xoflen != NULL)) {
  ------------------
  |  |   23|      3|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  119|      0|                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|      0|        ERR_set_error)
  ------------------
                                      ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  101|      0|#define ERR_LIB_PROV 57
  ------------------
                                      ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  148|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
  120|      0|                                       "param %s is repeated", s);
  121|      0|                        return 0;
  122|      0|                    }
  123|      3|                    r->xoflen = (OSSL_PARAM *)p;
  124|      3|                }
  125|      3|            }
  126|      3|    return 1;
  127|      3|}
sha3_prov.c:shake_get_ctx_params_decoder:
   36|      6|{
   37|      6|    const char *s;
   38|       |
   39|      6|    memset(r, 0, sizeof(*r));
   40|      6|    if (p != NULL)
  ------------------
  |  Branch (40:9): [True: 6, False: 0]
  ------------------
   41|     12|        for (; (s = p->key) != NULL; p++)
  ------------------
  |  Branch (41:16): [True: 6, False: 6]
  ------------------
   42|      6|            switch(s[0]) {
   43|      0|            default:
  ------------------
  |  Branch (43:13): [True: 0, False: 6]
  ------------------
   44|      0|                break;
   45|      6|            case 's':
  ------------------
  |  Branch (45:13): [True: 6, False: 0]
  ------------------
   46|      6|                if (ossl_likely(strcmp("ize", s + 1) == 0)) {
  ------------------
  |  |   22|      6|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (22:24): [True: 6, False: 0]
  |  |  ------------------
  ------------------
   47|       |                    /* OSSL_DIGEST_PARAM_SIZE */
   48|      6|                    if (ossl_unlikely(r->size != NULL)) {
  ------------------
  |  |   23|      6|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 6]
  |  |  ------------------
  ------------------
   49|      0|                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|      0|        ERR_set_error)
  ------------------
                                      ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  101|      0|#define ERR_LIB_PROV 57
  ------------------
                                      ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  148|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
   50|      0|                                       "param %s is repeated", s);
   51|      0|                        return 0;
   52|      0|                    }
   53|      6|                    r->size = (OSSL_PARAM *)p;
   54|      6|                }
   55|      6|                break;
   56|      6|            case 'x':
  ------------------
  |  Branch (56:13): [True: 0, False: 6]
  ------------------
   57|      0|                if (ossl_likely(strcmp("oflen", s + 1) == 0)) {
  ------------------
  |  |   22|      0|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (22:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   58|       |                    /* OSSL_DIGEST_PARAM_XOFLEN */
   59|      0|                    if (ossl_unlikely(r->xoflen != NULL)) {
  ------------------
  |  |   23|      0|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (23:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   60|      0|                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  359|      0|    (ERR_new(),                                                  \
  |  |  360|      0|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  368|      0|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|      0|        ERR_set_error)
  ------------------
                                      ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  101|      0|#define ERR_LIB_PROV 57
  ------------------
                                      ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
  ------------------
  |  |  148|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
   61|      0|                                       "param %s is repeated", s);
   62|      0|                        return 0;
   63|      0|                    }
   64|      0|                    r->xoflen = (OSSL_PARAM *)p;
   65|      0|                }
   66|      6|            }
   67|      6|    return 1;
   68|      6|}

cshake_prov.c:cshake_128_get_params:
   29|      1|    {                                                                            \
   30|      1|        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
   31|      1|    }
cshake_prov.c:cshake_256_get_params:
   29|      1|    {                                                                            \
   30|      1|        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
   31|      1|    }
md5_prov.c:md5_internal_final:
   44|     61|    {                                                                             \
   45|     61|        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
  ------------------
  |  Branch (45:13): [True: 61, False: 0]
  |  Branch (45:39): [True: 61, False: 0]
  |  Branch (45:60): [True: 61, False: 0]
  ------------------
   46|     61|            *outl = dgstsize;                                                     \
   47|     61|            return 1;                                                             \
   48|     61|        }                                                                         \
   49|     61|        return 0;                                                                 \
   50|     61|    }
md5_prov.c:md5_freectx:
   78|     61|    {                                                                            \
   79|     61|        CTX *ctx = (CTX *)vctx;                                                  \
   80|     61|        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
  ------------------
  |  |  134|     61|    CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   81|     61|    }                                                                            \
md5_prov.c:md5_get_params:
   29|      1|    {                                                                            \
   30|      1|        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
   31|      1|    }
md5_prov.c:md5_internal_init:
  119|    122|    {                                                                              \
  120|    122|        return ossl_prov_is_running() && init(ctx);                                \
  ------------------
  |  Branch (120:16): [True: 122, False: 0]
  |  Branch (120:42): [True: 122, False: 0]
  ------------------
  121|    122|    }                                                                              \
md5_sha1_prov.c:md5_sha1_internal_final:
   44|     18|    {                                                                             \
   45|     18|        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
  ------------------
  |  Branch (45:13): [True: 18, False: 0]
  |  Branch (45:39): [True: 18, False: 0]
  |  Branch (45:60): [True: 18, False: 0]
  ------------------
   46|     18|            *outl = dgstsize;                                                     \
   47|     18|            return 1;                                                             \
   48|     18|        }                                                                         \
   49|     18|        return 0;                                                                 \
   50|     18|    }
md5_sha1_prov.c:md5_sha1_freectx:
   78|     18|    {                                                                            \
   79|     18|        CTX *ctx = (CTX *)vctx;                                                  \
   80|     18|        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
  ------------------
  |  |  134|     18|    CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   81|     18|    }                                                                            \
md5_sha1_prov.c:md5_sha1_get_params:
   29|      1|    {                                                                            \
   30|      1|        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
   31|      1|    }
md5_sha1_prov.c:md5_sha1_internal_init:
  132|     36|    {                                                                                  \
  133|     36|        return ossl_prov_is_running()                                                  \
  ------------------
  |  Branch (133:16): [True: 36, False: 0]
  ------------------
  134|     36|            && init(ctx)                                                               \
  ------------------
  |  Branch (134:16): [True: 36, False: 0]
  ------------------
  135|     36|            && set_ctx_params(ctx, params);                                            \
  ------------------
  |  Branch (135:16): [True: 36, False: 0]
  ------------------
  136|     36|    }                                                                                  \
null_prov.c:nullmd_get_params:
   29|      1|    {                                                                            \
   30|      1|        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
   31|      1|    }
ripemd_prov.c:ripemd160_internal_final:
   44|     67|    {                                                                             \
   45|     67|        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
  ------------------
  |  Branch (45:13): [True: 67, False: 0]
  |  Branch (45:39): [True: 67, False: 0]
  |  Branch (45:60): [True: 67, False: 0]
  ------------------
   46|     67|            *outl = dgstsize;                                                     \
   47|     67|            return 1;                                                             \
   48|     67|        }                                                                         \
   49|     67|        return 0;                                                                 \
   50|     67|    }
ripemd_prov.c:ripemd160_freectx:
   78|     67|    {                                                                            \
   79|     67|        CTX *ctx = (CTX *)vctx;                                                  \
   80|     67|        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
  ------------------
  |  |  134|     67|    CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   81|     67|    }                                                                            \
ripemd_prov.c:ripemd160_get_params:
   29|      2|    {                                                                            \
   30|      2|        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
   31|      2|    }
ripemd_prov.c:ripemd160_internal_init:
  119|    134|    {                                                                              \
  120|    134|        return ossl_prov_is_running() && init(ctx);                                \
  ------------------
  |  Branch (120:16): [True: 134, False: 0]
  |  Branch (120:42): [True: 134, False: 0]
  ------------------
  121|    134|    }                                                                              \
sha2_prov.c:sha1_internal_final:
   44|     95|    {                                                                             \
   45|     95|        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
  ------------------
  |  Branch (45:13): [True: 95, False: 0]
  |  Branch (45:39): [True: 95, False: 0]
  |  Branch (45:60): [True: 95, False: 0]
  ------------------
   46|     95|            *outl = dgstsize;                                                     \
   47|     95|            return 1;                                                             \
   48|     95|        }                                                                         \
   49|     95|        return 0;                                                                 \
   50|     95|    }
sha2_prov.c:sha1_freectx:
   78|     95|    {                                                                            \
   79|     95|        CTX *ctx = (CTX *)vctx;                                                  \
   80|     95|        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
  ------------------
  |  |  134|     95|    CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   81|     95|    }                                                                            \
sha2_prov.c:sha1_get_params:
   29|      1|    {                                                                            \
   30|      1|        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
   31|      1|    }
sha2_prov.c:sha1_internal_init:
  132|    190|    {                                                                                  \
  133|    190|        return ossl_prov_is_running()                                                  \
  ------------------
  |  Branch (133:16): [True: 190, False: 0]
  ------------------
  134|    190|            && init(ctx)                                                               \
  ------------------
  |  Branch (134:16): [True: 190, False: 0]
  ------------------
  135|    190|            && set_ctx_params(ctx, params);                                            \
  ------------------
  |  Branch (135:16): [True: 190, False: 0]
  ------------------
  136|    190|    }                                                                                  \
sha2_prov.c:sha224_internal_final:
   44|     55|    {                                                                             \
   45|     55|        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
  ------------------
  |  Branch (45:13): [True: 55, False: 0]
  |  Branch (45:39): [True: 55, False: 0]
  |  Branch (45:60): [True: 55, False: 0]
  ------------------
   46|     55|            *outl = dgstsize;                                                     \
   47|     55|            return 1;                                                             \
   48|     55|        }                                                                         \
   49|     55|        return 0;                                                                 \
   50|     55|    }
sha2_prov.c:sha224_freectx:
   78|     55|    {                                                                            \
   79|     55|        CTX *ctx = (CTX *)vctx;                                                  \
   80|     55|        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
  ------------------
  |  |  134|     55|    CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   81|     55|    }                                                                            \
sha2_prov.c:sha224_get_params:
   29|      1|    {                                                                            \
   30|      1|        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
   31|      1|    }
sha2_prov.c:sha224_internal_init:
  149|    110|    {                                                                              \
  150|    110|        return ossl_prov_is_running() && init(ctx);                                \
  ------------------
  |  Branch (150:16): [True: 110, False: 0]
  |  Branch (150:42): [True: 110, False: 0]
  ------------------
  151|    110|    }                                                                              \
sha2_prov.c:sha256_internal_final:
   44|  5.32k|    {                                                                             \
   45|  5.32k|        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
  ------------------
  |  Branch (45:13): [True: 5.32k, False: 0]
  |  Branch (45:39): [True: 5.32k, False: 0]
  |  Branch (45:60): [True: 5.32k, False: 0]
  ------------------
   46|  5.32k|            *outl = dgstsize;                                                     \
   47|  5.32k|            return 1;                                                             \
   48|  5.32k|        }                                                                         \
   49|  5.32k|        return 0;                                                                 \
   50|  5.32k|    }
sha2_prov.c:sha256_freectx:
   78|  5.32k|    {                                                                            \
   79|  5.32k|        CTX *ctx = (CTX *)vctx;                                                  \
   80|  5.32k|        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
  ------------------
  |  |  134|  5.32k|    CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   81|  5.32k|    }                                                                            \
sha2_prov.c:sha256_get_params:
   29|      1|    {                                                                            \
   30|      1|        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
   31|      1|    }
sha2_prov.c:sha256_internal_init:
  149|  10.6k|    {                                                                              \
  150|  10.6k|        return ossl_prov_is_running() && init(ctx);                                \
  ------------------
  |  Branch (150:16): [True: 10.6k, False: 0]
  |  Branch (150:42): [True: 10.6k, False: 0]
  ------------------
  151|  10.6k|    }                                                                              \
sha2_prov.c:sha256_192_internal_internal_final:
   44|      1|    {                                                                             \
   45|      1|        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
  ------------------
  |  Branch (45:13): [True: 1, False: 0]
  |  Branch (45:39): [True: 1, False: 0]
  |  Branch (45:60): [True: 1, False: 0]
  ------------------
   46|      1|            *outl = dgstsize;                                                     \
   47|      1|            return 1;                                                             \
   48|      1|        }                                                                         \
   49|      1|        return 0;                                                                 \
   50|      1|    }
sha2_prov.c:sha256_192_internal_freectx:
   78|      1|    {                                                                            \
   79|      1|        CTX *ctx = (CTX *)vctx;                                                  \
   80|      1|        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
  ------------------
  |  |  134|      1|    CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   81|      1|    }                                                                            \
sha2_prov.c:sha256_192_internal_get_params:
   29|      1|    {                                                                            \
   30|      1|        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
   31|      1|    }
sha2_prov.c:sha256_192_internal_internal_init:
  149|      2|    {                                                                              \
  150|      2|        return ossl_prov_is_running() && init(ctx);                                \
  ------------------
  |  Branch (150:16): [True: 2, False: 0]
  |  Branch (150:42): [True: 2, False: 0]
  ------------------
  151|      2|    }                                                                              \
sha2_prov.c:sha384_internal_final:
   44|      9|    {                                                                             \
   45|      9|        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
  ------------------
  |  Branch (45:13): [True: 9, False: 0]
  |  Branch (45:39): [True: 9, False: 0]
  |  Branch (45:60): [True: 9, False: 0]
  ------------------
   46|      9|            *outl = dgstsize;                                                     \
   47|      9|            return 1;                                                             \
   48|      9|        }                                                                         \
   49|      9|        return 0;                                                                 \
   50|      9|    }
sha2_prov.c:sha384_freectx:
   78|      9|    {                                                                            \
   79|      9|        CTX *ctx = (CTX *)vctx;                                                  \
   80|      9|        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
  ------------------
  |  |  134|      9|    CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   81|      9|    }                                                                            \
sha2_prov.c:sha384_get_params:
   29|      1|    {                                                                            \
   30|      1|        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
   31|      1|    }
sha2_prov.c:sha384_internal_init:
  149|     18|    {                                                                              \
  150|     18|        return ossl_prov_is_running() && init(ctx);                                \
  ------------------
  |  Branch (150:16): [True: 18, False: 0]
  |  Branch (150:42): [True: 18, False: 0]
  ------------------
  151|     18|    }                                                                              \
sha2_prov.c:sha512_internal_final:
   44|  3.54k|    {                                                                             \
   45|  3.54k|        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
  ------------------
  |  Branch (45:13): [True: 3.54k, False: 0]
  |  Branch (45:39): [True: 3.54k, False: 0]
  |  Branch (45:60): [True: 3.54k, False: 0]
  ------------------
   46|  3.54k|            *outl = dgstsize;                                                     \
   47|  3.54k|            return 1;                                                             \
   48|  3.54k|        }                                                                         \
   49|  3.54k|        return 0;                                                                 \
   50|  3.54k|    }
sha2_prov.c:sha512_freectx:
   78|  3.54k|    {                                                                            \
   79|  3.54k|        CTX *ctx = (CTX *)vctx;                                                  \
   80|  3.54k|        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
  ------------------
  |  |  134|  3.54k|    CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   81|  3.54k|    }                                                                            \
sha2_prov.c:sha512_get_params:
   29|      1|    {                                                                            \
   30|      1|        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
   31|      1|    }
sha2_prov.c:sha512_internal_init:
  149|  7.08k|    {                                                                              \
  150|  7.08k|        return ossl_prov_is_running() && init(ctx);                                \
  ------------------
  |  Branch (150:16): [True: 7.08k, False: 0]
  |  Branch (150:42): [True: 7.08k, False: 0]
  ------------------
  151|  7.08k|    }                                                                              \
sha2_prov.c:sha512_224_internal_final:
   44|      1|    {                                                                             \
   45|      1|        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
  ------------------
  |  Branch (45:13): [True: 1, False: 0]
  |  Branch (45:39): [True: 1, False: 0]
  |  Branch (45:60): [True: 1, False: 0]
  ------------------
   46|      1|            *outl = dgstsize;                                                     \
   47|      1|            return 1;                                                             \
   48|      1|        }                                                                         \
   49|      1|        return 0;                                                                 \
   50|      1|    }
sha2_prov.c:sha512_224_freectx:
   78|      1|    {                                                                            \
   79|      1|        CTX *ctx = (CTX *)vctx;                                                  \
   80|      1|        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
  ------------------
  |  |  134|      1|    CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   81|      1|    }                                                                            \
sha2_prov.c:sha512_224_get_params:
   29|      1|    {                                                                            \
   30|      1|        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
   31|      1|    }
sha2_prov.c:sha512_224_internal_init:
  149|      2|    {                                                                              \
  150|      2|        return ossl_prov_is_running() && init(ctx);                                \
  ------------------
  |  Branch (150:16): [True: 2, False: 0]
  |  Branch (150:42): [True: 2, False: 0]
  ------------------
  151|      2|    }                                                                              \
sha2_prov.c:sha512_256_internal_final:
   44|      1|    {                                                                             \
   45|      1|        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
  ------------------
  |  Branch (45:13): [True: 1, False: 0]
  |  Branch (45:39): [True: 1, False: 0]
  |  Branch (45:60): [True: 1, False: 0]
  ------------------
   46|      1|            *outl = dgstsize;                                                     \
   47|      1|            return 1;                                                             \
   48|      1|        }                                                                         \
   49|      1|        return 0;                                                                 \
   50|      1|    }
sha2_prov.c:sha512_256_freectx:
   78|      1|    {                                                                            \
   79|      1|        CTX *ctx = (CTX *)vctx;                                                  \
   80|      1|        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
  ------------------
  |  |  134|      1|    CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   81|      1|    }                                                                            \
sha2_prov.c:sha512_256_get_params:
   29|      1|    {                                                                            \
   30|      1|        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
   31|      1|    }
sha2_prov.c:sha512_256_internal_init:
  149|      2|    {                                                                              \
  150|      2|        return ossl_prov_is_running() && init(ctx);                                \
  ------------------
  |  Branch (150:16): [True: 2, False: 0]
  |  Branch (150:42): [True: 2, False: 0]
  ------------------
  151|      2|    }                                                                              \
sha3_prov.c:sha3_224_get_params:
   29|      1|    {                                                                            \
   30|      1|        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
   31|      1|    }
sha3_prov.c:sha3_256_get_params:
   29|      1|    {                                                                            \
   30|      1|        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
   31|      1|    }
sha3_prov.c:sha3_384_get_params:
   29|      1|    {                                                                            \
   30|      1|        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
   31|      1|    }
sha3_prov.c:sha3_512_get_params:
   29|      1|    {                                                                            \
   30|      1|        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
   31|      1|    }
sha3_prov.c:keccak_224_get_params:
   29|      1|    {                                                                            \
   30|      1|        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
   31|      1|    }
sha3_prov.c:keccak_256_get_params:
   29|      1|    {                                                                            \
   30|      1|        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
   31|      1|    }
sha3_prov.c:keccak_384_get_params:
   29|      1|    {                                                                            \
   30|      1|        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
   31|      1|    }
sha3_prov.c:keccak_512_get_params:
   29|      1|    {                                                                            \
   30|      1|        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
   31|      1|    }
sha3_prov.c:shake_128_get_params:
   29|      1|    {                                                                            \
   30|      1|        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
   31|      1|    }
sha3_prov.c:shake_256_get_params:
   29|      1|    {                                                                            \
   30|      1|        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
   31|      1|    }
sha3_prov.c:cshake_keccak_128_get_params:
   29|      1|    {                                                                            \
   30|      1|        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
   31|      1|    }
sha3_prov.c:cshake_keccak_256_get_params:
   29|      1|    {                                                                            \
   30|      1|        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
   31|      1|    }
sm3_prov.c:sm3_internal_final:
   44|     92|    {                                                                             \
   45|     92|        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
  ------------------
  |  Branch (45:13): [True: 92, False: 0]
  |  Branch (45:39): [True: 92, False: 0]
  |  Branch (45:60): [True: 92, False: 0]
  ------------------
   46|     92|            *outl = dgstsize;                                                     \
   47|     92|            return 1;                                                             \
   48|     92|        }                                                                         \
   49|     92|        return 0;                                                                 \
   50|     92|    }
sm3_prov.c:sm3_freectx:
   78|     92|    {                                                                            \
   79|     92|        CTX *ctx = (CTX *)vctx;                                                  \
   80|     92|        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
  ------------------
  |  |  134|     92|    CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   81|     92|    }                                                                            \
sm3_prov.c:sm3_get_params:
   29|      1|    {                                                                            \
   30|      1|        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
   31|      1|    }
sm3_prov.c:sm3_internal_init:
  119|    184|    {                                                                              \
  120|    184|        return ossl_prov_is_running() && init(ctx);                                \
  ------------------
  |  Branch (120:16): [True: 184, False: 0]
  |  Branch (120:42): [True: 184, False: 0]
  ------------------
  121|    184|    }                                                                              \
md4_prov.c:md4_internal_final:
   44|     55|    {                                                                             \
   45|     55|        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
  ------------------
  |  Branch (45:13): [True: 55, False: 0]
  |  Branch (45:39): [True: 55, False: 0]
  |  Branch (45:60): [True: 55, False: 0]
  ------------------
   46|     55|            *outl = dgstsize;                                                     \
   47|     55|            return 1;                                                             \
   48|     55|        }                                                                         \
   49|     55|        return 0;                                                                 \
   50|     55|    }
md4_prov.c:md4_freectx:
   78|     55|    {                                                                            \
   79|     55|        CTX *ctx = (CTX *)vctx;                                                  \
   80|     55|        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
  ------------------
  |  |  134|     55|    CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   81|     55|    }                                                                            \
md4_prov.c:md4_get_params:
   29|      1|    {                                                                            \
   30|      1|        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
   31|      1|    }
md4_prov.c:md4_internal_init:
  119|    110|    {                                                                              \
  120|    110|        return ossl_prov_is_running() && init(ctx);                                \
  ------------------
  |  Branch (120:16): [True: 110, False: 0]
  |  Branch (120:42): [True: 110, False: 0]
  ------------------
  121|    110|    }                                                                              \
mdc2_prov.c:mdc2_internal_final:
   44|     31|    {                                                                             \
   45|     31|        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
  ------------------
  |  Branch (45:13): [True: 31, False: 0]
  |  Branch (45:39): [True: 31, False: 0]
  |  Branch (45:60): [True: 31, False: 0]
  ------------------
   46|     31|            *outl = dgstsize;                                                     \
   47|     31|            return 1;                                                             \
   48|     31|        }                                                                         \
   49|     31|        return 0;                                                                 \
   50|     31|    }
mdc2_prov.c:mdc2_freectx:
   78|     31|    {                                                                            \
   79|     31|        CTX *ctx = (CTX *)vctx;                                                  \
   80|     31|        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
  ------------------
  |  |  134|     31|    CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   81|     31|    }                                                                            \
mdc2_prov.c:mdc2_get_params:
   29|      1|    {                                                                            \
   30|      1|        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
   31|      1|    }
mdc2_prov.c:mdc2_internal_init:
  132|     62|    {                                                                                  \
  133|     62|        return ossl_prov_is_running()                                                  \
  ------------------
  |  Branch (133:16): [True: 62, False: 0]
  ------------------
  134|     62|            && init(ctx)                                                               \
  ------------------
  |  Branch (134:16): [True: 62, False: 0]
  ------------------
  135|     62|            && set_ctx_params(ctx, params);                                            \
  ------------------
  |  Branch (135:16): [True: 62, False: 0]
  ------------------
  136|     62|    }                                                                                  \
wp_prov.c:wp_get_params:
   29|      1|    {                                                                            \
   30|      1|        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
   31|      1|    }

ossl_prov_drbg_nonce_ctx_new:
  272|      3|{
  273|      3|    PROV_DRBG_NONCE_GLOBAL *dngbl = OPENSSL_zalloc(sizeof(*dngbl));
  ------------------
  |  |  113|      3|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  274|       |
  275|      3|    if (dngbl == NULL)
  ------------------
  |  Branch (275:9): [True: 0, False: 3]
  ------------------
  276|      0|        return NULL;
  277|       |
  278|      3|    dngbl->rand_nonce_lock = CRYPTO_THREAD_lock_new();
  279|      3|    if (dngbl->rand_nonce_lock == NULL) {
  ------------------
  |  Branch (279:9): [True: 0, False: 3]
  ------------------
  280|      0|        OPENSSL_free(dngbl);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  347|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  348|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  281|      0|        return NULL;
  282|      0|    }
  283|       |
  284|      3|    return dngbl;
  285|      3|}

ossl_legacy_provider_init:
  213|      1|{
  214|      1|    OSSL_LIB_CTX *libctx = NULL;
  215|       |#ifndef STATIC_LEGACY
  216|       |    const OSSL_DISPATCH *tmp;
  217|       |#endif
  218|       |
  219|       |#ifndef STATIC_LEGACY
  220|       |    for (tmp = in; tmp->function_id != 0; tmp++) {
  221|       |        /*
  222|       |         * We do not support the scenario of an application linked against
  223|       |         * multiple versions of libcrypto (e.g. one static and one dynamic),
  224|       |         * but sharing a single legacy.so. We do a simple sanity check here.
  225|       |         */
  226|       |#define set_func(c, f) \
  227|       |    if (c == NULL)     \
  228|       |        c = f;         \
  229|       |    else if (c != f)   \
  230|       |        return 0;
  231|       |        switch (tmp->function_id) {
  232|       |        case OSSL_FUNC_CORE_NEW_ERROR:
  233|       |            set_func(c_new_error, OSSL_FUNC_core_new_error(tmp));
  234|       |            break;
  235|       |        case OSSL_FUNC_CORE_SET_ERROR_DEBUG:
  236|       |            set_func(c_set_error_debug, OSSL_FUNC_core_set_error_debug(tmp));
  237|       |            break;
  238|       |        case OSSL_FUNC_CORE_VSET_ERROR:
  239|       |            set_func(c_vset_error, OSSL_FUNC_core_vset_error(tmp));
  240|       |            break;
  241|       |        case OSSL_FUNC_CORE_SET_ERROR_MARK:
  242|       |            set_func(c_set_error_mark, OSSL_FUNC_core_set_error_mark(tmp));
  243|       |            break;
  244|       |        case OSSL_FUNC_CORE_CLEAR_LAST_ERROR_MARK:
  245|       |            set_func(c_clear_last_error_mark,
  246|       |                OSSL_FUNC_core_clear_last_error_mark(tmp));
  247|       |            break;
  248|       |        case OSSL_FUNC_CORE_POP_ERROR_TO_MARK:
  249|       |            set_func(c_pop_error_to_mark, OSSL_FUNC_core_pop_error_to_mark(tmp));
  250|       |            break;
  251|       |        case OSSL_FUNC_CORE_COUNT_TO_MARK:
  252|       |            set_func(c_count_to_mark, OSSL_FUNC_core_count_to_mark(in));
  253|       |            break;
  254|       |        }
  255|       |    }
  256|       |#endif
  257|       |
  258|      1|    if ((*provctx = ossl_prov_ctx_new()) == NULL
  ------------------
  |  Branch (258:9): [True: 0, False: 1]
  ------------------
  259|      1|        || (libctx = OSSL_LIB_CTX_new_child(handle, in)) == NULL) {
  ------------------
  |  Branch (259:12): [True: 0, False: 1]
  ------------------
  260|      0|        OSSL_LIB_CTX_free(libctx);
  261|      0|        legacy_teardown(*provctx);
  262|      0|        *provctx = NULL;
  263|      0|        return 0;
  264|      0|    }
  265|      1|    ossl_prov_ctx_set0_libctx(*provctx, libctx);
  266|      1|    ossl_prov_ctx_set0_handle(*provctx, handle);
  267|       |
  268|      1|    *out = legacy_dispatch_table;
  269|       |
  270|      1|    return 1;
  271|      1|}
legacyprov.c:legacy_query:
  179|    511|{
  180|    511|    *no_cache = 0;
  181|    511|    switch (operation_id) {
  ------------------
  |  Branch (181:13): [True: 511, False: 0]
  ------------------
  182|    511|    case OSSL_OP_DIGEST:
  ------------------
  |  |  283|    511|#define OSSL_OP_DIGEST 1
  ------------------
  |  Branch (182:5): [True: 511, False: 0]
  ------------------
  183|    511|        return legacy_digests;
  184|      0|    case OSSL_OP_CIPHER:
  ------------------
  |  |  284|      0|#define OSSL_OP_CIPHER 2 /* Symmetric Ciphers */
  ------------------
  |  Branch (184:5): [True: 0, False: 511]
  ------------------
  185|      0|        return legacy_ciphers;
  186|      0|    case OSSL_OP_KDF:
  ------------------
  |  |  286|      0|#define OSSL_OP_KDF 4
  ------------------
  |  Branch (186:5): [True: 0, False: 511]
  ------------------
  187|      0|        return legacy_kdfs;
  188|      0|    case OSSL_OP_SKEYMGMT:
  ------------------
  |  |  293|      0|#define OSSL_OP_SKEYMGMT 15
  ------------------
  |  Branch (188:5): [True: 0, False: 511]
  ------------------
  189|      0|        return legacy_skeymgmt;
  190|    511|    }
  191|      0|    return NULL;
  192|    511|}

ossl_prov_is_running:
   20|  38.3k|{
   21|  38.3k|    return 1;
   22|  38.3k|}

luks2_json_metadata.c:lh_table_head:
  361|  25.2k|{
  362|  25.2k|	return t->head;
  363|  25.2k|}
luks2_json_metadata.c:lh_entry_k:
  399|  6.99k|{
  400|  6.99k|	return _LH_UNCONST(e->k);
  ------------------
  |  |  388|  6.99k|#define _LH_UNCONST(a) ((void *)(uintptr_t)(const void *)(a))
  ------------------
  401|  6.99k|}
luks2_json_metadata.c:lh_entry_v:
  420|  6.99k|{
  421|  6.99k|	return _LH_UNCONST(e->v);
  ------------------
  |  |  388|  6.99k|#define _LH_UNCONST(a) ((void *)(uintptr_t)(const void *)(a))
  ------------------
  422|  6.99k|}
luks2_json_metadata.c:lh_entry_next:
  439|  6.99k|{
  440|  6.99k|	return e->next;
  441|  6.99k|}
luks2_keyslot.c:lh_table_head:
  361|  6.25k|{
  362|  6.25k|	return t->head;
  363|  6.25k|}
luks2_keyslot.c:lh_entry_k:
  399|    514|{
  400|    514|	return _LH_UNCONST(e->k);
  ------------------
  |  |  388|    514|#define _LH_UNCONST(a) ((void *)(uintptr_t)(const void *)(a))
  ------------------
  401|    514|}
luks2_keyslot.c:lh_entry_v:
  420|    514|{
  421|    514|	return _LH_UNCONST(e->v);
  ------------------
  |  |  388|    514|#define _LH_UNCONST(a) ((void *)(uintptr_t)(const void *)(a))
  ------------------
  422|    514|}
luks2_keyslot.c:lh_entry_next:
  439|    514|{
  440|    514|	return e->next;
  441|    514|}
luks2_keyslot_luks2.c:lh_table_head:
  361|    116|{
  362|    116|	return t->head;
  363|    116|}
luks2_keyslot_luks2.c:lh_entry_k:
  399|    805|{
  400|    805|	return _LH_UNCONST(e->k);
  ------------------
  |  |  388|    805|#define _LH_UNCONST(a) ((void *)(uintptr_t)(const void *)(a))
  ------------------
  401|    805|}
luks2_keyslot_luks2.c:lh_entry_v:
  420|    805|{
  421|    805|	return _LH_UNCONST(e->v);
  ------------------
  |  |  388|    805|#define _LH_UNCONST(a) ((void *)(uintptr_t)(const void *)(a))
  ------------------
  422|    805|}
luks2_keyslot_luks2.c:lh_entry_next:
  439|    805|{
  440|    805|	return e->next;
  441|    805|}
luks2_segment.c:lh_table_head:
  361|  10.2k|{
  362|  10.2k|	return t->head;
  363|  10.2k|}
luks2_segment.c:lh_entry_k:
  399|  10.4k|{
  400|  10.4k|	return _LH_UNCONST(e->k);
  ------------------
  |  |  388|  10.4k|#define _LH_UNCONST(a) ((void *)(uintptr_t)(const void *)(a))
  ------------------
  401|  10.4k|}
luks2_segment.c:lh_entry_v:
  420|  10.4k|{
  421|  10.4k|	return _LH_UNCONST(e->v);
  ------------------
  |  |  388|  10.4k|#define _LH_UNCONST(a) ((void *)(uintptr_t)(const void *)(a))
  ------------------
  422|  10.4k|}
luks2_segment.c:lh_entry_next:
  439|  10.4k|{
  440|  10.4k|	return e->next;
  441|  10.4k|}

vfat.c:is_power_of_2:
  383|  2.47k|{
  384|  2.47k|	return (num != 0 && ((num & (num - 1)) == 0));
  ------------------
  |  Branch (384:10): [True: 2.21k, False: 263]
  |  Branch (384:22): [True: 1.95k, False: 258]
  ------------------
  385|  2.47k|}
hfs.c:is_power_of_2:
  383|    237|{
  384|    237|	return (num != 0 && ((num & (num - 1)) == 0));
  ------------------
  |  Branch (384:10): [True: 237, False: 0]
  |  Branch (384:22): [True: 194, False: 43]
  ------------------
  385|    237|}
ntfs.c:is_power_of_2:
  383|    552|{
  384|    552|	return (num != 0 && ((num & (num - 1)) == 0));
  ------------------
  |  Branch (384:10): [True: 552, False: 0]
  |  Branch (384:22): [True: 519, False: 33]
  ------------------
  385|    552|}

iso9660.c:c_toupper:
  314|    242|{
  315|    242|	switch (c) {
  316|     10|	_C_CTYPE_LOWER:
  ------------------
  |  |  129|      0|#define _C_CTYPE_LOWER _C_CTYPE_LOWER_N (0)
  |  |  ------------------
  |  |  |  |  114|      2|	_C_CTYPE_LOWER_A_THRU_F_N(N): \
  |  |  |  |  ------------------
  |  |  |  |  |  |  111|      2|	case 'a' + (N): case 'b' + (N): case 'c' + (N): case 'd' + (N): \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (111:2): [True: 1, False: 241]
  |  |  |  |  |  |  |  Branch (111:18): [True: 0, False: 242]
  |  |  |  |  |  |  |  Branch (111:34): [True: 0, False: 242]
  |  |  |  |  |  |  |  Branch (111:50): [True: 1, False: 241]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      2|	case 'e' + (N): case 'f' + (N)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (112:2): [True: 0, False: 242]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:2): [True: 0, False: 242]
  |  |  |  |  ------------------
  |  |  |  |  115|      2|	case 'g' + (N): case 'h' + (N): case 'i' + (N): case 'j' + (N): \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (115:2): [True: 0, False: 242]
  |  |  |  |  |  Branch (115:18): [True: 0, False: 242]
  |  |  |  |  |  Branch (115:34): [True: 0, False: 242]
  |  |  |  |  |  Branch (115:50): [True: 0, False: 242]
  |  |  |  |  ------------------
  |  |  |  |  116|      3|	case 'k' + (N): case 'l' + (N): case 'm' + (N): case 'n' + (N): \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:2): [True: 0, False: 242]
  |  |  |  |  |  Branch (116:18): [True: 1, False: 241]
  |  |  |  |  |  Branch (116:34): [True: 0, False: 242]
  |  |  |  |  |  Branch (116:50): [True: 0, False: 242]
  |  |  |  |  ------------------
  |  |  |  |  117|      3|	case 'o' + (N): case 'p' + (N): case 'q' + (N): case 'r' + (N): \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (117:2): [True: 0, False: 242]
  |  |  |  |  |  Branch (117:18): [True: 0, False: 242]
  |  |  |  |  |  Branch (117:34): [True: 0, False: 242]
  |  |  |  |  |  Branch (117:50): [True: 0, False: 242]
  |  |  |  |  ------------------
  |  |  |  |  118|      7|	case 's' + (N): case 't' + (N): case 'u' + (N): case 'v' + (N): \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:2): [True: 4, False: 238]
  |  |  |  |  |  Branch (118:18): [True: 0, False: 242]
  |  |  |  |  |  Branch (118:34): [True: 0, False: 242]
  |  |  |  |  |  Branch (118:50): [True: 0, False: 242]
  |  |  |  |  ------------------
  |  |  |  |  119|     10|	case 'w' + (N): case 'x' + (N): case 'y' + (N): case 'z' + (N)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (119:2): [True: 1, False: 241]
  |  |  |  |  |  Branch (119:18): [True: 0, False: 242]
  |  |  |  |  |  Branch (119:34): [True: 2, False: 240]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  317|     10|		return c - 'a' + 'A';
  318|    232|	default:
  ------------------
  |  Branch (318:2): [True: 232, False: 10]
  ------------------
  319|    232|		return c;
  320|    242|	}
  321|    242|}
iso9660.c:c_isupper:
  283|     84|{
  284|     84|	switch (c) {
  285|      0|	_C_CTYPE_UPPER:
  ------------------
  |  |  139|      0|#define _C_CTYPE_UPPER _C_CTYPE_LOWER_N ('A' - 'a')
  |  |  ------------------
  |  |  |  |  114|      0|	_C_CTYPE_LOWER_A_THRU_F_N(N): \
  |  |  |  |  ------------------
  |  |  |  |  |  |  111|      0|	case 'a' + (N): case 'b' + (N): case 'c' + (N): case 'd' + (N): \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (111:2): [True: 0, False: 84]
  |  |  |  |  |  |  |  Branch (111:18): [True: 0, False: 84]
  |  |  |  |  |  |  |  Branch (111:34): [True: 0, False: 84]
  |  |  |  |  |  |  |  Branch (111:50): [True: 0, False: 84]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|	case 'e' + (N): case 'f' + (N)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (112:2): [True: 0, False: 84]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:2): [True: 0, False: 84]
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	case 'g' + (N): case 'h' + (N): case 'i' + (N): case 'j' + (N): \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (115:2): [True: 0, False: 84]
  |  |  |  |  |  Branch (115:18): [True: 0, False: 84]
  |  |  |  |  |  Branch (115:34): [True: 0, False: 84]
  |  |  |  |  |  Branch (115:50): [True: 0, False: 84]
  |  |  |  |  ------------------
  |  |  |  |  116|      0|	case 'k' + (N): case 'l' + (N): case 'm' + (N): case 'n' + (N): \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:2): [True: 0, False: 84]
  |  |  |  |  |  Branch (116:18): [True: 0, False: 84]
  |  |  |  |  |  Branch (116:34): [True: 0, False: 84]
  |  |  |  |  |  Branch (116:50): [True: 0, False: 84]
  |  |  |  |  ------------------
  |  |  |  |  117|      0|	case 'o' + (N): case 'p' + (N): case 'q' + (N): case 'r' + (N): \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (117:2): [True: 0, False: 84]
  |  |  |  |  |  Branch (117:18): [True: 0, False: 84]
  |  |  |  |  |  Branch (117:34): [True: 0, False: 84]
  |  |  |  |  |  Branch (117:50): [True: 0, False: 84]
  |  |  |  |  ------------------
  |  |  |  |  118|      0|	case 's' + (N): case 't' + (N): case 'u' + (N): case 'v' + (N): \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:2): [True: 0, False: 84]
  |  |  |  |  |  Branch (118:18): [True: 0, False: 84]
  |  |  |  |  |  Branch (118:34): [True: 0, False: 84]
  |  |  |  |  |  Branch (118:50): [True: 0, False: 84]
  |  |  |  |  ------------------
  |  |  |  |  119|      0|	case 'w' + (N): case 'x' + (N): case 'y' + (N): case 'z' + (N)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (119:2): [True: 0, False: 84]
  |  |  |  |  |  Branch (119:18): [True: 0, False: 84]
  |  |  |  |  |  Branch (119:34): [True: 0, False: 84]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  286|      0|		return 1;
  287|     84|	default:
  ------------------
  |  Branch (287:2): [True: 84, False: 0]
  ------------------
  288|     84|		return 0;
  289|     84|	}
  290|     84|}

iso9660.c:isonum_723:
   27|    386|{
   28|    386|	uint16_t le = isonum_721(p);
   29|    386|	uint16_t be = isonum_722(p + 2);
   30|       |
   31|    386|	if (check_match && le != be)
  ------------------
  |  Branch (31:6): [True: 0, False: 386]
  |  Branch (31:21): [True: 0, False: 0]
  ------------------
   32|       |		/* translation is useless */
   33|      0|		warnx("723error: le=%d be=%d", le, be);
   34|    386|	return (le);
   35|    386|}
iso9660.c:isonum_721:
   15|    386|{
   16|    386|	return ((p[0] & 0xff)
   17|    386|		| ((p[1] & 0xff) << 8));
   18|    386|}
iso9660.c:isonum_722:
   21|    386|{
   22|    386|	return ((p[1] & 0xff)
   23|    386|		| ((p[0] & 0xff) << 8));
   24|    386|}
iso9660.c:isonum_733:
   54|    386|{
   55|    386|	uint32_t le = isonum_731(p);
   56|    386|	uint32_t be = isonum_732(p + 4);
   57|       |
   58|    386|	if (check_match && le != be)
  ------------------
  |  Branch (58:6): [True: 0, False: 386]
  |  Branch (58:21): [True: 0, False: 0]
  ------------------
   59|       |		/* translation is useless */
   60|      0|		warnx("733error: le=%"PRIu32" be=%"PRIu32, le, be);
   61|    386|	return(le);
   62|    386|}
iso9660.c:isonum_732:
   46|    386|{
   47|    386|	return ((p[3] & 0xff)
   48|    386|		| ((p[2] & 0xff) << 8)
   49|    386|		| ((p[1] & 0xff) << 16)
   50|    386|		| (((uint32_t) p[0] & 0xff) << 24));
   51|    386|}
iso9660.c:isonum_731:
   38|  1.17k|{
   39|  1.17k|	return ((p[0] & 0xff)
   40|  1.17k|		| ((p[1] & 0xff) << 8)
   41|  1.17k|		| ((p[2] & 0xff) << 16)
   42|  1.17k|		| (((uint32_t) p[3] & 0xff) << 24));
   43|  1.17k|}

probe.c:list_del:
  106|   309k|{
  107|   309k|	__list_del(entry->prev, entry->next);
  108|   309k|}
probe.c:__list_del:
   93|   311k|{
   94|   311k|	next->prev = prev;
   95|   311k|	prev->next = next;
   96|   311k|}
probe.c:list_empty:
  125|   381k|{
  126|   381k|	return head->next == head;
  127|   381k|}
probe.c:list_del_init:
  115|  2.41k|{
  116|  2.41k|	__list_del(entry->prev, entry->next);
  117|  2.41k|	INIT_LIST_HEAD(entry);
  ------------------
  |  |   38|  2.41k|#define INIT_LIST_HEAD(ptr) do { \
  |  |   39|  2.41k|	(ptr)->next = (ptr); (ptr)->prev = (ptr); \
  |  |   40|  2.41k|} while (0)
  |  |  ------------------
  |  |  |  Branch (40:10): [Folded, False: 2.41k]
  |  |  ------------------
  ------------------
  118|  2.41k|}
probe.c:list_add_tail:
   80|   233k|{
   81|   233k|	__list_add(add, head->prev, head);
   82|   233k|}
probe.c:__list_add:
   51|   311k|{
   52|   311k|	next->prev = add;
   53|   311k|	add->next = next;
   54|   311k|	add->prev = prev;
   55|   311k|	prev->next = add;
   56|   311k|}
probe.c:list_splice:
  155|    969|{
  156|    969|	struct list_head *first = list->next;
  157|       |
  158|    969|	if (first != list) {
  ------------------
  |  Branch (158:6): [True: 969, False: 0]
  ------------------
  159|    969|		struct list_head *last = list->prev;
  160|    969|		struct list_head *at = head->next;
  161|       |
  162|    969|		first->prev = head;
  163|    969|		head->next = first;
  164|       |
  165|    969|		last->next = at;
  166|    969|		at->prev = last;
  167|    969|	}
  168|    969|}
probe.c:list_add:
   67|  78.6k|{
   68|  78.6k|	__list_add(add, head, head->next);
   69|  78.6k|}

dos.c:mbr_get_partition:
   23|  1.82k|{
   24|  1.82k|	return (struct dos_partition *)
   25|  1.82k|		(mbr + MBR_PT_OFFSET + (i * sizeof(struct dos_partition)));
  ------------------
  |  |   19|  1.82k|#define MBR_PT_OFFSET		0x1be
  ------------------
   26|  1.82k|}
dos.c:mbr_get_id:
   99|    103|{
  100|    103|	return __dos_assemble_4le(&mbr[440]);
  101|    103|}
dos.c:__dos_assemble_4le:
   30|    103|{
   31|    103|	uint32_t last_byte = p[3];
   32|       |
   33|    103|	return p[0] | (p[1] << 8) | (p[2] << 16) | (last_byte << 24);
   34|    103|}
gpt.c:mbr_is_valid_magic:
   88|  7.11k|{
   89|  7.11k|	return mbr[510] == 0x55 && mbr[511] == 0xaa ? 1 : 0;
  ------------------
  |  Branch (89:9): [True: 3.59k, False: 3.52k]
  |  Branch (89:29): [True: 3.43k, False: 157]
  ------------------
   90|  7.11k|}
gpt.c:mbr_get_partition:
   23|  3.43k|{
   24|  3.43k|	return (struct dos_partition *)
   25|  3.43k|		(mbr + MBR_PT_OFFSET + (i * sizeof(struct dos_partition)));
  ------------------
  |  |   19|  3.43k|#define MBR_PT_OFFSET		0x1be
  ------------------
   26|  3.43k|}

sgi.c:sgi_pt_checksum:
   99|    105|{
  100|    105|	int count;
  101|    105|	uint32_t sum = 0;
  102|    105|	unsigned char *ptr = (unsigned char *) label;
  103|       |
  104|    105|	count = sizeof(*label) / sizeof(uint32_t);
  105|    105|	ptr += sizeof(uint32_t) * (count - 1);
  106|       |
  107|  13.5k|	while (count--) {
  ------------------
  |  Branch (107:9): [True: 13.4k, False: 105]
  ------------------
  108|  13.4k|		uint32_t val;
  109|       |
  110|  13.4k|		memcpy(&val, ptr, sizeof(uint32_t));
  111|  13.4k|		sum -= be32_to_cpu(val);
  ------------------
  |  |  141|  13.4k|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  112|       |
  113|  13.4k|		ptr -= sizeof(uint32_t);
  114|  13.4k|	}
  115|       |
  116|    105|	return sum;
  117|    105|}

sun.c:sun_pt_checksum:
   84|    892|{
   85|    892|	const uint16_t *ptr = ((const uint16_t *) (label + 1)) - 1;
   86|    892|	uint16_t sum;
   87|       |
   88|   229k|	for (sum = 0; ptr >= ((const uint16_t *) label);)
  ------------------
  |  Branch (88:16): [True: 228k, False: 892]
  ------------------
   89|   228k|		sum ^= *ptr--;
   90|       |
   91|    892|	return sum;
   92|    892|}

dasd.c:rtrim_whitespace:
  349|    309|{
  350|    309|	size_t i;
  351|       |
  352|    309|	if (!str)
  ------------------
  |  Branch (352:6): [True: 0, False: 309]
  ------------------
  353|      0|		return 0;
  354|    309|	i = strlen((char *) str);
  355|    335|	while (i) {
  ------------------
  |  Branch (355:9): [True: 273, False: 62]
  ------------------
  356|    273|		i--;
  357|    273|		if (!isspace(str[i])) {
  ------------------
  |  Branch (357:7): [True: 247, False: 26]
  ------------------
  358|    247|			i++;
  359|    247|			break;
  360|    247|		}
  361|    273|	}
  362|    309|	str[i] = '\0';
  363|    309|	return i;
  364|    309|}

probe.c:ul_vfs_open:
   75|  5.99k|{
   76|  5.99k|	if (vfs && vfs->vfs_open)
  ------------------
  |  Branch (76:6): [True: 0, False: 5.99k]
  |  Branch (76:13): [True: 0, False: 0]
  ------------------
   77|      0|		return vfs->vfs_open(pathname, flags, mode);
   78|  5.99k|	return open(pathname, flags, mode);
   79|  5.99k|}
probe.c:ul_vfs_close:
   82|  5.99k|{
   83|  5.99k|	if (vfs && vfs->vfs_close)
  ------------------
  |  Branch (83:6): [True: 0, False: 5.99k]
  |  Branch (83:13): [True: 0, False: 0]
  ------------------
   84|      0|		return vfs->vfs_close(fd);
   85|  5.99k|	return close(fd);
   86|  5.99k|}
probe.c:ul_vfs_read:
   59|   226k|{
   60|   226k|	if (vfs && vfs->vfs_read)
  ------------------
  |  Branch (60:6): [True: 0, False: 226k]
  |  Branch (60:13): [True: 0, False: 0]
  ------------------
   61|      0|		return vfs->vfs_read(fd, buf, count);
   62|   226k|	return read(fd, buf, count);
   63|   226k|}
probe.c:ul_vfs_lseek:
   90|   226k|{
   91|   226k|	if (vfs && vfs->vfs_lseek)
  ------------------
  |  Branch (91:6): [True: 0, False: 226k]
  |  Branch (91:13): [True: 0, False: 0]
  ------------------
   92|      0|		return vfs->vfs_lseek(fd, offset, whence);
   93|   226k|	return lseek(fd, offset, whence);
   94|   226k|}

ul_XXH64:
 2511|     13|{
 2512|       |#if 0
 2513|       |    /* Simple version, good for code maintenance, but unfortunately slow for small inputs */
 2514|       |    XXH64_state_t state;
 2515|       |    XXH64_reset(&state, seed);
 2516|       |    XXH64_update(&state, (const xxh_u8*)input, len);
 2517|       |    return XXH64_digest(&state);
 2518|       |#else
 2519|     13|    if (XXH_FORCE_ALIGN_CHECK) {
  ------------------
  |  | 1402|     13|#    define XXH_FORCE_ALIGN_CHECK 0
  |  |  ------------------
  |  |  |  Branch (1402:35): [Folded, False: 13]
  |  |  ------------------
  ------------------
 2520|      0|        if ((((size_t)input) & 7)==0) {  /* Input is aligned, let's leverage the speed advantage */
  ------------------
  |  Branch (2520:13): [True: 0, False: 0]
  ------------------
 2521|      0|            return XXH64_endian_align((const xxh_u8*)input, len, seed, XXH_aligned);
 2522|      0|    }   }
 2523|       |
 2524|     13|    return XXH64_endian_align((const xxh_u8*)input, len, seed, XXH_unaligned);
 2525|       |
 2526|     13|#endif
 2527|     13|}
xxhash.c:XXH_memcpy:
 1456|   283k|{
 1457|   283k|    return memcpy(dest,src,size);
 1458|   283k|}
xxhash.c:XXH64_endian_align:
 2474|     13|{
 2475|     13|    xxh_u64 h64;
 2476|     13|    if (input==NULL) XXH_ASSERT(len == 0);
  ------------------
  |  | 1518|      0|#  define XXH_ASSERT(c)   ((void)0)
  ------------------
  |  Branch (2476:9): [True: 0, False: 13]
  ------------------
 2477|       |
 2478|     13|    if (len>=32) {
  ------------------
  |  Branch (2478:9): [True: 13, False: 0]
  ------------------
 2479|     13|        const xxh_u8* const bEnd = input + len;
 2480|     13|        const xxh_u8* const limit = bEnd - 31;
 2481|     13|        xxh_u64 v1 = seed + XXH_PRIME64_1 + XXH_PRIME64_2;
  ------------------
  |  | 2393|     13|#define XXH_PRIME64_1  0x9E3779B185EBCA87ULL  /*!< 0b1001111000110111011110011011000110000101111010111100101010000111 */
  ------------------
                      xxh_u64 v1 = seed + XXH_PRIME64_1 + XXH_PRIME64_2;
  ------------------
  |  | 2394|     13|#define XXH_PRIME64_2  0xC2B2AE3D27D4EB4FULL  /*!< 0b1100001010110010101011100011110100100111110101001110101101001111 */
  ------------------
 2482|     13|        xxh_u64 v2 = seed + XXH_PRIME64_2;
  ------------------
  |  | 2394|     13|#define XXH_PRIME64_2  0xC2B2AE3D27D4EB4FULL  /*!< 0b1100001010110010101011100011110100100111110101001110101101001111 */
  ------------------
 2483|     13|        xxh_u64 v3 = seed + 0;
 2484|     13|        xxh_u64 v4 = seed - XXH_PRIME64_1;
  ------------------
  |  | 2393|     13|#define XXH_PRIME64_1  0x9E3779B185EBCA87ULL  /*!< 0b1001111000110111011110011011000110000101111010111100101010000111 */
  ------------------
 2485|       |
 2486|  70.8k|        do {
 2487|  70.8k|            v1 = XXH64_round(v1, XXH_get64bits(input)); input+=8;
  ------------------
  |  | 2434|  70.8k|#define XXH_get64bits(p) XXH_readLE64_align(p, align)
  ------------------
 2488|  70.8k|            v2 = XXH64_round(v2, XXH_get64bits(input)); input+=8;
  ------------------
  |  | 2434|  70.8k|#define XXH_get64bits(p) XXH_readLE64_align(p, align)
  ------------------
 2489|  70.8k|            v3 = XXH64_round(v3, XXH_get64bits(input)); input+=8;
  ------------------
  |  | 2434|  70.8k|#define XXH_get64bits(p) XXH_readLE64_align(p, align)
  ------------------
 2490|  70.8k|            v4 = XXH64_round(v4, XXH_get64bits(input)); input+=8;
  ------------------
  |  | 2434|  70.8k|#define XXH_get64bits(p) XXH_readLE64_align(p, align)
  ------------------
 2491|  70.8k|        } while (input<limit);
  ------------------
  |  Branch (2491:18): [True: 70.8k, False: 13]
  ------------------
 2492|       |
 2493|     13|        h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, 12) + XXH_rotl64(v4, 18);
  ------------------
  |  | 1753|     13|#  define XXH_rotl64 __builtin_rotateleft64
  ------------------
                      h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, 12) + XXH_rotl64(v4, 18);
  ------------------
  |  | 1753|     13|#  define XXH_rotl64 __builtin_rotateleft64
  ------------------
                      h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, 12) + XXH_rotl64(v4, 18);
  ------------------
  |  | 1753|     13|#  define XXH_rotl64 __builtin_rotateleft64
  ------------------
                      h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, 12) + XXH_rotl64(v4, 18);
  ------------------
  |  | 1753|     13|#  define XXH_rotl64 __builtin_rotateleft64
  ------------------
 2494|     13|        h64 = XXH64_mergeRound(h64, v1);
 2495|     13|        h64 = XXH64_mergeRound(h64, v2);
 2496|     13|        h64 = XXH64_mergeRound(h64, v3);
 2497|     13|        h64 = XXH64_mergeRound(h64, v4);
 2498|       |
 2499|     13|    } else {
 2500|      0|        h64  = seed + XXH_PRIME64_5;
  ------------------
  |  | 2397|      0|#define XXH_PRIME64_5  0x27D4EB2F165667C5ULL  /*!< 0b0010011111010100111010110010111100010110010101100110011111000101 */
  ------------------
 2501|      0|    }
 2502|       |
 2503|     13|    h64 += (xxh_u64) len;
 2504|       |
 2505|     13|    return XXH64_finalize(h64, input, len, align);
 2506|     13|}
xxhash.c:XXH_readLE64_align:
 2377|   283k|{
 2378|   283k|    if (align==XXH_unaligned)
  ------------------
  |  Branch (2378:9): [True: 283k, False: 0]
  ------------------
 2379|   283k|        return XXH_readLE64(ptr);
 2380|      0|    else
 2381|      0|        return XXH_CPU_LITTLE_ENDIAN ? *(const xxh_u64*)ptr : XXH_swap64(*(const xxh_u64*)ptr);
  ------------------
  |  | 1699|      0|#    define XXH_CPU_LITTLE_ENDIAN 1
  |  |  ------------------
  |  |  |  Branch (1699:35): [True: 0, Folded]
  |  |  ------------------
  ------------------
 2382|   283k|}
xxhash.c:XXH64_round:
 2408|   283k|{
 2409|   283k|    acc += input * XXH_PRIME64_2;
  ------------------
  |  | 2394|   283k|#define XXH_PRIME64_2  0xC2B2AE3D27D4EB4FULL  /*!< 0b1100001010110010101011100011110100100111110101001110101101001111 */
  ------------------
 2410|   283k|    acc  = XXH_rotl64(acc, 31);
  ------------------
  |  | 1753|   283k|#  define XXH_rotl64 __builtin_rotateleft64
  ------------------
 2411|   283k|    acc *= XXH_PRIME64_1;
  ------------------
  |  | 2393|   283k|#define XXH_PRIME64_1  0x9E3779B185EBCA87ULL  /*!< 0b1001111000110111011110011011000110000101111010111100101010000111 */
  ------------------
 2412|   283k|    return acc;
 2413|   283k|}
xxhash.c:XXH_readLE64:
 2365|   283k|{
 2366|   283k|    return XXH_CPU_LITTLE_ENDIAN ? XXH_read64(ptr) : XXH_swap64(XXH_read64(ptr));
  ------------------
  |  | 1699|   283k|#    define XXH_CPU_LITTLE_ENDIAN 1
  |  |  ------------------
  |  |  |  Branch (1699:35): [True: 283k, Folded]
  |  |  ------------------
  ------------------
 2367|   283k|}
xxhash.c:XXH_read64:
 2307|   283k|{
 2308|   283k|    xxh_u64 val;
 2309|   283k|    XXH_memcpy(&val, memPtr, sizeof(val));
 2310|   283k|    return val;
 2311|   283k|}
xxhash.c:XXH64_mergeRound:
 2416|     52|{
 2417|     52|    val  = XXH64_round(0, val);
 2418|     52|    acc ^= val;
 2419|     52|    acc  = acc * XXH_PRIME64_1 + XXH_PRIME64_4;
  ------------------
  |  | 2393|     52|#define XXH_PRIME64_1  0x9E3779B185EBCA87ULL  /*!< 0b1001111000110111011110011011000110000101111010111100101010000111 */
  ------------------
                  acc  = acc * XXH_PRIME64_1 + XXH_PRIME64_4;
  ------------------
  |  | 2396|     52|#define XXH_PRIME64_4  0x85EBCA77C2B2AE63ULL  /*!< 0b1000010111101011110010100111011111000010101100101010111001100011 */
  ------------------
 2420|     52|    return acc;
 2421|     52|}
xxhash.c:XXH64_finalize:
 2438|     13|{
 2439|     13|    if (ptr==NULL) XXH_ASSERT(len == 0);
  ------------------
  |  | 1518|      0|#  define XXH_ASSERT(c)   ((void)0)
  ------------------
  |  Branch (2439:9): [True: 0, False: 13]
  ------------------
 2440|     13|    len &= 31;
 2441|     33|    while (len >= 8) {
  ------------------
  |  Branch (2441:12): [True: 20, False: 13]
  ------------------
 2442|     20|        xxh_u64 const k1 = XXH64_round(0, XXH_get64bits(ptr));
  ------------------
  |  | 2434|     20|#define XXH_get64bits(p) XXH_readLE64_align(p, align)
  ------------------
 2443|     20|        ptr += 8;
 2444|     20|        h64 ^= k1;
 2445|     20|        h64  = XXH_rotl64(h64,27) * XXH_PRIME64_1 + XXH_PRIME64_4;
  ------------------
  |  | 1753|     20|#  define XXH_rotl64 __builtin_rotateleft64
  ------------------
                      h64  = XXH_rotl64(h64,27) * XXH_PRIME64_1 + XXH_PRIME64_4;
  ------------------
  |  | 2393|     20|#define XXH_PRIME64_1  0x9E3779B185EBCA87ULL  /*!< 0b1001111000110111011110011011000110000101111010111100101010000111 */
  ------------------
                      h64  = XXH_rotl64(h64,27) * XXH_PRIME64_1 + XXH_PRIME64_4;
  ------------------
  |  | 2396|     20|#define XXH_PRIME64_4  0x85EBCA77C2B2AE63ULL  /*!< 0b1000010111101011110010100111011111000010101100101010111001100011 */
  ------------------
 2446|     20|        len -= 8;
 2447|     20|    }
 2448|     13|    if (len >= 4) {
  ------------------
  |  Branch (2448:9): [True: 0, False: 13]
  ------------------
 2449|      0|        h64 ^= (xxh_u64)(XXH_get32bits(ptr)) * XXH_PRIME64_1;
  ------------------
  |  | 1953|      0|#define XXH_get32bits(p) XXH_readLE32_align(p, align)
  ------------------
                      h64 ^= (xxh_u64)(XXH_get32bits(ptr)) * XXH_PRIME64_1;
  ------------------
  |  | 2393|      0|#define XXH_PRIME64_1  0x9E3779B185EBCA87ULL  /*!< 0b1001111000110111011110011011000110000101111010111100101010000111 */
  ------------------
 2450|      0|        ptr += 4;
 2451|      0|        h64 = XXH_rotl64(h64, 23) * XXH_PRIME64_2 + XXH_PRIME64_3;
  ------------------
  |  | 1753|      0|#  define XXH_rotl64 __builtin_rotateleft64
  ------------------
                      h64 = XXH_rotl64(h64, 23) * XXH_PRIME64_2 + XXH_PRIME64_3;
  ------------------
  |  | 2394|      0|#define XXH_PRIME64_2  0xC2B2AE3D27D4EB4FULL  /*!< 0b1100001010110010101011100011110100100111110101001110101101001111 */
  ------------------
                      h64 = XXH_rotl64(h64, 23) * XXH_PRIME64_2 + XXH_PRIME64_3;
  ------------------
  |  | 2395|      0|#define XXH_PRIME64_3  0x165667B19E3779F9ULL  /*!< 0b0001011001010110011001111011000110011110001101110111100111111001 */
  ------------------
 2452|      0|        len -= 4;
 2453|      0|    }
 2454|     13|    while (len > 0) {
  ------------------
  |  Branch (2454:12): [True: 0, False: 13]
  ------------------
 2455|      0|        h64 ^= (*ptr++) * XXH_PRIME64_5;
  ------------------
  |  | 2397|      0|#define XXH_PRIME64_5  0x27D4EB2F165667C5ULL  /*!< 0b0010011111010100111010110010111100010110010101100110011111000101 */
  ------------------
 2456|      0|        h64 = XXH_rotl64(h64, 11) * XXH_PRIME64_1;
  ------------------
  |  | 1753|      0|#  define XXH_rotl64 __builtin_rotateleft64
  ------------------
                      h64 = XXH_rotl64(h64, 11) * XXH_PRIME64_1;
  ------------------
  |  | 2393|      0|#define XXH_PRIME64_1  0x9E3779B185EBCA87ULL  /*!< 0b1001111000110111011110011011000110000101111010111100101010000111 */
  ------------------
 2457|      0|        --len;
 2458|      0|    }
 2459|     13|    return  XXH64_avalanche(h64);
 2460|     13|}
xxhash.c:XXH64_avalanche:
 2424|     13|{
 2425|     13|    h64 ^= h64 >> 33;
 2426|     13|    h64 *= XXH_PRIME64_2;
  ------------------
  |  | 2394|     13|#define XXH_PRIME64_2  0xC2B2AE3D27D4EB4FULL  /*!< 0b1100001010110010101011100011110100100111110101001110101101001111 */
  ------------------
 2427|     13|    h64 ^= h64 >> 29;
 2428|     13|    h64 *= XXH_PRIME64_3;
  ------------------
  |  | 2395|     13|#define XXH_PRIME64_3  0x165667B19E3779F9ULL  /*!< 0b0001011001010110011001111011000110011110001101110111100111111001 */
  ------------------
 2429|     13|    h64 ^= h64 >> 32;
 2430|     13|    return h64;
 2431|     13|}

ul_crc32:
  112|    185|{
  113|    185|	uint32_t crc = seed;
  114|    185|	const unsigned char *p = buf;
  115|       |
  116|   352k|	while (len) {
  ------------------
  |  Branch (116:9): [True: 351k, False: 185]
  ------------------
  117|   351k|		crc = crc32_add_char(crc, *p++);
  118|   351k|		len--;
  119|   351k|	}
  120|       |
  121|    185|	return crc;
  122|    185|}
ul_crc32_exclude_offset:
  126|    105|{
  127|    105|	uint32_t crc = seed;
  128|    105|	const unsigned char *p = buf;
  129|    105|	size_t i;
  130|       |
  131|   883k|	for (i = 0; i < len; i++) {
  ------------------
  |  Branch (131:14): [True: 883k, False: 105]
  ------------------
  132|   883k|		unsigned char x = *p++;
  133|       |
  134|   883k|		if (i >= exclude_off && i < exclude_off + exclude_len)
  ------------------
  |  Branch (134:7): [True: 882k, False: 1.19k]
  |  Branch (134:27): [True: 420, False: 882k]
  ------------------
  135|    420|			x = exclude_fill;
  136|       |
  137|   883k|		crc = crc32_add_char(crc, x);
  138|   883k|	}
  139|       |
  140|    105|	return crc;
  141|    105|}
crc32.c:crc32_add_char:
  102|  1.23M|{
  103|  1.23M|	return crc32_tab[(crc ^ c) & 0xff] ^ (crc >> 8);
  104|  1.23M|}

crc32c:
   96|  6.83k|{
   97|  6.83k|	const uint8_t *p = buf;
   98|       |
   99|  8.45M|	while (size--)
  ------------------
  |  Branch (99:9): [True: 8.45M, False: 6.83k]
  ------------------
  100|  8.45M|		crc = crc32Table[(crc ^ *p++) & 0xff] ^ (crc >> 8);
  101|       |
  102|  6.83k|	return crc;
  103|  6.83k|}
ul_crc32c_exclude_offset:
  108|     47|{
  109|     47|	size_t i;
  110|       |
  111|     47|	assert((exclude_off + exclude_len) <= size);
  ------------------
  |  Branch (111:2): [True: 0, False: 47]
  |  Branch (111:2): [True: 47, False: 0]
  ------------------
  112|       |
  113|     47|	crc = crc32c(crc, buf, exclude_off);
  114|    235|	for (i = 0; i < exclude_len; i++) {
  ------------------
  |  Branch (114:14): [True: 188, False: 47]
  ------------------
  115|    188|		uint8_t zero = 0;
  116|    188|		crc = crc32c(crc, &zero, 1);
  117|    188|	}
  118|     47|	crc = crc32c(crc, &buf[exclude_off + exclude_len],
  119|     47|		     size - (exclude_off + exclude_len));
  120|     47|	return crc;
  121|     47|}

ul_crc64_we:
  339|     43|{
  340|       |
  341|     43|	uint64_t crc;
  342|     43|	const unsigned char *ptr;
  343|     43|	size_t a;
  344|       |
  345|     43|	crc = CRC_START_64_WE;
  ------------------
  |  |   41|     43|#define		CRC_START_64_WE		0xFFFFFFFFFFFFFFFFull
  ------------------
  346|     43|	ptr = input_str;
  347|       |
  348|   567k|	if ( ptr != NULL ) for (a=0; a<num_bytes; a++) {
  ------------------
  |  Branch (348:7): [True: 43, False: 0]
  |  Branch (348:31): [True: 567k, False: 43]
  ------------------
  349|       |
  350|   567k|		crc = (crc << 8) ^ crc_tab64[ ((crc >> 56) ^ (uint64_t) *ptr++) & 0x00000000000000FFull ];
  351|   567k|	}
  352|       |
  353|     43|	return crc ^ 0xFFFFFFFFFFFFFFFFull;
  354|       |
  355|     43|}  /* crc_64_we */

ul_MD5Init:
   48|    121|{
   49|    121|    ctx->buf[0] = 0x67452301;
   50|    121|    ctx->buf[1] = 0xefcdab89;
   51|    121|    ctx->buf[2] = 0x98badcfe;
   52|    121|    ctx->buf[3] = 0x10325476;
   53|       |
   54|    121|    ctx->bits[0] = 0;
   55|    121|    ctx->bits[1] = 0;
   56|    121|}
ul_MD5Update:
   63|    242|{
   64|    242|    uint32_t t;
   65|       |
   66|       |    /* Update bitcount */
   67|       |
   68|    242|    t = ctx->bits[0];
   69|    242|    if ((ctx->bits[0] = t + ((uint32_t) len << 3)) < t)
  ------------------
  |  Branch (69:9): [True: 0, False: 242]
  ------------------
   70|      0|	ctx->bits[1]++;		/* Carry from low to high */
   71|    242|    ctx->bits[1] += len >> 29;
   72|       |
   73|    242|    t = (t >> 3) & 0x3f;	/* Bytes already in shsInfo->data */
   74|       |
   75|       |    /* Handle any leading odd-sized chunks */
   76|       |
   77|    242|    if (t) {
  ------------------
  |  Branch (77:9): [True: 121, False: 121]
  ------------------
   78|    121|	unsigned char *p = (unsigned char *) ctx->in + t;
   79|       |
   80|    121|	t = 64 - t;
   81|    121|	if (len < t) {
  ------------------
  |  Branch (81:6): [True: 121, False: 0]
  ------------------
   82|    121|	    memcpy(p, buf, len);
   83|    121|	    return;
   84|    121|	}
   85|      0|	memcpy(p, buf, t);
   86|      0|	byteReverse(ctx->in, 16);
   87|      0|	ul_MD5Transform(ctx->buf, (uint32_t *) ctx->in);
   88|      0|	buf += t;
   89|      0|	len -= t;
   90|      0|    }
   91|       |    /* Process data in 64-byte chunks */
   92|       |
   93|    121|    while (len >= 64) {
  ------------------
  |  Branch (93:12): [True: 0, False: 121]
  ------------------
   94|      0|	memcpy(ctx->in, buf, 64);
   95|      0|	byteReverse(ctx->in, 16);
   96|      0|	ul_MD5Transform(ctx->buf, (uint32_t *) ctx->in);
   97|      0|	buf += 64;
   98|      0|	len -= 64;
   99|      0|    }
  100|       |
  101|       |    /* Handle any remaining bytes of data. */
  102|       |
  103|    121|    memcpy(ctx->in, buf, len);
  104|    121|}
ul_MD5Final:
  111|    121|{
  112|    121|    unsigned count;
  113|    121|    unsigned char *p;
  114|       |
  115|       |    /* Compute number of bytes mod 64 */
  116|    121|    count = (ctx->bits[0] >> 3) & 0x3F;
  117|       |
  118|       |    /* Set the first char of padding to 0x80.  This is safe since there is
  119|       |       always at least one byte free */
  120|    121|    p = ctx->in + count;
  121|    121|    *p++ = 0x80;
  122|       |
  123|       |    /* Bytes of padding needed to make 64 bytes */
  124|    121|    count = 64 - 1 - count;
  125|       |
  126|       |    /* Pad out to 56 mod 64 */
  127|    121|    if (count < 8) {
  ------------------
  |  Branch (127:9): [True: 0, False: 121]
  ------------------
  128|       |	/* Two lots of padding:  Pad the first block to 64 bytes */
  129|      0|	memset(p, 0, count);
  130|      0|	byteReverse(ctx->in, 16);
  131|      0|	ul_MD5Transform(ctx->buf, (uint32_t *) ctx->in);
  132|       |
  133|       |	/* Now fill the next block with 56 bytes */
  134|      0|	memset(ctx->in, 0, 56);
  135|    121|    } else {
  136|       |	/* Pad block to 56 bytes */
  137|    121|	memset(p, 0, count - 8);
  138|    121|    }
  139|    121|    byteReverse(ctx->in, 14);
  140|       |
  141|       |    /* Append length in bits and transform.
  142|       |     * Use memcpy to avoid aliasing problems.  On most systems,
  143|       |     * this will be optimized away to the same code.
  144|       |     */
  145|    121|    memcpy(&ctx->in[14 * sizeof(uint32_t)], &ctx->bits[0], 4);
  146|    121|    memcpy(&ctx->in[15 * sizeof(uint32_t)], &ctx->bits[1], 4);
  147|       |
  148|    121|    ul_MD5Transform(ctx->buf, (uint32_t *) ctx->in);
  149|    121|    byteReverse((unsigned char *) ctx->buf, 4);
  150|    121|    memcpy(digest, ctx->buf, UL_MD5LENGTH);
  ------------------
  |  |   10|    121|#define UL_MD5LENGTH 16
  ------------------
  151|    121|    memset(ctx, 0, sizeof(*ctx));	/* In case it's sensitive */
  152|    121|}
ul_MD5Transform:
  174|    121|{
  175|    121|    register uint32_t a, b, c, d;
  176|       |
  177|    121|    a = buf[0];
  178|    121|    b = buf[1];
  179|    121|    c = buf[2];
  180|    121|    d = buf[3];
  181|       |
  182|    121|    MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  182|    121|    MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7);
  |  |  |  |  ------------------
  |  |  |  |  |  |  159|    121|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  183|    121|    MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  183|    121|    MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12);
  |  |  |  |  ------------------
  |  |  |  |  |  |  159|    121|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  184|    121|    MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  184|    121|    MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17);
  |  |  |  |  ------------------
  |  |  |  |  |  |  159|    121|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  185|    121|    MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  185|    121|    MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22);
  |  |  |  |  ------------------
  |  |  |  |  |  |  159|    121|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  186|    121|    MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  186|    121|    MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7);
  |  |  |  |  ------------------
  |  |  |  |  |  |  159|    121|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  187|    121|    MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  187|    121|    MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12);
  |  |  |  |  ------------------
  |  |  |  |  |  |  159|    121|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  188|    121|    MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  188|    121|    MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17);
  |  |  |  |  ------------------
  |  |  |  |  |  |  159|    121|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  189|    121|    MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  189|    121|    MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22);
  |  |  |  |  ------------------
  |  |  |  |  |  |  159|    121|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  190|    121|    MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  190|    121|    MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7);
  |  |  |  |  ------------------
  |  |  |  |  |  |  159|    121|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  191|    121|    MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  191|    121|    MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12);
  |  |  |  |  ------------------
  |  |  |  |  |  |  159|    121|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  192|    121|    MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  192|    121|    MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17);
  |  |  |  |  ------------------
  |  |  |  |  |  |  159|    121|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  193|    121|    MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  193|    121|    MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22);
  |  |  |  |  ------------------
  |  |  |  |  |  |  159|    121|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  194|    121|    MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  194|    121|    MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7);
  |  |  |  |  ------------------
  |  |  |  |  |  |  159|    121|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  195|    121|    MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  195|    121|    MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12);
  |  |  |  |  ------------------
  |  |  |  |  |  |  159|    121|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  196|    121|    MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  196|    121|    MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17);
  |  |  |  |  ------------------
  |  |  |  |  |  |  159|    121|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  197|    121|    MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  197|    121|    MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22);
  |  |  |  |  ------------------
  |  |  |  |  |  |  159|    121|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  198|       |
  199|    121|    MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  199|    121|    MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5);
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|    121|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|    121|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  200|    121|    MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  200|    121|    MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9);
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|    121|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|    121|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  201|    121|    MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  201|    121|    MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14);
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|    121|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|    121|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  202|    121|    MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  202|    121|    MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20);
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|    121|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|    121|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  203|    121|    MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  203|    121|    MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5);
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|    121|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|    121|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  204|    121|    MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  204|    121|    MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9);
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|    121|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|    121|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  205|    121|    MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  205|    121|    MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14);
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|    121|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|    121|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  206|    121|    MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  206|    121|    MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20);
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|    121|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|    121|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  207|    121|    MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  207|    121|    MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5);
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|    121|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|    121|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  208|    121|    MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  208|    121|    MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9);
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|    121|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|    121|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  209|    121|    MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  209|    121|    MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14);
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|    121|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|    121|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  210|    121|    MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  210|    121|    MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20);
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|    121|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|    121|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  211|    121|    MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  211|    121|    MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5);
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|    121|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|    121|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  212|    121|    MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  212|    121|    MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9);
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|    121|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|    121|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  213|    121|    MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  213|    121|    MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14);
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|    121|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|    121|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  214|    121|    MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  214|    121|    MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20);
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|    121|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|    121|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  215|       |
  216|    121|    MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  216|    121|    MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4);
  |  |  |  |  ------------------
  |  |  |  |  |  |  161|    121|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  217|    121|    MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  217|    121|    MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11);
  |  |  |  |  ------------------
  |  |  |  |  |  |  161|    121|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  218|    121|    MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  218|    121|    MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16);
  |  |  |  |  ------------------
  |  |  |  |  |  |  161|    121|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  219|    121|    MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  219|    121|    MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23);
  |  |  |  |  ------------------
  |  |  |  |  |  |  161|    121|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  220|    121|    MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  220|    121|    MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4);
  |  |  |  |  ------------------
  |  |  |  |  |  |  161|    121|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  221|    121|    MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  221|    121|    MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11);
  |  |  |  |  ------------------
  |  |  |  |  |  |  161|    121|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  222|    121|    MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  222|    121|    MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16);
  |  |  |  |  ------------------
  |  |  |  |  |  |  161|    121|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  223|    121|    MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  223|    121|    MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23);
  |  |  |  |  ------------------
  |  |  |  |  |  |  161|    121|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  224|    121|    MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  224|    121|    MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4);
  |  |  |  |  ------------------
  |  |  |  |  |  |  161|    121|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  225|    121|    MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  225|    121|    MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11);
  |  |  |  |  ------------------
  |  |  |  |  |  |  161|    121|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  226|    121|    MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  226|    121|    MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16);
  |  |  |  |  ------------------
  |  |  |  |  |  |  161|    121|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  227|    121|    MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  227|    121|    MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23);
  |  |  |  |  ------------------
  |  |  |  |  |  |  161|    121|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  228|    121|    MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  228|    121|    MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4);
  |  |  |  |  ------------------
  |  |  |  |  |  |  161|    121|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  229|    121|    MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  229|    121|    MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11);
  |  |  |  |  ------------------
  |  |  |  |  |  |  161|    121|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  230|    121|    MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  230|    121|    MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16);
  |  |  |  |  ------------------
  |  |  |  |  |  |  161|    121|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  231|    121|    MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  231|    121|    MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23);
  |  |  |  |  ------------------
  |  |  |  |  |  |  161|    121|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  232|       |
  233|    121|    MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  233|    121|    MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6);
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|    121|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  234|    121|    MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  234|    121|    MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10);
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|    121|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  235|    121|    MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  235|    121|    MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15);
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|    121|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  236|    121|    MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  236|    121|    MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21);
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|    121|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  237|    121|    MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  237|    121|    MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6);
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|    121|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  238|    121|    MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  238|    121|    MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10);
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|    121|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  239|    121|    MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  239|    121|    MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15);
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|    121|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  240|    121|    MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  240|    121|    MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21);
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|    121|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  241|    121|    MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  241|    121|    MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6);
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|    121|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  242|    121|    MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  242|    121|    MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10);
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|    121|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  243|    121|    MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  243|    121|    MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15);
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|    121|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  244|    121|    MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  244|    121|    MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21);
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|    121|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  245|    121|    MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  245|    121|    MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6);
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|    121|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  246|    121|    MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  246|    121|    MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10);
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|    121|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  247|    121|    MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  247|    121|    MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15);
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|    121|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  248|    121|    MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21);
  ------------------
  |  |  166|    121|	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
  |  |  ------------------
  |  |  |  |  248|    121|    MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21);
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|    121|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  249|       |
  250|    121|    buf[0] += a;
  251|    121|    buf[1] += b;
  252|    121|    buf[2] += c;
  253|    121|    buf[3] += d;
  254|    121|}

blkid_init_debug:
   49|      2|{
   50|      2|	if (libblkid_debug_mask)
  ------------------
  |  Branch (50:6): [True: 0, False: 2]
  ------------------
   51|      0|		return;
   52|       |
   53|      2|	__UL_INIT_DEBUG_FROM_ENV(libblkid, BLKID_DEBUG_, mask, LIBBLKID_DEBUG);
  ------------------
  |  |  116|      2|	do { \
  |  |  117|      2|		const char *envstr = mask ? NULL : getenv(# env); \
  |  |  ------------------
  |  |  |  Branch (117:24): [True: 0, False: 2]
  |  |  ------------------
  |  |  118|      2|		__UL_INIT_DEBUG_FROM_STRING(lib, pref, mask, envstr); \
  |  |  ------------------
  |  |  |  |   98|      2|	do { \
  |  |  |  |   99|      2|		if (UL_DEBUG_MASK(lib) & pref ## INIT) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      2|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  ------------------
  |  |  |  |               		if (UL_DEBUG_MASK(lib) & pref ## INIT) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  343|      2|#define BLKID_DEBUG_INIT	(1 << 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (99:7): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  100|      2|			; \
  |  |  |  |  101|      2|		else if (!mask && str) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (101:12): [True: 2, False: 0]
  |  |  |  |  |  Branch (101:21): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  102|      2|			UL_DEBUG_MASK(lib) = ul_debug_parse_mask(UL_DEBUG_MASKNAMES(lib), str); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  ------------------
  |  |  |  |               			UL_DEBUG_MASK(lib) = ul_debug_parse_mask(UL_DEBUG_MASKNAMES(lib), str); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|#define UL_DEBUG_MASKNAMES(lib)	lib ## _debug_masknames
  |  |  |  |  ------------------
  |  |  |  |  103|      2|		else \
  |  |  |  |  104|      2|			UL_DEBUG_MASK(lib) = mask; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      2|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  ------------------
  |  |  |  |  105|      2|		if (UL_DEBUG_MASK(lib)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      2|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:36): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  106|      0|			if (is_privileged_execution()) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (106:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  107|      0|				UL_DEBUG_MASK(lib) |= __UL_DEBUG_FL_NOADDR; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  ------------------
  |  |  |  |               				UL_DEBUG_MASK(lib) |= __UL_DEBUG_FL_NOADDR; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|#define __UL_DEBUG_FL_NOADDR	(1 << 24)	/* Don't print object address */
  |  |  |  |  ------------------
  |  |  |  |  108|      0|				fprintf(stderr, "%d: %s: don't print memory addresses (SUID executable).\n", getpid(), # lib); \
  |  |  |  |  109|      0|			} \
  |  |  |  |  110|      0|		} \
  |  |  |  |  111|      2|		UL_DEBUG_MASK(lib) |= pref ## INIT; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      2|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  ------------------
  |  |  |  |               		UL_DEBUG_MASK(lib) |= pref ## INIT; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  343|      2|#define BLKID_DEBUG_INIT	(1 << 1)
  |  |  |  |  ------------------
  |  |  |  |  112|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (112:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  119|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (119:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
   54|       |
   55|      2|	if (libblkid_debug_mask != BLKID_DEBUG_INIT
  ------------------
  |  |  343|      4|#define BLKID_DEBUG_INIT	(1 << 1)
  ------------------
  |  Branch (55:6): [True: 0, False: 2]
  ------------------
   56|      0|	    && libblkid_debug_mask != (BLKID_DEBUG_HELP|BLKID_DEBUG_INIT)) {
  ------------------
  |  |  342|      0|#define BLKID_DEBUG_HELP	(1 << 0)
  ------------------
              	    && libblkid_debug_mask != (BLKID_DEBUG_HELP|BLKID_DEBUG_INIT)) {
  ------------------
  |  |  343|      0|#define BLKID_DEBUG_INIT	(1 << 1)
  ------------------
  |  Branch (56:9): [True: 0, False: 0]
  ------------------
   57|      0|		const char *ver = NULL;
   58|      0|		const char *date = NULL;
   59|       |
   60|      0|		blkid_get_library_version(&ver, &date);
   61|      0|		DBG(INIT, ul_debug("library debug mask: 0x%08x", libblkid_debug_mask));
  ------------------
  |  |  358|      0|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      0|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  343|      0|#define BLKID_DEBUG_INIT	(1 << 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      0|		x; \
  |  |  |  |  |  |   85|      0|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   62|      0|		DBG(INIT, ul_debug("library version: %s [%s]", ver, date));
  ------------------
  |  |  358|      0|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      0|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  343|      0|#define BLKID_DEBUG_INIT	(1 << 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      0|		x; \
  |  |  |  |  |  |   85|      0|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   63|       |
   64|      0|	}
   65|      2|	ON_DBG(HELP, ul_debug_print_masks("LIBBLKID_DEBUG",
  ------------------
  |  |  360|      2|#define ON_DBG(m, x)		__UL_DBG_CALL(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   75|      2|	do { \
  |  |  |  |   76|      2|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  342|      2|#define BLKID_DEBUG_HELP	(1 << 0)
  |  |  |  |  ------------------
  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      2|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:7): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |   77|      0|			x; \
  |  |  |  |   78|      0|		} \
  |  |  |  |   79|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (79:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   66|      2|				UL_DEBUG_MASKNAMES(libblkid)));
   67|      2|}
init.c:blkid_init_default_debug:
   70|      2|{
   71|      2|	blkid_init_debug(0);
   72|      2|}

aix.c:probe_aix_pt:
   19|     26|{
   20|     26|	blkid_partlist ls;
   21|     26|	blkid_parttable tab;
   22|       |
   23|     26|	if (blkid_partitions_need_typeonly(pr))
  ------------------
  |  Branch (23:6): [True: 26, False: 0]
  ------------------
   24|       |		/* caller does not ask for details about partitions */
   25|     26|		return BLKID_PROBE_OK;
  ------------------
  |  |  465|     26|#define BLKID_PROBE_OK	0
  ------------------
   26|       |
   27|      0|	ls = blkid_probe_get_partlist(pr);
   28|      0|	if (!ls)
  ------------------
  |  Branch (28:6): [True: 0, False: 0]
  ------------------
   29|      0|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
   30|       |
   31|      0|	tab = blkid_partlist_new_parttable(ls, "aix", 0);
   32|      0|	if (!tab)
  ------------------
  |  Branch (32:6): [True: 0, False: 0]
  ------------------
   33|      0|		return -ENOMEM;
   34|       |
   35|      0|	return BLKID_PROBE_OK;
  ------------------
  |  |  465|      0|#define BLKID_PROBE_OK	0
  ------------------
   36|      0|}

atari.c:probe_atari_pt:
  194|  5.33k|{
  195|  5.33k|	struct atari_rootsector *rs;
  196|       |
  197|  5.33k|	blkid_parttable tab = NULL;
  198|  5.33k|	blkid_partlist ls;
  199|       |
  200|  5.33k|	unsigned i;
  201|  5.33k|	int has_xgm = 0;
  202|  5.33k|	int rc = 0;
  203|  5.33k|	uint32_t rssize;	/* size in sectors from root sector */
  204|  5.33k|	uint64_t size;		/* size in sectors from system */
  205|       |
  206|       |	/* Atari partition is not defined for other sector sizes */
  207|  5.33k|	if (blkid_probe_get_sectorsize(pr) != 512)
  ------------------
  |  Branch (207:6): [True: 0, False: 5.33k]
  ------------------
  208|      0|		goto nothing;
  209|       |
  210|  5.33k|	size = blkid_probe_get_size(pr) / 512;
  211|       |
  212|       |	/* Atari is not well defined to support large disks */
  213|  5.33k|	if (size > INT32_MAX)
  ------------------
  |  Branch (213:6): [True: 0, False: 5.33k]
  ------------------
  214|      0|		goto nothing;
  215|       |
  216|       |	/* read root sector */
  217|  5.33k|	rs = (struct atari_rootsector *) blkid_probe_get_sector(pr, 0);
  218|  5.33k|	if (!rs) {
  ------------------
  |  Branch (218:6): [True: 0, False: 5.33k]
  ------------------
  219|      0|		if (errno)
  ------------------
  |  Branch (219:7): [True: 0, False: 0]
  ------------------
  220|      0|			return -errno;
  221|      0|		goto nothing;
  222|      0|	}
  223|       |
  224|  5.33k|	rssize = be32_to_cpu(rs->hd_size);
  ------------------
  |  |  141|  5.33k|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  225|       |
  226|       |	/* check number of sectors stored in the root sector */
  227|  5.33k|	if (rssize < 2 || rssize > size)
  ------------------
  |  Branch (227:6): [True: 770, False: 4.56k]
  |  Branch (227:20): [True: 3.54k, False: 1.01k]
  ------------------
  228|  4.31k|		goto nothing;
  229|       |
  230|       |	/* check list of bad blocks */
  231|  1.01k|	if ((rs->bsl_start || rs->bsl_len)
  ------------------
  |  Branch (231:7): [True: 692, False: 323]
  |  Branch (231:24): [True: 120, False: 203]
  ------------------
  232|    812|	    && !is_valid_dimension(be32_to_cpu(rs->bsl_start),
  ------------------
  |  |  141|    812|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  |  Branch (232:9): [True: 715, False: 97]
  ------------------
  233|    812|				   be32_to_cpu(rs->bsl_len),
  ------------------
  |  |  141|    812|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  234|    812|				   rssize))
  235|    715|		goto nothing;
  236|       |
  237|       |	/*
  238|       |	 * At least one valid partition required
  239|       |	 */
  240|  1.49k|	for (i = 0; i < 4; i++) {
  ------------------
  |  Branch (240:14): [True: 1.19k, False: 294]
  ------------------
  241|  1.19k|		if (is_valid_partition(&rs->part[i], rssize)) {
  ------------------
  |  Branch (241:7): [True: 6, False: 1.19k]
  ------------------
  242|      6|			if (blkid_probe_set_magic(pr,
  ------------------
  |  Branch (242:8): [True: 0, False: 6]
  ------------------
  243|      6|					offsetof(struct atari_rootsector, part[i]),
  244|      6|					sizeof(rs->part[i].flags) + sizeof(rs->part[i].id),
  245|      6|					(unsigned char *) &rs->part[i]))
  246|      0|				goto err;
  247|      6|			break;
  248|      6|		}
  249|  1.19k|	}
  250|       |
  251|    300|	if (i == 4)
  ------------------
  |  Branch (251:6): [True: 294, False: 6]
  ------------------
  252|    294|		goto nothing;
  253|       |
  254|      6|	if (blkid_partitions_need_typeonly(pr))
  ------------------
  |  Branch (254:6): [True: 6, False: 0]
  ------------------
  255|       |		/* caller does not ask for details about partitions */
  256|      6|		return BLKID_PROBE_OK;
  ------------------
  |  |  465|      6|#define BLKID_PROBE_OK	0
  ------------------
  257|       |
  258|      0|	ls = blkid_probe_get_partlist(pr);
  259|      0|	if (!ls)
  ------------------
  |  Branch (259:6): [True: 0, False: 0]
  ------------------
  260|      0|		goto nothing;
  261|       |
  262|      0|	tab = blkid_partlist_new_parttable(ls, "atari", 0);
  263|      0|	if (!tab)
  ------------------
  |  Branch (263:6): [True: 0, False: 0]
  ------------------
  264|      0|		goto err;
  265|       |
  266|      0|	for (i = 0; i < ARRAY_SIZE(rs->part); i++) {
  ------------------
  |  |  182|      0|#define ARRAY_SIZE(arr) countof(arr)
  ------------------
  |  Branch (266:14): [True: 0, False: 0]
  ------------------
  267|      0|		struct atari_part_def *p = &rs->part[i];
  268|       |
  269|      0|		if (!IS_ACTIVE(*p)) {
  ------------------
  |  |   76|      0|#define IS_ACTIVE(partdef) ((partdef).flags & 1)
  ------------------
  |  Branch (269:7): [True: 0, False: 0]
  ------------------
  270|      0|			blkid_partlist_increment_partno(ls);
  271|      0|			continue;
  272|      0|		}
  273|      0|		if (!memcmp(p->id, "XGM", 3)) {
  ------------------
  |  Branch (273:7): [True: 0, False: 0]
  ------------------
  274|      0|			has_xgm = 1;
  275|      0|			rc = parse_extended(pr, ls, tab, p);
  276|      0|		} else {
  277|      0|			rc = parse_partition(ls, tab, p, 0);
  278|      0|		}
  279|      0|		if (rc < 0)
  ------------------
  |  Branch (279:7): [True: 0, False: 0]
  ------------------
  280|      0|			return rc;
  281|      0|	}
  282|       |
  283|       |	/* if there are no XGM partitions, we can try ICD format */
  284|       |	/* if first ICD partition ID is not valid, assume no ICD format */
  285|      0|	if (!has_xgm && is_id_common(rs->icd_part[0].id)) {
  ------------------
  |  Branch (285:6): [True: 0, False: 0]
  |  Branch (285:18): [True: 0, False: 0]
  ------------------
  286|      0|		for (i = 0; i < ARRAY_SIZE(rs->icd_part); i++) {
  ------------------
  |  |  182|      0|#define ARRAY_SIZE(arr) countof(arr)
  ------------------
  |  Branch (286:15): [True: 0, False: 0]
  ------------------
  287|      0|			struct atari_part_def *p = &rs->icd_part[i];
  288|       |
  289|      0|			if (!IS_ACTIVE(*p) || !is_id_common(p->id)) {
  ------------------
  |  |   76|      0|#define IS_ACTIVE(partdef) ((partdef).flags & 1)
  ------------------
  |  Branch (289:8): [True: 0, False: 0]
  |  Branch (289:26): [True: 0, False: 0]
  ------------------
  290|      0|				blkid_partlist_increment_partno(ls);
  291|      0|				continue;
  292|      0|			}
  293|       |
  294|      0|			rc = parse_partition(ls, tab, p, 0);
  295|      0|			if (rc < 0)
  ------------------
  |  Branch (295:8): [True: 0, False: 0]
  ------------------
  296|      0|				return rc;
  297|      0|		}
  298|      0|	}
  299|       |
  300|      0|	return BLKID_PROBE_OK;
  ------------------
  |  |  465|      0|#define BLKID_PROBE_OK	0
  ------------------
  301|       |
  302|  5.32k|nothing:
  303|  5.32k|	return BLKID_PROBE_NONE;
  ------------------
  |  |  471|  5.32k|#define BLKID_PROBE_NONE	1
  ------------------
  304|      0|err:
  305|       |	return -ENOMEM;
  306|      0|}
atari.c:is_valid_dimension:
   79|  1.27k|{
   80|  1.27k|	uint64_t end = start + size;
   81|       |
   82|  1.27k|	return  end >= start
  ------------------
  |  Branch (82:10): [True: 899, False: 374]
  ------------------
   83|    899|		&& 0 < start && start <= maxoff
  ------------------
  |  Branch (83:6): [True: 719, False: 180]
  |  Branch (83:19): [True: 381, False: 338]
  ------------------
   84|    381|		&& 0 < size && size <= maxoff
  ------------------
  |  Branch (84:6): [True: 359, False: 22]
  |  Branch (84:18): [True: 143, False: 216]
  ------------------
   85|    143|		&& 0 < end && end <= maxoff;
  ------------------
  |  Branch (85:6): [True: 143, False: 0]
  |  Branch (85:17): [True: 103, False: 40]
  ------------------
   86|  1.27k|}
atari.c:is_valid_partition:
   89|  1.19k|{
   90|  1.19k|	uint32_t start = be32_to_cpu(part->start),
  ------------------
  |  |  141|  1.19k|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
   91|  1.19k|		 size = be32_to_cpu(part->size);
  ------------------
  |  |  141|  1.19k|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
   92|       |
   93|  1.19k|	return (part->flags & 1)
  ------------------
  |  Branch (93:9): [True: 632, False: 565]
  ------------------
   94|    632|		&& isalnum(part->id[0])
  ------------------
  |  |   74|    632|#define isalnum linux_isalnum
  ------------------
  |  Branch (94:6): [True: 571, False: 61]
  ------------------
   95|    571|		&& isalnum(part->id[1])
  ------------------
  |  |   74|    571|#define isalnum linux_isalnum
  ------------------
  |  Branch (95:6): [True: 514, False: 57]
  ------------------
   96|    514|		&& isalnum(part->id[2])
  ------------------
  |  |   74|    514|#define isalnum linux_isalnum
  ------------------
  |  Branch (96:6): [True: 461, False: 53]
  ------------------
   97|    461|		&& is_valid_dimension(start, size, maxoff);
  ------------------
  |  Branch (97:6): [True: 6, False: 455]
  ------------------
   98|  1.19k|}
atari.c:linux_isalnum:
   70|  1.71k|{
   71|  1.71k|	return _linux_isalnum[c];
   72|  1.71k|}

bsd.c:probe_bsd_pt:
   42|  1.22k|{
   43|  1.22k|	struct bsd_disklabel *l;
   44|  1.22k|	struct bsd_partition *p;
   45|  1.22k|	const char *name = "bsd" ;
   46|  1.22k|	blkid_parttable tab = NULL;
   47|  1.22k|	blkid_partition parent;
   48|  1.22k|	blkid_partlist ls;
   49|  1.22k|	int i, nparts = BSD_MAXPARTITIONS;
  ------------------
  |  |    8|  1.22k|#define BSD_MAXPARTITIONS	16
  ------------------
   50|  1.22k|	const unsigned char *data;
   51|  1.22k|	int rc = BLKID_PROBE_NONE;
  ------------------
  |  |  471|  1.22k|#define BLKID_PROBE_NONE	1
  ------------------
   52|  1.22k|	uint64_t abs_offset = 0;
   53|       |
   54|  1.22k|	if (blkid_partitions_need_typeonly(pr))
  ------------------
  |  Branch (54:6): [True: 1.22k, False: 0]
  ------------------
   55|       |		/* caller does not ask for details about partitions */
   56|  1.22k|		return rc;
   57|       |
   58|      0|	data = blkid_probe_get_buffer(pr,
   59|      0|			(uint64_t) BLKID_MAG_SECTOR(mag) << 9,
  ------------------
  |  |   20|      0|#define BLKID_MAG_SECTOR(_mag)  (((_mag)->kboff / 2)  + ((_mag)->sboff >> 9))
  ------------------
   60|      0|			BLKID_MAG_LASTOFFSET(mag) + sizeof(struct bsd_disklabel));
  ------------------
  |  |   27|      0|		 (BLKID_MAG_OFFSET(_mag) - (BLKID_MAG_SECTOR(_mag) << 9))
  |  |  ------------------
  |  |  |  |   23|      0|#define BLKID_MAG_OFFSET(_mag)  ((_mag)->kboff << 10) + ((_mag)->sboff)
  |  |  ------------------
  |  |               		 (BLKID_MAG_OFFSET(_mag) - (BLKID_MAG_SECTOR(_mag) << 9))
  |  |  ------------------
  |  |  |  |   20|      0|#define BLKID_MAG_SECTOR(_mag)  (((_mag)->kboff / 2)  + ((_mag)->sboff >> 9))
  |  |  ------------------
  ------------------
   61|      0|	if (!data) {
  ------------------
  |  Branch (61:6): [True: 0, False: 0]
  ------------------
   62|      0|		if (errno)
  ------------------
  |  Branch (62:7): [True: 0, False: 0]
  ------------------
   63|      0|			rc = -errno;
   64|      0|		goto nothing;
   65|      0|	}
   66|       |
   67|      0|	l = (struct bsd_disklabel *) (data + BLKID_MAG_LASTOFFSET(mag));
  ------------------
  |  |   27|      0|		 (BLKID_MAG_OFFSET(_mag) - (BLKID_MAG_SECTOR(_mag) << 9))
  |  |  ------------------
  |  |  |  |   23|      0|#define BLKID_MAG_OFFSET(_mag)  ((_mag)->kboff << 10) + ((_mag)->sboff)
  |  |  ------------------
  |  |               		 (BLKID_MAG_OFFSET(_mag) - (BLKID_MAG_SECTOR(_mag) << 9))
  |  |  ------------------
  |  |  |  |   20|      0|#define BLKID_MAG_SECTOR(_mag)  (((_mag)->kboff / 2)  + ((_mag)->sboff >> 9))
  |  |  ------------------
  ------------------
   68|       |
   69|      0|	if (!blkid_probe_verify_csum(pr, bsd_checksum(l), le16_to_cpu(l->d_checksum))) {
  ------------------
  |  |  136|      0|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  |  Branch (69:6): [True: 0, False: 0]
  ------------------
   70|      0|		rc = BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
   71|      0|		goto nothing;
   72|      0|	}
   73|       |
   74|      0|	ls = blkid_probe_get_partlist(pr);
   75|      0|	if (!ls)
  ------------------
  |  Branch (75:6): [True: 0, False: 0]
  ------------------
   76|      0|		goto nothing;
   77|       |
   78|       |	/* try to determine the real type of BSD system according to
   79|       |	 * (parental) primary partition */
   80|      0|	parent = blkid_partlist_get_parent(ls);
   81|      0|	if (parent) {
  ------------------
  |  Branch (81:6): [True: 0, False: 0]
  ------------------
   82|      0|		switch(blkid_partition_get_type(parent)) {
   83|      0|		case MBR_FREEBSD_PARTITION:
  ------------------
  |  Branch (83:3): [True: 0, False: 0]
  ------------------
   84|      0|			name = "freebsd";
   85|      0|			abs_offset = blkid_partition_get_start(parent);
   86|      0|			break;
   87|      0|		case MBR_NETBSD_PARTITION:
  ------------------
  |  Branch (87:3): [True: 0, False: 0]
  ------------------
   88|      0|			name = "netbsd";
   89|      0|			break;
   90|      0|		case MBR_OPENBSD_PARTITION:
  ------------------
  |  Branch (90:3): [True: 0, False: 0]
  ------------------
   91|      0|			name = "openbsd";
   92|      0|			break;
   93|      0|		default:
  ------------------
  |  Branch (93:3): [True: 0, False: 0]
  ------------------
   94|      0|			DBG(LOWPROBE, ul_debug(
  ------------------
  |  |  358|      0|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      0|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      0|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      0|		x; \
  |  |  |  |  |  |   85|      0|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   95|      0|				"WARNING: BSD label detected on unknown (0x%x) "
   96|      0|				"primary partition",
   97|      0|				blkid_partition_get_type(parent)));
   98|      0|			break;
   99|      0|		}
  100|      0|	}
  101|       |
  102|      0|	tab = blkid_partlist_new_parttable(ls, name, BLKID_MAG_OFFSET(mag));
  ------------------
  |  |   23|      0|#define BLKID_MAG_OFFSET(_mag)  ((_mag)->kboff << 10) + ((_mag)->sboff)
  ------------------
  103|      0|	if (!tab) {
  ------------------
  |  Branch (103:6): [True: 0, False: 0]
  ------------------
  104|      0|		rc = -ENOMEM;
  105|      0|		goto nothing;
  106|      0|	}
  107|       |
  108|      0|	if (le16_to_cpu(l->d_npartitions) < BSD_MAXPARTITIONS)
  ------------------
  |  |  136|      0|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
              	if (le16_to_cpu(l->d_npartitions) < BSD_MAXPARTITIONS)
  ------------------
  |  |    8|      0|#define BSD_MAXPARTITIONS	16
  ------------------
  |  Branch (108:6): [True: 0, False: 0]
  ------------------
  109|      0|		nparts = le16_to_cpu(l->d_npartitions);
  ------------------
  |  |  136|      0|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  110|       |
  111|      0|	else if (le16_to_cpu(l->d_npartitions) > BSD_MAXPARTITIONS)
  ------------------
  |  |  136|      0|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
              	else if (le16_to_cpu(l->d_npartitions) > BSD_MAXPARTITIONS)
  ------------------
  |  |    8|      0|#define BSD_MAXPARTITIONS	16
  ------------------
  |  Branch (111:11): [True: 0, False: 0]
  ------------------
  112|      0|		DBG(LOWPROBE, ul_debug(
  ------------------
  |  |  358|      0|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      0|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      0|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  113|      0|			"WARNING: ignore %d more BSD partitions",
  114|      0|			le16_to_cpu(l->d_npartitions) - BSD_MAXPARTITIONS));
  115|       |
  116|      0|	for (i = 0, p = l->d_partitions; i < nparts; i++, p++) {
  ------------------
  |  Branch (116:35): [True: 0, False: 0]
  ------------------
  117|      0|		blkid_partition par;
  118|      0|		uint64_t start, size;
  119|       |
  120|      0|		if (p->p_fstype == BSD_FS_UNUSED)
  ------------------
  |  |  125|      0|#define	BSD_FS_UNUSED	0		/* unused */
  ------------------
  |  Branch (120:7): [True: 0, False: 0]
  ------------------
  121|      0|			continue;
  122|       |
  123|      0|		start = le32_to_cpu(p->p_offset);
  ------------------
  |  |  137|      0|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  124|      0|		size = le32_to_cpu(p->p_size);
  ------------------
  |  |  137|      0|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  125|       |
  126|       |		/* FreeBSD since version 10 uses relative offsets. We can use
  127|       |		 * 3rd partition (special wholedisk partition) to detect this
  128|       |		 * situation.
  129|       |		 */
  130|      0|		if (abs_offset && nparts >= 3
  ------------------
  |  Branch (130:7): [True: 0, False: 0]
  |  Branch (130:21): [True: 0, False: 0]
  ------------------
  131|      0|		    && le32_to_cpu(l->d_partitions[2].p_offset) == 0)
  ------------------
  |  |  137|      0|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (131:10): [True: 0, False: 0]
  ------------------
  132|      0|			start += abs_offset;
  133|       |
  134|      0|		if (parent && (uint64_t) blkid_partition_get_start(parent) == start
  ------------------
  |  Branch (134:7): [True: 0, False: 0]
  |  Branch (134:17): [True: 0, False: 0]
  ------------------
  135|      0|			   && (uint64_t) blkid_partition_get_size(parent) == size) {
  ------------------
  |  Branch (135:10): [True: 0, False: 0]
  ------------------
  136|      0|			DBG(LOWPROBE, ul_debug(
  ------------------
  |  |  358|      0|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      0|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      0|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      0|		x; \
  |  |  |  |  |  |   85|      0|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  137|      0|				"WARNING: BSD partition (%d) same like parent, "
  138|      0|				"ignore", i));
  139|      0|			continue;
  140|      0|		}
  141|      0|		if (parent && !blkid_is_nested_dimension(parent, start, size)) {
  ------------------
  |  Branch (141:7): [True: 0, False: 0]
  |  Branch (141:17): [True: 0, False: 0]
  ------------------
  142|      0|			DBG(LOWPROBE, ul_debug(
  ------------------
  |  |  358|      0|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      0|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      0|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      0|		x; \
  |  |  |  |  |  |   85|      0|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  143|      0|				"WARNING: BSD partition (%d) overflow "
  144|      0|				"detected, ignore", i));
  145|      0|			continue;
  146|      0|		}
  147|       |
  148|      0|		par = blkid_partlist_add_partition(ls, tab, start, size);
  149|      0|		if (!par) {
  ------------------
  |  Branch (149:7): [True: 0, False: 0]
  ------------------
  150|      0|			rc = -ENOMEM;
  151|      0|			goto nothing;
  152|      0|		}
  153|       |
  154|      0|		blkid_partition_set_type(par, p->p_fstype);
  155|      0|	}
  156|       |
  157|      0|	return BLKID_PROBE_OK;
  ------------------
  |  |  465|      0|#define BLKID_PROBE_OK	0
  ------------------
  158|       |
  159|      0|nothing:
  160|      0|	return rc;
  161|      0|}

dasd.c:probe_dasd_pt:
  274|  5.32k|{
  275|  5.32k|	const unsigned char *buf;
  276|  5.32k|	blkid_parttable tab = NULL;
  277|  5.32k|	blkid_partlist ls;
  278|  5.32k|	char volser[DASD_VOLSER_LENGTH + 1];
  279|  5.32k|	unsigned int blocksize;
  280|  5.32k|	bool is_cdl = false;
  281|  5.32k|	bool is_ldl = false;
  282|  5.32k|	const struct dasd_volume_label_cdl *cdl = NULL;
  283|  5.32k|	const struct dasd_volume_label_ldl *ldl = NULL;
  284|  5.32k|	const char *magic;
  285|  5.32k|	size_t i = 0;
  286|       |
  287|  5.32k|	blocksize = blkid_probe_get_sectorsize(pr);
  288|  5.32k|	buf = blkid_probe_get_buffer(pr,
  289|  5.32k|			(uint64_t) 2 * blocksize,
  290|  5.32k|			sizeof(struct dasd_volume_label_ldl));
  291|  5.32k|	if (!buf)
  ------------------
  |  Branch (291:6): [True: 0, False: 5.32k]
  ------------------
  292|      0|		return errno ? -errno : BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  |  Branch (292:10): [True: 0, False: 0]
  ------------------
  293|       |
  294|       |	/* CDL -- "VOL1" at byte 4 */
  295|  5.32k|	if (is_dasd_cdl_label(buf, sizeof(struct dasd_volume_label_ldl)))
  ------------------
  |  Branch (295:6): [True: 19, False: 5.30k]
  ------------------
  296|     19|		is_cdl = true;
  297|       |	/* LDL -- "LNX1" or "CMS1" at byte 0 */
  298|  5.30k|	else if (is_dasd_ldl_label(buf, sizeof(struct dasd_volume_label_ldl)))
  ------------------
  |  Branch (298:11): [True: 138, False: 5.16k]
  ------------------
  299|    138|		is_ldl = true;
  300|       |
  301|       |	/*
  302|       |	 * check the other known DASD block sizes as well in case we are
  303|       |	 * scanning e.g. 512 disk image
  304|       |	 */
  305|  5.32k|	if (!is_cdl && !is_ldl) {
  ------------------
  |  Branch (305:6): [True: 5.30k, False: 19]
  |  Branch (305:17): [True: 5.16k, False: 138]
  ------------------
  306|  25.4k|		for (i = 0; i < ARRAY_SIZE(dasd_blocksizes); i++) {
  ------------------
  |  |  182|  25.4k|#define ARRAY_SIZE(arr) countof(arr)
  ------------------
  |  Branch (306:15): [True: 20.4k, False: 5.01k]
  ------------------
  307|  20.4k|			if (dasd_blocksizes[i] == blocksize)
  ------------------
  |  Branch (307:8): [True: 5.01k, False: 15.4k]
  ------------------
  308|  5.01k|				continue;
  309|       |
  310|  15.4k|			buf = blkid_probe_get_buffer(pr,
  311|  15.4k|					(uint64_t) 2 * dasd_blocksizes[i],
  312|  15.4k|					sizeof(struct dasd_volume_label_ldl));
  313|  15.4k|			if (!buf) {
  ------------------
  |  Branch (313:8): [True: 0, False: 15.4k]
  ------------------
  314|      0|				if (errno)
  ------------------
  |  Branch (314:9): [True: 0, False: 0]
  ------------------
  315|      0|					return -errno;
  316|      0|				continue;
  317|      0|			}
  318|       |
  319|  15.4k|			if (is_dasd_cdl_label(buf, sizeof(struct dasd_volume_label_ldl))) {
  ------------------
  |  Branch (319:8): [True: 46, False: 15.3k]
  ------------------
  320|     46|				is_cdl = true;
  321|     46|				blocksize = dasd_blocksizes[i];
  322|     46|				break;
  323|     46|			}
  324|  15.3k|			if (is_dasd_ldl_label(buf, sizeof(struct dasd_volume_label_ldl))) {
  ------------------
  |  Branch (324:8): [True: 106, False: 15.2k]
  ------------------
  325|    106|				is_ldl = true;
  326|    106|				blocksize = dasd_blocksizes[i];
  327|    106|				break;
  328|    106|			}
  329|  15.3k|		}
  330|  5.16k|	}
  331|       |
  332|  5.32k|	if (!is_cdl && !is_ldl)
  ------------------
  |  Branch (332:6): [True: 5.26k, False: 65]
  |  Branch (332:17): [True: 5.01k, False: 244]
  ------------------
  333|  5.01k|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|  5.01k|#define BLKID_PROBE_NONE	1
  ------------------
  334|       |
  335|    309|	DBG(LOWPROBE, ul_debug("DASD: %s label detected (blocksize=%u)",
  ------------------
  |  |  358|    309|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|    309|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|    309|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|    309|	do { \
  |  |  |  |  |  |  |  |   76|    309|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|    309|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|    309|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 309]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (77:4): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|    309|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 309]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    309|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|    309|		x; \
  |  |  |  |  |  |   85|    309|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  336|    309|			is_cdl ? "CDL" : "LDL", blocksize));
  337|       |
  338|    309|	if (is_cdl) {
  ------------------
  |  Branch (338:6): [True: 65, False: 244]
  ------------------
  339|     65|		cdl = (const struct dasd_volume_label_cdl *) buf;
  340|       |
  341|     65|		if (blkid_probe_set_magic(pr,
  ------------------
  |  Branch (341:7): [True: 0, False: 65]
  ------------------
  342|     65|				(uint64_t) 2 * blocksize +
  343|     65|					offsetof(struct dasd_volume_label_cdl, vollbl),
  344|     65|				4, (const unsigned char *) DASD_VOL1_MAGIC))
  ------------------
  |  |   13|     65|#define DASD_VOL1_MAGIC		"\xe5\xd6\xd3\xf1"	/* "VOL1" in EBCDIC */
  ------------------
  345|      0|			return BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  346|       |
  347|     65|		dasd_get_volser(cdl->volid, volser, sizeof(volser));
  348|    244|	} else {
  349|    244|		ldl = (const struct dasd_volume_label_ldl *) buf;
  350|    244|		magic = memcmp(buf, DASD_LNX1_MAGIC, 4) == 0 ? DASD_LNX1_MAGIC : DASD_CMS1_MAGIC;
  ------------------
  |  |   14|    244|#define DASD_LNX1_MAGIC		"\xd3\xd5\xe7\xf1"	/* "LNX1" in EBCDIC */
  ------------------
              		magic = memcmp(buf, DASD_LNX1_MAGIC, 4) == 0 ? DASD_LNX1_MAGIC : DASD_CMS1_MAGIC;
  ------------------
  |  |   14|    100|#define DASD_LNX1_MAGIC		"\xd3\xd5\xe7\xf1"	/* "LNX1" in EBCDIC */
  ------------------
              		magic = memcmp(buf, DASD_LNX1_MAGIC, 4) == 0 ? DASD_LNX1_MAGIC : DASD_CMS1_MAGIC;
  ------------------
  |  |   15|    388|#define DASD_CMS1_MAGIC		"\xc3\xd4\xe2\xf1"	/* "CMS1" in EBCDIC */
  ------------------
  |  Branch (350:11): [True: 100, False: 144]
  ------------------
  351|       |
  352|    244|		if (blkid_probe_set_magic(pr,
  ------------------
  |  Branch (352:7): [True: 0, False: 244]
  ------------------
  353|    244|				(uint64_t) 2 * blocksize +
  354|    244|					offsetof(struct dasd_volume_label_ldl, vollbl),
  355|    244|				4, (const unsigned char *) magic))
  356|      0|			return BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  357|       |
  358|    244|		dasd_get_volser(ldl->volid, volser, sizeof(volser));
  359|    244|	}
  360|       |
  361|    309|	blkid_partitions_strcpy_ptuuid(pr, volser);
  362|       |
  363|    309|	if (blkid_partitions_need_typeonly(pr))
  ------------------
  |  Branch (363:6): [True: 309, False: 0]
  ------------------
  364|    309|		return BLKID_PROBE_OK;
  ------------------
  |  |  465|    309|#define BLKID_PROBE_OK	0
  ------------------
  365|       |
  366|      0|	ls = blkid_probe_get_partlist(pr);
  367|      0|	if (!ls)
  ------------------
  |  Branch (367:6): [True: 0, False: 0]
  ------------------
  368|      0|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  369|       |
  370|      0|	tab = blkid_partlist_new_parttable(ls, "dasd", 0);
  371|      0|	if (!tab)
  ------------------
  |  Branch (371:6): [True: 0, False: 0]
  ------------------
  372|      0|		return -ENOMEM;
  373|       |
  374|      0|	blkid_parttable_set_id(tab, (unsigned char *) volser);
  375|       |
  376|      0|	if (is_cdl)
  ------------------
  |  Branch (376:6): [True: 0, False: 0]
  ------------------
  377|      0|		return probe_dasd_pt_cdl(pr, ls, tab, blocksize);
  378|       |
  379|      0|	return probe_dasd_pt_ldl(pr, ls, tab, ldl, blocksize);
  380|      0|}
dasd.c:is_dasd_cdl_label:
   67|  20.7k|{
   68|  20.7k|	if (bufsz < sizeof(DASD_VOL1_MAGIC) - 1 + offsetof(struct dasd_volume_label_cdl, vollbl))
  ------------------
  |  |   13|  20.7k|#define DASD_VOL1_MAGIC		"\xe5\xd6\xd3\xf1"	/* "VOL1" in EBCDIC */
  ------------------
  |  Branch (68:6): [True: 0, False: 20.7k]
  ------------------
   69|      0|		return false;
   70|  20.7k|	return memcmp(buf + offsetof(struct dasd_volume_label_cdl, vollbl),
   71|  20.7k|		      DASD_VOL1_MAGIC, sizeof(DASD_VOL1_MAGIC) - 1) == 0;
  ------------------
  |  |   13|  20.7k|#define DASD_VOL1_MAGIC		"\xe5\xd6\xd3\xf1"	/* "VOL1" in EBCDIC */
  ------------------
              		      DASD_VOL1_MAGIC, sizeof(DASD_VOL1_MAGIC) - 1) == 0;
  ------------------
  |  |   13|  20.7k|#define DASD_VOL1_MAGIC		"\xe5\xd6\xd3\xf1"	/* "VOL1" in EBCDIC */
  ------------------
   72|  20.7k|}
dasd.c:is_dasd_ldl_label:
   75|  20.6k|{
   76|  20.6k|	if (bufsz < sizeof(DASD_LNX1_MAGIC) - 1)
  ------------------
  |  |   14|  20.6k|#define DASD_LNX1_MAGIC		"\xd3\xd5\xe7\xf1"	/* "LNX1" in EBCDIC */
  ------------------
  |  Branch (76:6): [True: 0, False: 20.6k]
  ------------------
   77|      0|		return false;
   78|  20.6k|	return memcmp(buf, DASD_LNX1_MAGIC, sizeof(DASD_LNX1_MAGIC) - 1) == 0 ||
  ------------------
  |  |   14|  20.6k|#define DASD_LNX1_MAGIC		"\xd3\xd5\xe7\xf1"	/* "LNX1" in EBCDIC */
  ------------------
              	return memcmp(buf, DASD_LNX1_MAGIC, sizeof(DASD_LNX1_MAGIC) - 1) == 0 ||
  ------------------
  |  |   14|  20.6k|#define DASD_LNX1_MAGIC		"\xd3\xd5\xe7\xf1"	/* "LNX1" in EBCDIC */
  ------------------
  |  Branch (78:9): [True: 100, False: 20.5k]
  ------------------
   79|  20.5k|	       memcmp(buf, DASD_CMS1_MAGIC, sizeof(DASD_CMS1_MAGIC) - 1) == 0;
  ------------------
  |  |   15|  20.5k|#define DASD_CMS1_MAGIC		"\xc3\xd4\xe2\xf1"	/* "CMS1" in EBCDIC */
  ------------------
              	       memcmp(buf, DASD_CMS1_MAGIC, sizeof(DASD_CMS1_MAGIC) - 1) == 0;
  ------------------
  |  |   15|  20.5k|#define DASD_CMS1_MAGIC		"\xc3\xd4\xe2\xf1"	/* "CMS1" in EBCDIC */
  ------------------
  |  Branch (79:9): [True: 144, False: 20.4k]
  ------------------
   80|  20.6k|}
dasd.c:dasd_get_volser:
   24|    309|{
   25|    309|	size_t i;
   26|       |
   27|  2.16k|	for (i = 0; i < DASD_VOLSER_LENGTH && i < volsersz - 1; i++)
  ------------------
  |  |   27|  4.32k|#define DASD_VOLSER_LENGTH	6
  ------------------
  |  Branch (27:14): [True: 1.85k, False: 309]
  |  Branch (27:40): [True: 1.85k, False: 0]
  ------------------
   28|  1.85k|		volser[i] = dasd_ebcdic_to_ascii[(unsigned char) volid[i]];
   29|    309|	volser[i] = '\0';
   30|       |
   31|    309|	rtrim_whitespace((unsigned char *) volser);
   32|    309|}

dos.c:probe_dos_pt:
  198|  1.82k|{
  199|  1.82k|	int i;
  200|  1.82k|	int ssf;
  201|  1.82k|	blkid_parttable tab = NULL;
  202|  1.82k|	blkid_partlist ls;
  203|  1.82k|	const struct dos_partition *p0, *p;
  204|  1.82k|	const unsigned char *data;
  205|  1.82k|	uint64_t start, size;
  206|  1.82k|	uint32_t id;
  207|  1.82k|	char idstr[UUID_STR_LEN];
  208|       |
  209|       |
  210|  1.82k|	data = blkid_probe_get_sector(pr, 0);
  211|  1.82k|	if (!data) {
  ------------------
  |  Branch (211:6): [True: 0, False: 1.82k]
  ------------------
  212|      0|		if (errno)
  ------------------
  |  Branch (212:7): [True: 0, False: 0]
  ------------------
  213|      0|			return -errno;
  214|      0|		goto nothing;
  215|      0|	}
  216|       |
  217|       |	/* ignore disks with AIX magic number -- for more details see aix.c */
  218|  1.82k|	if (memcmp(data, BLKID_AIX_MAGIC_STRING, BLKID_AIX_MAGIC_STRLEN) == 0)
  ------------------
  |  |    4|  1.82k|#define BLKID_AIX_MAGIC_STRING	"\xC9\xC2\xD4\xC1"
  ------------------
              	if (memcmp(data, BLKID_AIX_MAGIC_STRING, BLKID_AIX_MAGIC_STRLEN) == 0)
  ------------------
  |  |    5|  1.82k|#define BLKID_AIX_MAGIC_STRLEN	(sizeof(BLKID_AIX_MAGIC_STRING) - 1)
  |  |  ------------------
  |  |  |  |    4|  1.82k|#define BLKID_AIX_MAGIC_STRING	"\xC9\xC2\xD4\xC1"
  |  |  ------------------
  ------------------
  |  Branch (218:6): [True: 0, False: 1.82k]
  ------------------
  219|      0|		goto nothing;
  220|       |
  221|  1.82k|	p0 = mbr_get_partition(data, 0);
  222|       |
  223|       |	/*
  224|       |	 * Reject PT where boot indicator is not 0 or 0x80.
  225|       |	 */
  226|  3.66k|	for (p = p0, i = 0; i < 4; i++, p++)
  ------------------
  |  Branch (226:22): [True: 3.41k, False: 256]
  ------------------
  227|  3.41k|		if (p->boot_ind != 0 && p->boot_ind != 0x80) {
  ------------------
  |  Branch (227:7): [True: 1.59k, False: 1.82k]
  |  Branch (227:27): [True: 1.56k, False: 27]
  ------------------
  228|  1.56k|			DBG(LOWPROBE, ul_debug("missing boot indicator -- ignore"));
  ------------------
  |  |  358|  1.56k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  1.56k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  1.56k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  1.56k|	do { \
  |  |  |  |  |  |  |  |   76|  1.56k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  1.56k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  1.56k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 1.56k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  1.56k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 1.56k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  1.56k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  1.56k|		x; \
  |  |  |  |  |  |   85|  1.56k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  229|  1.56k|			goto nothing;
  230|  1.56k|		}
  231|       |
  232|       |	/*
  233|       |	 * GPT uses valid MBR
  234|       |	 */
  235|  1.27k|	for (p = p0, i = 0; i < 4; i++, p++) {
  ------------------
  |  Branch (235:22): [True: 1.02k, False: 255]
  ------------------
  236|  1.02k|		if (p->sys_ind == MBR_GPT_PARTITION) {
  ------------------
  |  Branch (236:7): [True: 1, False: 1.02k]
  ------------------
  237|      1|			DBG(LOWPROBE, ul_debug("probably GPT -- ignore"));
  ------------------
  |  |  358|      1|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      1|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      1|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      1|	do { \
  |  |  |  |  |  |  |  |   76|      1|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      1|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      1|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      1|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      1|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      1|		x; \
  |  |  |  |  |  |   85|      1|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  238|      1|			goto nothing;
  239|      1|		}
  240|  1.02k|	}
  241|       |
  242|       |	/*
  243|       |	 * Now that the 55aa signature is present, this is probably
  244|       |	 * either the boot sector of a FAT filesystem or a DOS-type
  245|       |	 * partition table.
  246|       |	 */
  247|    255|	if (blkid_probe_is_vfat(pr) == 1 || blkid_probe_is_exfat(pr) == 1) {
  ------------------
  |  Branch (247:6): [True: 134, False: 121]
  |  Branch (247:38): [True: 0, False: 121]
  ------------------
  248|    134|		DBG(LOWPROBE, ul_debug("probably FAT -- ignore"));
  ------------------
  |  |  358|    134|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|    134|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|    134|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|    134|	do { \
  |  |  |  |  |  |  |  |   76|    134|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|    134|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|    134|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 134]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|    134|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 134]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    134|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|    134|		x; \
  |  |  |  |  |  |   85|    134|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  249|    134|		goto nothing;
  250|    134|	}
  251|       |
  252|       |	/* Another false positive is NTFS */
  253|    121|	if (blkid_probe_is_ntfs(pr) == 1) {
  ------------------
  |  Branch (253:6): [True: 18, False: 103]
  ------------------
  254|     18|		DBG(LOWPROBE, ul_debug("probably NTFS -- ignore"));
  ------------------
  |  |  358|     18|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|     18|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|     18|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|     18|	do { \
  |  |  |  |  |  |  |  |   76|     18|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|     18|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|     18|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 18]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|     18|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 18]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|     18|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|     18|		x; \
  |  |  |  |  |  |   85|     18|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  255|     18|		goto nothing;
  256|     18|	}
  257|       |
  258|       |	/*
  259|       |	 * Ugly exception, if the device contains a valid LVM physical volume
  260|       |	 * and empty MBR (=no partition defined) then it's LVM and MBR should
  261|       |	 * be ignored. Crazy people use it to boot from LVM devices.
  262|       |	 */
  263|    103|	if (is_lvm(pr) && is_empty_mbr(data)) {
  ------------------
  |  Branch (263:6): [True: 0, False: 103]
  |  Branch (263:20): [True: 0, False: 0]
  ------------------
  264|      0|		DBG(LOWPROBE, ul_debug("empty MBR on LVM device -- ignore"));
  ------------------
  |  |  358|      0|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      0|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      0|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      0|		x; \
  |  |  |  |  |  |   85|      0|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  265|      0|		goto nothing;
  266|      0|	}
  267|       |
  268|    103|	blkid_probe_use_wiper(pr, MBR_PT_OFFSET, 512 - MBR_PT_OFFSET);
  ------------------
  |  |   19|    103|#define MBR_PT_OFFSET		0x1be
  ------------------
              	blkid_probe_use_wiper(pr, MBR_PT_OFFSET, 512 - MBR_PT_OFFSET);
  ------------------
  |  |   19|    103|#define MBR_PT_OFFSET		0x1be
  ------------------
  269|       |
  270|    103|	id = mbr_get_id(data);
  271|    103|	if (id)
  ------------------
  |  Branch (271:6): [True: 64, False: 39]
  ------------------
  272|     64|		snprintf(idstr, sizeof(idstr), "%08x", id);
  273|       |
  274|       |	/*
  275|       |	 * Well, all checks pass, it's MS-DOS partition table
  276|       |	 */
  277|    103|	if (blkid_partitions_need_typeonly(pr)) {
  ------------------
  |  Branch (277:6): [True: 103, False: 0]
  ------------------
  278|       |		/* Non-binary interface -- caller does not ask for details
  279|       |		 * about partitions, just set generic variables only. */
  280|    103|		if (id)
  ------------------
  |  Branch (280:7): [True: 64, False: 39]
  ------------------
  281|     64|			blkid_partitions_strcpy_ptuuid(pr, idstr);
  282|    103|		return 0;
  283|    103|	}
  284|       |
  285|      0|	ls = blkid_probe_get_partlist(pr);
  286|      0|	if (!ls)
  ------------------
  |  Branch (286:6): [True: 0, False: 0]
  ------------------
  287|      0|		goto nothing;
  288|       |
  289|       |	/* sector size factor (the start and size are in the real sectors, but
  290|       |	 * we need to convert all sizes to 512 logical sectors
  291|       |	 */
  292|      0|	ssf = blkid_probe_get_sectorsize(pr) / 512;
  293|       |
  294|       |	/* allocate a new partition table */
  295|      0|	tab = blkid_partlist_new_parttable(ls, "dos", MBR_PT_OFFSET);
  ------------------
  |  |   19|      0|#define MBR_PT_OFFSET		0x1be
  ------------------
  296|      0|	if (!tab)
  ------------------
  |  Branch (296:6): [True: 0, False: 0]
  ------------------
  297|      0|		return -ENOMEM;
  298|       |
  299|      0|	if (id)
  ------------------
  |  Branch (299:6): [True: 0, False: 0]
  ------------------
  300|      0|		blkid_parttable_set_id(tab, (unsigned char *) idstr);
  301|       |
  302|       |	/* Parse primary partitions */
  303|      0|	for (p = p0, i = 0; i < 4; i++, p++) {
  ------------------
  |  Branch (303:22): [True: 0, False: 0]
  ------------------
  304|      0|		blkid_partition par;
  305|       |
  306|      0|		start = (uint64_t) dos_partition_get_start(p) * ssf;
  307|      0|		size = (uint64_t) dos_partition_get_size(p) * ssf;
  308|       |
  309|      0|		if (!size) {
  ------------------
  |  Branch (309:7): [True: 0, False: 0]
  ------------------
  310|       |			/* Linux kernel ignores empty partitions, but partno for
  311|       |			 * the empty primary partitions is not reused */
  312|      0|			blkid_partlist_increment_partno(ls);
  313|      0|			continue;
  314|      0|		}
  315|      0|		par = blkid_partlist_add_partition(ls, tab, start, size);
  316|      0|		if (!par)
  ------------------
  |  Branch (316:7): [True: 0, False: 0]
  ------------------
  317|      0|			return -ENOMEM;
  318|       |
  319|      0|		blkid_partition_set_type(par, p->sys_ind);
  320|      0|		blkid_partition_set_flags(par, p->boot_ind);
  321|      0|		blkid_partition_gen_uuid(par);
  322|      0|	}
  323|       |
  324|       |	/* Linux uses partition numbers greater than 4
  325|       |	 * for all logical partition and all nested partition tables (bsd, ..)
  326|       |	 */
  327|      0|	blkid_partlist_set_partno(ls, 5);
  328|       |
  329|       |	/* Parse logical partitions */
  330|      0|	for (p = p0, i = 0; i < 4; i++, p++) {
  ------------------
  |  Branch (330:22): [True: 0, False: 0]
  ------------------
  331|      0|		start = (uint64_t) dos_partition_get_start(p) * ssf;
  332|      0|		size = (uint64_t) dos_partition_get_size(p) * ssf;
  333|       |
  334|      0|		if (!size)
  ------------------
  |  Branch (334:7): [True: 0, False: 0]
  ------------------
  335|      0|			continue;
  336|      0|		if (is_extended(p) &&
  ------------------
  |  Branch (336:7): [True: 0, False: 0]
  ------------------
  337|      0|		    parse_dos_extended(pr, tab, start, size, ssf) == -1)
  ------------------
  |  Branch (337:7): [True: 0, False: 0]
  ------------------
  338|      0|			goto nothing;
  339|      0|	}
  340|       |
  341|       |	/* Parse subtypes (nested partitions) on large disks */
  342|      0|	if (!blkid_probe_is_tiny(pr)) {
  ------------------
  |  Branch (342:6): [True: 0, False: 0]
  ------------------
  343|      0|		int nparts = blkid_partlist_numof_partitions(ls);
  344|       |
  345|      0|		DBG(LOWPROBE, ul_debug("checking for subtypes"));
  ------------------
  |  |  358|      0|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      0|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      0|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      0|		x; \
  |  |  |  |  |  |   85|      0|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  346|       |
  347|      0|		for (i = 0; i < nparts; i++) {
  ------------------
  |  Branch (347:15): [True: 0, False: 0]
  ------------------
  348|      0|			size_t n;
  349|      0|			int type;
  350|      0|			blkid_partition pa = blkid_partlist_get_partition(ls, i);
  351|       |
  352|      0|			if (pa == NULL
  ------------------
  |  Branch (352:8): [True: 0, False: 0]
  ------------------
  353|      0|			    || blkid_partition_get_size(pa) == 0
  ------------------
  |  Branch (353:11): [True: 0, False: 0]
  ------------------
  354|      0|			    || blkid_partition_is_extended(pa)
  ------------------
  |  Branch (354:11): [True: 0, False: 0]
  ------------------
  355|      0|			    || blkid_partition_is_logical(pa))
  ------------------
  |  Branch (355:11): [True: 0, False: 0]
  ------------------
  356|      0|				continue;
  357|       |
  358|      0|			type = blkid_partition_get_type(pa);
  359|       |
  360|      0|			for (n = 0; n < ARRAY_SIZE(dos_nested); n++) {
  ------------------
  |  |  182|      0|#define ARRAY_SIZE(arr) countof(arr)
  ------------------
  |  Branch (360:16): [True: 0, False: 0]
  ------------------
  361|      0|				int rc;
  362|       |
  363|      0|				if (dos_nested[n].type != type)
  ------------------
  |  Branch (363:9): [True: 0, False: 0]
  ------------------
  364|      0|					continue;
  365|       |
  366|      0|				rc = blkid_partitions_do_subprobe(pr, pa,
  367|      0|							dos_nested[n].id);
  368|      0|				if (rc < 0)
  ------------------
  |  Branch (368:9): [True: 0, False: 0]
  ------------------
  369|      0|					return rc;
  370|      0|				break;
  371|      0|			}
  372|      0|		}
  373|      0|	}
  374|      0|	return BLKID_PROBE_OK;
  ------------------
  |  |  465|      0|#define BLKID_PROBE_OK	0
  ------------------
  375|       |
  376|  1.71k|nothing:
  377|  1.71k|	return BLKID_PROBE_NONE;
  ------------------
  |  |  471|  1.71k|#define BLKID_PROBE_NONE	1
  ------------------
  378|      0|}
dos.c:is_lvm:
  176|    103|{
  177|    103|	struct blkid_prval *v = __blkid_probe_lookup_value(pr, "TYPE");
  178|       |
  179|    103|	return (v && v->data && strcmp((char *) v->data, "LVM2_member") == 0);
  ------------------
  |  Branch (179:10): [True: 39, False: 64]
  |  Branch (179:15): [True: 39, False: 0]
  |  Branch (179:26): [True: 0, False: 39]
  ------------------
  180|    103|}

gpt.c:probe_gpt_pt:
  307|  5.39k|{
  308|  5.39k|	uint64_t lastlba = 0, lba;
  309|  5.39k|	struct gpt_header hdr, *h;
  310|  5.39k|	struct gpt_entry *e;
  311|  5.39k|	blkid_parttable tab = NULL;
  312|  5.39k|	blkid_partlist ls;
  313|  5.39k|	uint64_t fu, lu;
  314|  5.39k|	uint32_t ssf, i;
  315|  5.39k|	efi_guid_t guid;
  316|  5.39k|	int ret;
  317|       |
  318|  5.39k|	if (last_lba(pr, &lastlba))
  ------------------
  |  Branch (318:6): [True: 0, False: 5.39k]
  ------------------
  319|      0|		goto nothing;
  320|       |
  321|  5.39k|	ret = is_pmbr_valid(pr, NULL);
  322|  5.39k|	if (ret < 0)
  ------------------
  |  Branch (322:6): [True: 0, False: 5.39k]
  ------------------
  323|      0|		return ret;
  324|  5.39k|	if (ret == 0)
  ------------------
  |  Branch (324:6): [True: 5.34k, False: 55]
  ------------------
  325|  5.34k|		goto nothing;
  326|       |
  327|  5.39k|	errno = 0;
  328|     55|	h = get_gpt_header(pr, &hdr, &e, (lba = GPT_PRIMARY_LBA), lastlba);
  ------------------
  |  |   26|     55|#define GPT_PRIMARY_LBA	1
  ------------------
  329|     55|	if (!h && !errno)
  ------------------
  |  Branch (329:6): [True: 55, False: 0]
  |  Branch (329:12): [True: 55, False: 0]
  ------------------
  330|     55|		h = get_gpt_header(pr, &hdr, &e, (lba = lastlba), lastlba);
  331|       |
  332|     55|	if (!h) {
  ------------------
  |  Branch (332:6): [True: 55, False: 0]
  ------------------
  333|     55|		if (errno)
  ------------------
  |  Branch (333:7): [True: 0, False: 55]
  ------------------
  334|      0|			return -errno;
  335|     55|		goto nothing;
  336|     55|	}
  337|       |
  338|      0|	blkid_probe_use_wiper(pr, lba * blkid_probe_get_sectorsize(pr), 8);
  339|       |
  340|      0|	if (blkid_probe_set_magic(pr, blkid_probe_get_sectorsize(pr) * lba,
  ------------------
  |  Branch (340:6): [True: 0, False: 0]
  ------------------
  341|      0|			      sizeof(GPT_HEADER_SIGNATURE_STR) - 1,
  ------------------
  |  |   30|      0|#define GPT_HEADER_SIGNATURE_STR "EFI PART"
  ------------------
  342|      0|			      (unsigned char *) GPT_HEADER_SIGNATURE_STR))
  ------------------
  |  |   30|      0|#define GPT_HEADER_SIGNATURE_STR "EFI PART"
  ------------------
  343|      0|		goto err;
  344|       |
  345|      0|	guid = h->disk_guid;
  346|      0|	swap_efi_guid(&guid);
  347|       |
  348|      0|	if (blkid_partitions_need_typeonly(pr)) {
  ------------------
  |  Branch (348:6): [True: 0, False: 0]
  ------------------
  349|       |		/* Non-binary interface -- caller does not ask for details
  350|       |		 * about partitions, just set generic variables only. */
  351|      0|		blkid_partitions_set_ptuuid(pr, (unsigned char *) &guid);
  352|      0|		return BLKID_PROBE_OK;
  ------------------
  |  |  465|      0|#define BLKID_PROBE_OK	0
  ------------------
  353|      0|	}
  354|       |
  355|      0|	ls = blkid_probe_get_partlist(pr);
  356|      0|	if (!ls)
  ------------------
  |  Branch (356:6): [True: 0, False: 0]
  ------------------
  357|      0|		goto nothing;
  358|       |
  359|      0|	tab = blkid_partlist_new_parttable(ls, "gpt",
  360|      0|				blkid_probe_get_sectorsize(pr) * lba);
  361|      0|	if (!tab)
  ------------------
  |  Branch (361:6): [True: 0, False: 0]
  ------------------
  362|      0|		goto err;
  363|       |
  364|      0|	blkid_parttable_set_uuid(tab, (const unsigned char *) &guid);
  365|       |
  366|      0|	ssf = blkid_probe_get_sectorsize(pr) / 512;
  367|       |
  368|      0|	fu = le64_to_cpu(h->first_usable_lba);
  ------------------
  |  |  138|      0|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  369|      0|	lu = le64_to_cpu(h->last_usable_lba);
  ------------------
  |  |  138|      0|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  370|       |
  371|      0|	for (i = 0; i < le32_to_cpu(h->num_partition_entries); i++, e++) {
  ------------------
  |  |  137|      0|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (371:14): [True: 0, False: 0]
  ------------------
  372|       |
  373|      0|		blkid_partition par;
  374|      0|		uint64_t start = le64_to_cpu(e->starting_lba);
  ------------------
  |  |  138|      0|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  375|      0|		uint64_t size = le64_to_cpu(e->ending_lba) -
  ------------------
  |  |  138|      0|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  376|      0|					le64_to_cpu(e->starting_lba) + 1ULL;
  ------------------
  |  |  138|      0|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  377|       |
  378|       |		/* 00000000-0000-0000-0000-000000000000 entry */
  379|      0|		if (!guidcmp(e->partition_type_guid, GPT_UNUSED_ENTRY_GUID)) {
  ------------------
  |  |   47|      0|	    ((efi_guid_t) { 0x00000000, 0x0000, 0x0000, 0x00, 0x00, \
  |  |   48|      0|	                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }})
  ------------------
  |  Branch (379:7): [True: 0, False: 0]
  ------------------
  380|      0|			blkid_partlist_increment_partno(ls);
  381|      0|			continue;
  382|      0|		}
  383|       |		/* the partition has to be inside usable range */
  384|      0|		if (start < fu || start + size - 1 > lu) {
  ------------------
  |  Branch (384:7): [True: 0, False: 0]
  |  Branch (384:21): [True: 0, False: 0]
  ------------------
  385|      0|			DBG(LOWPROBE, ul_debug(
  ------------------
  |  |  358|      0|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      0|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      0|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      0|		x; \
  |  |  |  |  |  |   85|      0|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  386|      0|				"GPT entry[%"PRIu32"] overflows usable area - ignore",
  387|      0|				i));
  388|      0|			blkid_partlist_increment_partno(ls);
  389|      0|			continue;
  390|      0|		}
  391|       |
  392|      0|		par = blkid_partlist_add_partition(ls, tab,
  393|      0|					start * ssf, size * ssf);
  394|      0|		if (!par)
  ------------------
  |  Branch (394:7): [True: 0, False: 0]
  ------------------
  395|      0|			goto err;
  396|       |
  397|      0|		blkid_partition_set_utf8name(par,
  398|      0|			(unsigned char *) e->partition_name,
  399|      0|			sizeof(e->partition_name), UL_ENCODE_UTF16LE);
  400|       |
  401|      0|		guid = e->unique_partition_guid;
  402|      0|		swap_efi_guid(&guid);
  403|      0|		blkid_partition_set_uuid(par, (const unsigned char *) &guid);
  404|       |
  405|      0|		guid = e->partition_type_guid;
  406|      0|		swap_efi_guid(&guid);
  407|      0|		blkid_partition_set_type_uuid(par, (const unsigned char *) &guid);
  408|       |
  409|      0|		blkid_partition_set_flags(par, le64_to_cpu(e->attributes));
  ------------------
  |  |  138|      0|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  410|      0|	}
  411|       |
  412|      0|	return BLKID_PROBE_OK;
  ------------------
  |  |  465|      0|#define BLKID_PROBE_OK	0
  ------------------
  413|       |
  414|  5.39k|nothing:
  415|  5.39k|	return BLKID_PROBE_NONE;
  ------------------
  |  |  471|  5.39k|#define BLKID_PROBE_NONE	1
  ------------------
  416|       |
  417|      0|err:
  418|       |	return -ENOMEM;
  419|      0|}
gpt.c:last_lba:
  136|  7.11k|{
  137|  7.11k|	uint64_t sz = blkid_probe_get_size(pr);
  138|  7.11k|	unsigned int ssz = blkid_probe_get_sectorsize(pr);
  139|       |
  140|  7.11k|	if (sz < ssz)
  ------------------
  |  Branch (140:6): [True: 0, False: 7.11k]
  ------------------
  141|      0|		return -1;
  142|       |
  143|  7.11k|	*lba = (sz / ssz) - 1ULL;
  144|  7.11k|	return 0;
  145|  7.11k|}
gpt.c:is_pmbr_valid:
  162|  7.11k|{
  163|  7.11k|	int flags = blkid_partitions_get_flags(pr);
  164|  7.11k|	const unsigned char *data;
  165|  7.11k|	const struct dos_partition *p;
  166|  7.11k|	int i;
  167|       |
  168|  7.11k|	if (has)
  ------------------
  |  Branch (168:6): [True: 1.71k, False: 5.39k]
  ------------------
  169|  1.71k|		*has = 0;
  170|  5.39k|	else if (flags & BLKID_PARTS_FORCE_GPT)
  ------------------
  |  |  393|  5.39k|#define BLKID_PARTS_FORCE_GPT		(1 << 1)
  ------------------
  |  Branch (170:11): [True: 0, False: 5.39k]
  ------------------
  171|      0|		return 1;			/* skip PMBR check */
  172|       |
  173|  7.11k|	data = blkid_probe_get_sector(pr, 0);
  174|  7.11k|	if (!data) {
  ------------------
  |  Branch (174:6): [True: 0, False: 7.11k]
  ------------------
  175|      0|		if (errno)
  ------------------
  |  Branch (175:7): [True: 0, False: 0]
  ------------------
  176|      0|			return -errno;
  177|      0|		goto failed;
  178|      0|	}
  179|       |
  180|  7.11k|	if (!mbr_is_valid_magic(data))
  ------------------
  |  Branch (180:6): [True: 3.67k, False: 3.43k]
  ------------------
  181|  3.67k|		goto failed;
  182|       |
  183|  16.8k|	for (i = 0, p = mbr_get_partition(data, 0); i < 4; i++, p++) {
  ------------------
  |  Branch (183:46): [True: 13.5k, False: 3.32k]
  ------------------
  184|  13.5k|		if (p->sys_ind == MBR_GPT_PARTITION) {
  ------------------
  |  Branch (184:7): [True: 110, False: 13.4k]
  ------------------
  185|    110|			DBG(LOWPROBE, ul_debug(" #%d valid PMBR partition", i + 1));
  ------------------
  |  |  358|    110|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|    110|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|    110|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|    110|	do { \
  |  |  |  |  |  |  |  |   76|    110|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|    110|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|    110|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 110]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|    110|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 110]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    110|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|    110|		x; \
  |  |  |  |  |  |   85|    110|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  186|    110|			goto ok;
  187|    110|		}
  188|  13.5k|	}
  189|  7.00k|failed:
  190|  7.00k|	return 0;
  191|    110|ok:
  192|    110|	if (has)
  ------------------
  |  Branch (192:6): [True: 55, False: 55]
  ------------------
  193|     55|		*has = 1;
  194|    110|	return 1;
  195|  3.43k|}
gpt.c:get_gpt_header:
  212|    220|{
  213|    220|	struct gpt_header *h;
  214|    220|	uint32_t crc;
  215|    220|	uint64_t lu, fu;
  216|    220|	uint64_t esz;
  217|    220|	uint32_t hsz, ssz;
  218|       |
  219|    220|	ssz = blkid_probe_get_sectorsize(pr);
  220|       |
  221|    220|	DBG(LOWPROBE, ul_debug(" checking for GPT header at %"PRIu64, lba));
  ------------------
  |  |  358|    220|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|    220|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|    220|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|    220|	do { \
  |  |  |  |  |  |  |  |   76|    220|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|    220|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|    220|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 220]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|    220|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 220]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    220|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|    220|		x; \
  |  |  |  |  |  |   85|    220|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  222|       |
  223|       |	/* whole sector is allocated for GPT header */
  224|    220|	h = (struct gpt_header *) get_lba_buffer(pr, lba, ssz);
  225|    220|	if (!h)
  ------------------
  |  Branch (225:6): [True: 0, False: 220]
  ------------------
  226|      0|		return NULL;
  227|       |
  228|    220|	if (le64_to_cpu(h->signature) != GPT_HEADER_SIGNATURE)
  ------------------
  |  |  138|    220|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
              	if (le64_to_cpu(h->signature) != GPT_HEADER_SIGNATURE)
  ------------------
  |  |   29|    220|#define GPT_HEADER_SIGNATURE 0x5452415020494645ULL
  ------------------
  |  Branch (228:6): [True: 202, False: 18]
  ------------------
  229|    202|		return NULL;
  230|       |
  231|     18|	hsz = le32_to_cpu(h->header_size);
  ------------------
  |  |  137|     18|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  232|       |
  233|       |	/* EFI: The HeaderSize must be greater than 92 and must be less
  234|       |	 *      than or equal to the logical block size.
  235|       |	 */
  236|     18|	if (hsz > ssz || hsz < sizeof(*h))
  ------------------
  |  Branch (236:6): [True: 10, False: 8]
  |  Branch (236:19): [True: 2, False: 6]
  ------------------
  237|     12|		return NULL;
  238|       |
  239|       |	/* Header has to be verified when header_crc32 is zero */
  240|      6|	crc = count_crc32((unsigned char *) h, hsz,
  241|      6|			offsetof(struct gpt_header, header_crc32),
  242|      6|			sizeof(h->header_crc32));
  243|       |
  244|      6|	if (!blkid_probe_verify_csum(pr, crc, le32_to_cpu(h->header_crc32))) {
  ------------------
  |  |  137|      6|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (244:6): [True: 6, False: 0]
  ------------------
  245|      6|		DBG(LOWPROBE, ul_debug("GPT header corrupted"));
  ------------------
  |  |  358|      6|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      6|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      6|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      6|	do { \
  |  |  |  |  |  |  |  |   76|      6|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      6|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      6|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 6]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      6|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 6]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      6|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      6|		x; \
  |  |  |  |  |  |   85|      6|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  246|      6|		return NULL;
  247|      6|	}
  248|       |
  249|       |	/* Valid header has to be at MyLBA */
  250|      0|	if (le64_to_cpu(h->my_lba) != lba) {
  ------------------
  |  |  138|      0|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  |  Branch (250:6): [True: 0, False: 0]
  ------------------
  251|      0|		DBG(LOWPROBE, ul_debug(
  ------------------
  |  |  358|      0|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      0|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      0|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      0|		x; \
  |  |  |  |  |  |   85|      0|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  252|      0|			"GPT->MyLBA mismatch with real position"));
  253|      0|		return NULL;
  254|      0|	}
  255|       |
  256|      0|	fu = le64_to_cpu(h->first_usable_lba);
  ------------------
  |  |  138|      0|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  257|      0|	lu = le64_to_cpu(h->last_usable_lba);
  ------------------
  |  |  138|      0|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  258|       |
  259|       |	/* Check if First and Last usable LBA makes sense */
  260|      0|	if (lu < fu || fu > lastlba || lu > lastlba) {
  ------------------
  |  Branch (260:6): [True: 0, False: 0]
  |  Branch (260:17): [True: 0, False: 0]
  |  Branch (260:33): [True: 0, False: 0]
  ------------------
  261|      0|		DBG(LOWPROBE, ul_debug(
  ------------------
  |  |  358|      0|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      0|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      0|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      0|		x; \
  |  |  |  |  |  |   85|      0|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  262|      0|			"GPT->{First,Last}UsableLBA out of range"));
  263|      0|		return NULL;
  264|      0|	}
  265|       |
  266|       |	/* The header has to be outside usable range */
  267|      0|	if (fu < lba && lba < lu) {
  ------------------
  |  Branch (267:6): [True: 0, False: 0]
  |  Branch (267:18): [True: 0, False: 0]
  ------------------
  268|      0|		DBG(LOWPROBE, ul_debug("GPT header is inside usable area"));
  ------------------
  |  |  358|      0|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      0|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      0|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      0|		x; \
  |  |  |  |  |  |   85|      0|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  269|      0|		return NULL;
  270|      0|	}
  271|       |
  272|       |	/* Size of blocks with GPT entries */
  273|      0|	esz = (uint64_t)le32_to_cpu(h->num_partition_entries) *
  ------------------
  |  |  137|      0|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  274|      0|		le32_to_cpu(h->sizeof_partition_entry);
  ------------------
  |  |  137|      0|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  275|       |
  276|      0|	if (esz == 0 || esz >= UINT32_MAX ||
  ------------------
  |  Branch (276:6): [True: 0, False: 0]
  |  Branch (276:18): [True: 0, False: 0]
  ------------------
  277|      0|	    le32_to_cpu(h->sizeof_partition_entry) != sizeof(struct gpt_entry)) {
  ------------------
  |  |  137|      0|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (277:6): [True: 0, False: 0]
  ------------------
  278|      0|		DBG(LOWPROBE, ul_debug("GPT entries undefined"));
  ------------------
  |  |  358|      0|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      0|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      0|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      0|		x; \
  |  |  |  |  |  |   85|      0|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  279|      0|		return NULL;
  280|      0|	}
  281|       |
  282|       |	/* The header seems valid, save it
  283|       |	 * (we don't care about zeros in hdr->reserved2 area) */
  284|      0|	memcpy(hdr, h, sizeof(*h));
  285|      0|	h = hdr;
  286|       |
  287|       |	/* Read GPT entries */
  288|      0|	*ents = (struct gpt_entry *) get_lba_buffer(pr,
  289|      0|				le64_to_cpu(h->partition_entries_lba), esz);
  ------------------
  |  |  138|      0|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  290|      0|	if (!*ents) {
  ------------------
  |  Branch (290:6): [True: 0, False: 0]
  ------------------
  291|      0|		DBG(LOWPROBE, ul_debug("GPT entries unreadable"));
  ------------------
  |  |  358|      0|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      0|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      0|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      0|		x; \
  |  |  |  |  |  |   85|      0|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  292|      0|		return NULL;
  293|      0|	}
  294|       |
  295|       |	/* Validate entries */
  296|      0|	crc = count_crc32((unsigned char *) *ents, esz, 0, 0);
  297|      0|	if (!blkid_probe_verify_csum(pr, crc, le32_to_cpu(h->partition_entry_array_crc32))) {
  ------------------
  |  |  137|      0|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (297:6): [True: 0, False: 0]
  ------------------
  298|      0|		DBG(LOWPROBE, ul_debug("GPT entries corrupted"));
  ------------------
  |  |  358|      0|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      0|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      0|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      0|		x; \
  |  |  |  |  |  |   85|      0|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  299|      0|		return NULL;
  300|      0|	}
  301|       |
  302|      0|	return h;
  303|      0|}
gpt.c:get_lba_buffer:
  114|    220|{
  115|    220|	return blkid_probe_get_buffer(pr,
  116|    220|			blkid_probe_get_sectorsize(pr) * lba, bytes);
  117|    220|}
gpt.c:count_crc32:
  108|      6|{
  109|      6|	return (ul_crc32_exclude_offset(~0L, buf, len, exclude_off, exclude_len, 0) ^ ~0L);
  110|      6|}
gpt.c:probe_pmbr_pt:
  443|  1.71k|{
  444|  1.71k|	int has = 0;
  445|  1.71k|	struct gpt_entry *e;
  446|  1.71k|	uint64_t lastlba = 0;
  447|  1.71k|	struct gpt_header hdr;
  448|       |
  449|  1.71k|	if (last_lba(pr, &lastlba))
  ------------------
  |  Branch (449:6): [True: 0, False: 1.71k]
  ------------------
  450|      0|		goto nothing;
  451|       |
  452|  1.71k|	is_pmbr_valid(pr, &has);
  453|  1.71k|	if (!has)
  ------------------
  |  Branch (453:6): [True: 1.66k, False: 55]
  ------------------
  454|  1.66k|		goto nothing;
  455|       |
  456|     55|	if (!get_gpt_header(pr, &hdr, &e, GPT_PRIMARY_LBA, lastlba) &&
  ------------------
  |  |   26|     55|#define GPT_PRIMARY_LBA	1
  ------------------
  |  Branch (456:6): [True: 55, False: 0]
  ------------------
  457|     55|	    !get_gpt_header(pr, &hdr, &e, lastlba, lastlba))
  ------------------
  |  Branch (457:6): [True: 55, False: 0]
  ------------------
  458|     55|		return 0;
  459|  1.66k|nothing:
  460|  1.66k|	return 1;
  461|     55|}

mac.c:probe_mac_pt:
   75|    300|{
   76|    300|	struct mac_driver_desc *md;
   77|    300|	struct mac_partition *p;
   78|    300|	blkid_parttable tab = NULL;
   79|    300|	blkid_partlist ls;
   80|    300|	uint16_t block_size;
   81|    300|	uint16_t ssf;	/* sector size fragment */
   82|    300|	uint32_t nblks, nprts, i;
   83|       |
   84|       |
   85|       |	/* The driver descriptor record is always located at physical block 0,
   86|       |	 * the first block on the disk.
   87|       |	 */
   88|    300|	md = (struct mac_driver_desc *) blkid_probe_get_sector(pr, 0);
   89|    300|	if (!md) {
  ------------------
  |  Branch (89:6): [True: 0, False: 300]
  ------------------
   90|      0|		if (errno)
  ------------------
  |  Branch (90:7): [True: 0, False: 0]
  ------------------
   91|      0|			return -errno;
   92|      0|		goto nothing;
   93|      0|	}
   94|       |
   95|    300|	block_size = be16_to_cpu(md->block_size);
  ------------------
  |  |  140|    300|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
   96|    300|	if (block_size < sizeof(struct mac_partition))
  ------------------
  |  Branch (96:6): [True: 12, False: 288]
  ------------------
   97|     12|		goto nothing;
   98|       |
   99|       |	/* The partition map always begins at physical block 1,
  100|       |	 * the second block on the disk.
  101|       |	 */
  102|    288|	p = (struct mac_partition *) get_mac_block(pr, block_size, 1);
  103|    288|	if (!p) {
  ------------------
  |  Branch (103:6): [True: 0, False: 288]
  ------------------
  104|      0|		if (errno)
  ------------------
  |  Branch (104:7): [True: 0, False: 0]
  ------------------
  105|      0|			return -errno;
  106|      0|		goto nothing;
  107|      0|	}
  108|       |
  109|       |	/* check the first partition signature */
  110|    288|	if (!has_part_signature(p))
  ------------------
  |  Branch (110:6): [True: 288, False: 0]
  ------------------
  111|    288|		goto nothing;
  112|       |
  113|      0|	if (blkid_partitions_need_typeonly(pr))
  ------------------
  |  Branch (113:6): [True: 0, False: 0]
  ------------------
  114|       |		/* caller does not ask for details about partitions */
  115|      0|		return 0;
  116|       |
  117|      0|	ls = blkid_probe_get_partlist(pr);
  118|      0|	if (!ls)
  ------------------
  |  Branch (118:6): [True: 0, False: 0]
  ------------------
  119|      0|		goto nothing;
  120|       |
  121|      0|	tab = blkid_partlist_new_parttable(ls, "mac", 0);
  122|      0|	if (!tab)
  ------------------
  |  Branch (122:6): [True: 0, False: 0]
  ------------------
  123|      0|		goto err;
  124|       |
  125|      0|	ssf = block_size / 512;
  126|      0|	nblks = be32_to_cpu(p->map_count);
  ------------------
  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  127|      0|	if (nblks > 256) {
  ------------------
  |  Branch (127:6): [True: 0, False: 0]
  ------------------
  128|      0|		nprts = 256;
  129|      0|		DBG(LOWPROBE, ul_debug(
  ------------------
  |  |  358|      0|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      0|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      0|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      0|		x; \
  |  |  |  |  |  |   85|      0|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  130|      0|			"mac: map_count too large, entry[0]: %u, "
  131|      0|			"enforcing limit of %u", nblks, nprts));
  132|      0|	} else
  133|      0|		nprts = nblks;
  134|       |
  135|      0|	for (i = 0; i < nprts; ++i) {
  ------------------
  |  Branch (135:14): [True: 0, False: 0]
  ------------------
  136|      0|		blkid_partition par;
  137|      0|		uint64_t start;
  138|      0|		uint64_t size;
  139|       |
  140|      0|		p = (struct mac_partition *) get_mac_block(pr, block_size, i + 1);
  141|      0|		if (!p) {
  ------------------
  |  Branch (141:7): [True: 0, False: 0]
  ------------------
  142|      0|			if (errno)
  ------------------
  |  Branch (142:8): [True: 0, False: 0]
  ------------------
  143|      0|				return -errno;
  144|      0|			goto nothing;
  145|      0|		}
  146|      0|		if (!has_part_signature(p))
  ------------------
  |  Branch (146:7): [True: 0, False: 0]
  ------------------
  147|      0|			goto nothing;
  148|       |
  149|      0|		if (be32_to_cpu(p->map_count) != nblks) {
  ------------------
  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  |  Branch (149:7): [True: 0, False: 0]
  ------------------
  150|      0|			DBG(LOWPROBE, ul_debug(
  ------------------
  |  |  358|      0|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      0|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      0|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      0|		x; \
  |  |  |  |  |  |   85|      0|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  151|      0|				"mac: inconsistent map_count in partition map, "
  152|      0|				"entry[0]: %u, entry[%u]: %u",
  153|      0|				nblks, i,
  154|      0|				be32_to_cpu(p->map_count)));
  155|      0|		}
  156|       |
  157|       |		/*
  158|       |		 * note that libparted ignores some mac partitions according to
  159|       |		 * the partition name (e.g. "Apple_Free" or "Apple_Void"). We
  160|       |		 * follows Linux kernel and all partitions are visible
  161|       |		 */
  162|       |
  163|      0|		start = (uint64_t) be32_to_cpu(p->start_block) * ssf;
  ------------------
  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  164|      0|		size = (uint64_t) be32_to_cpu(p->block_count) * ssf;
  ------------------
  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  165|       |
  166|      0|		par = blkid_partlist_add_partition(ls, tab, start, size);
  167|      0|		if (!par)
  ------------------
  |  Branch (167:7): [True: 0, False: 0]
  ------------------
  168|      0|			goto err;
  169|       |
  170|      0|		blkid_partition_set_name(par, (unsigned char *) p->name,
  171|      0|						sizeof(p->name));
  172|       |
  173|      0|		blkid_partition_set_type_string(par, (unsigned char *) p->type,
  174|      0|						sizeof(p->type));
  175|      0|	}
  176|       |
  177|      0|	return BLKID_PROBE_OK;
  ------------------
  |  |  465|      0|#define BLKID_PROBE_OK	0
  ------------------
  178|       |
  179|    300|nothing:
  180|    300|	return BLKID_PROBE_NONE;
  ------------------
  |  |  471|    300|#define BLKID_PROBE_NONE	1
  ------------------
  181|      0|err:
  182|       |	return -ENOMEM;
  183|      0|}
mac.c:get_mac_block:
   63|    288|{
   64|    288|	return blkid_probe_get_buffer(pr, (uint64_t) num * block_size, block_size);
   65|    288|}
mac.c:has_part_signature:
   68|    288|{
   69|    288|	return	be16_to_cpu(p->signature) == MAC_PARTITION_MAGIC ||
  ------------------
  |  |  140|    288|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
              	return	be16_to_cpu(p->signature) == MAC_PARTITION_MAGIC ||
  ------------------
  |  |   17|    576|#define MAC_PARTITION_MAGIC		0x504d
  ------------------
  |  Branch (69:9): [True: 0, False: 288]
  ------------------
   70|    288|		be16_to_cpu(p->signature) == MAC_PARTITION_MAGIC_OLD;
  ------------------
  |  |  140|    288|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
              		be16_to_cpu(p->signature) == MAC_PARTITION_MAGIC_OLD;
  ------------------
  |  |   18|    288|#define MAC_PARTITION_MAGIC_OLD		0x5453
  ------------------
  |  Branch (70:3): [True: 0, False: 288]
  ------------------
   71|    288|}

minix.c:probe_minix_pt:
   19|  1.65k|{
   20|  1.65k|	const struct dos_partition *p;
   21|  1.65k|	blkid_parttable tab = NULL;
   22|  1.65k|	blkid_partition parent;
   23|  1.65k|	blkid_partlist ls;
   24|  1.65k|	const unsigned char *data;
   25|  1.65k|	int i;
   26|       |
   27|  1.65k|	data = blkid_probe_get_sector(pr, 0);
   28|  1.65k|	if (!data) {
  ------------------
  |  Branch (28:6): [True: 0, False: 1.65k]
  ------------------
   29|      0|		if (errno)
  ------------------
  |  Branch (29:7): [True: 0, False: 0]
  ------------------
   30|      0|			return -errno;
   31|      0|		goto nothing;
   32|      0|	}
   33|       |
   34|  1.65k|	ls = blkid_probe_get_partlist(pr);
   35|  1.65k|	if (!ls)
  ------------------
  |  Branch (35:6): [True: 1.65k, False: 0]
  ------------------
   36|  1.65k|		goto nothing;
   37|       |
   38|       |	/* Parent is required, because Minix uses the same PT as DOS and
   39|       |	 * difference is only in primary partition (parent) type.
   40|       |	 */
   41|      0|	parent = blkid_partlist_get_parent(ls);
   42|      0|	if (!parent)
  ------------------
  |  Branch (42:6): [True: 0, False: 0]
  ------------------
   43|      0|		goto nothing;
   44|       |
   45|      0|	if (blkid_partition_get_type(parent) != MBR_MINIX_PARTITION)
  ------------------
  |  Branch (45:6): [True: 0, False: 0]
  ------------------
   46|      0|		goto nothing;
   47|       |
   48|      0|	if (blkid_partitions_need_typeonly(pr))
  ------------------
  |  Branch (48:6): [True: 0, False: 0]
  ------------------
   49|       |		/* caller does not ask for details about partitions */
   50|      0|		return BLKID_PROBE_OK;
  ------------------
  |  |  465|      0|#define BLKID_PROBE_OK	0
  ------------------
   51|       |
   52|      0|	tab = blkid_partlist_new_parttable(ls, "minix", MBR_PT_OFFSET);
  ------------------
  |  |   19|      0|#define MBR_PT_OFFSET		0x1be
  ------------------
   53|      0|	if (!tab)
  ------------------
  |  Branch (53:6): [True: 0, False: 0]
  ------------------
   54|      0|		goto err;
   55|       |
   56|      0|	for (i = 0, p = mbr_get_partition(data, 0);
   57|      0|			i < MINIX_MAXPARTITIONS; i++, p++) {
  ------------------
  |  |   65|      0|#define MINIX_MAXPARTITIONS  4
  ------------------
  |  Branch (57:4): [True: 0, False: 0]
  ------------------
   58|       |
   59|      0|		uint32_t start, size;
   60|      0|		blkid_partition par;
   61|       |
   62|      0|		if (p->sys_ind != MBR_MINIX_PARTITION)
  ------------------
  |  Branch (62:7): [True: 0, False: 0]
  ------------------
   63|      0|			continue;
   64|       |
   65|      0|		start = dos_partition_get_start(p);
   66|      0|		size = dos_partition_get_size(p);
   67|       |
   68|      0|		if (parent && !blkid_is_nested_dimension(parent, start, size)) {
  ------------------
  |  Branch (68:7): [True: 0, False: 0]
  |  Branch (68:17): [True: 0, False: 0]
  ------------------
   69|      0|			DBG(LOWPROBE, ul_debug(
  ------------------
  |  |  358|      0|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      0|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      0|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      0|		x; \
  |  |  |  |  |  |   85|      0|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   70|      0|				"WARNING: minix partition (%d) overflow "
   71|      0|				"detected, ignore", i));
   72|      0|			continue;
   73|      0|		}
   74|       |
   75|      0|		par = blkid_partlist_add_partition(ls, tab, start, size);
   76|      0|		if (!par)
  ------------------
  |  Branch (76:7): [True: 0, False: 0]
  ------------------
   77|      0|			goto err;
   78|       |
   79|      0|		blkid_partition_set_type(par, p->sys_ind);
   80|      0|		blkid_partition_set_flags(par, p->boot_ind);
   81|      0|	}
   82|       |
   83|      0|	return BLKID_PROBE_OK;
  ------------------
  |  |  465|      0|#define BLKID_PROBE_OK	0
  ------------------
   84|       |
   85|  1.65k|nothing:
   86|  1.65k|	return BLKID_PROBE_NONE;
  ------------------
  |  |  471|  1.65k|#define BLKID_PROBE_NONE	1
  ------------------
   87|      0|err:
   88|       |	return -ENOMEM;
   89|      0|}

blkid_probe_enable_partitions:
  219|  5.99k|{
  220|  5.99k|	pr->chains[BLKID_CHAIN_PARTS].enabled = enable;
  221|  5.99k|	return 0;
  222|  5.99k|}
blkid_probe_set_partitions_flags:
  234|  5.99k|{
  235|  5.99k|	pr->chains[BLKID_CHAIN_PARTS].flags = flags;
  236|  5.99k|	return 0;
  237|  5.99k|}
blkid_probe_get_partlist:
  312|  1.65k|{
  313|  1.65k|	return (blkid_partlist) pr->chains[BLKID_CHAIN_PARTS].data;
  314|  1.65k|}
blkid_partitions_need_typeonly:
  515|  1.68k|{
  516|  1.68k|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
  517|       |
  518|  1.68k|	return chn && chn->data && chn->binary ? FALSE : TRUE;
  ------------------
  |  |  202|      0|# define FALSE 0
  ------------------
              	return chn && chn->data && chn->binary ? FALSE : TRUE;
  ------------------
  |  |  198|  1.68k|# define TRUE 1
  ------------------
  |  Branch (518:9): [True: 1.68k, False: 0]
  |  Branch (518:16): [True: 0, False: 1.68k]
  |  Branch (518:29): [True: 0, False: 0]
  ------------------
  519|  1.68k|}
blkid_partitions_get_flags:
  523|  12.6k|{
  524|  12.6k|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
  525|       |
  526|  12.6k|	return chn ? chn->flags : 0;
  ------------------
  |  Branch (526:9): [True: 12.6k, False: 0]
  ------------------
  527|  12.6k|}
blkid_partitions_strcpy_ptuuid:
 1165|    373|{
 1166|    373|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
 1167|       |
 1168|    373|	if (chn->binary || !str || !*str)
  ------------------
  |  Branch (1168:6): [True: 0, False: 373]
  |  Branch (1168:21): [True: 0, False: 373]
  |  Branch (1168:29): [True: 62, False: 311]
  ------------------
 1169|     62|		return 0;
 1170|       |
 1171|    311|	if (!blkid_probe_set_value(pr, "PTUUID", (unsigned char *) str, strlen(str) + 1))
  ------------------
  |  Branch (1171:6): [True: 311, False: 0]
  ------------------
 1172|    311|		return -ENOMEM;
 1173|       |
 1174|      0|	return 0;
 1175|    311|}
partitions.c:partitions_free_data:
  403|  5.99k|{
  404|  5.99k|	blkid_partlist ls = (blkid_partlist) data;
  405|  5.99k|	int i;
  406|       |
  407|  5.99k|	if (!ls)
  ------------------
  |  Branch (407:6): [True: 5.99k, False: 0]
  ------------------
  408|  5.99k|		return;
  409|       |
  410|      0|	free_parttables(ls);
  411|       |
  412|       |	/* deallocate partitions and partlist */
  413|      0|	for (i = 0; i < ls->nparts; i++)
  ------------------
  |  Branch (413:14): [True: 0, False: 0]
  ------------------
  414|      0|		free(ls->parts[i]);
  415|      0|	free(ls->parts);
  416|      0|	free(ls);
  417|      0|}
partitions.c:partitions_probe:
  596|  5.53k|{
  597|  5.53k|	int rc = BLKID_PROBE_NONE;
  ------------------
  |  |  471|  5.53k|#define BLKID_PROBE_NONE	1
  ------------------
  598|  5.53k|	size_t i;
  599|       |
  600|  5.53k|	if (!pr || chn->idx < -1)
  ------------------
  |  Branch (600:6): [True: 0, False: 5.53k]
  |  Branch (600:13): [True: 0, False: 5.53k]
  ------------------
  601|      0|		return -EINVAL;
  602|       |
  603|  5.53k|	blkid_probe_chain_reset_values(pr, chn);
  604|       |
  605|  5.53k|	if (pr->flags & BLKID_FL_NOSCAN_DEV)
  ------------------
  |  |  244|  5.53k|#define BLKID_FL_NOSCAN_DEV	(1 << 4)	/* do not scan this device */
  ------------------
  |  Branch (605:6): [True: 0, False: 5.53k]
  ------------------
  606|      0|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  607|       |
  608|  5.53k|	if (chn->binary)
  ------------------
  |  Branch (608:6): [True: 0, False: 5.53k]
  ------------------
  609|      0|		partitions_init_data(chn);
  610|       |
  611|  5.53k|	if (!pr->wipe_size && (pr->prob_flags & BLKID_PROBE_FL_IGNORE_PT))
  ------------------
  |  |  250|  5.49k|#define BLKID_PROBE_FL_IGNORE_PT (1 << 1)	/* ignore partition table */
  ------------------
  |  Branch (611:6): [True: 5.49k, False: 44]
  |  Branch (611:24): [True: 10, False: 5.48k]
  ------------------
  612|     10|		goto details_only;
  613|       |
  614|  5.52k|	DBG(LOWPROBE, ul_debug("--> starting probing loop [PARTS idx=%d]",
  ------------------
  |  |  358|  5.52k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  5.52k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  5.52k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  5.52k|	do { \
  |  |  |  |  |  |  |  |   76|  5.52k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  5.52k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  5.52k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 5.52k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  5.52k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 5.52k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  5.52k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  5.52k|		x; \
  |  |  |  |  |  |   85|  5.52k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  615|  5.52k|		chn->idx));
  616|       |
  617|  5.52k|	i = chn->idx < 0 ? 0 : chn->idx + 1U;
  ------------------
  |  Branch (617:6): [True: 5.52k, False: 0]
  ------------------
  618|       |
  619|  80.5k|	for ( ; i < ARRAY_SIZE(idinfos); i++) {
  ------------------
  |  |  182|  80.5k|#define ARRAY_SIZE(arr) countof(arr)
  ------------------
  |  Branch (619:10): [True: 75.5k, False: 5.01k]
  ------------------
  620|  75.5k|		const char *name;
  621|       |
  622|  75.5k|		chn->idx = i;
  623|       |
  624|       |		/* apply filter */
  625|  75.5k|		if (chn->fltr && blkid_bmp_get_item(chn->fltr, i))
  ------------------
  |  |  577|      0|		((bmp)[ blkid_bmp_idx_byte(item) ] & blkid_bmp_idx_bit(item))
  |  |  ------------------
  |  |  |  |  568|      0|#define blkid_bmp_idx_byte(item)	((item) / blkid_bmp_wordsize)
  |  |  |  |  ------------------
  |  |  |  |  |  |  566|      0|#define blkid_bmp_wordsize		(8 * sizeof(unsigned long))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		((bmp)[ blkid_bmp_idx_byte(item) ] & blkid_bmp_idx_bit(item))
  |  |  ------------------
  |  |  |  |  567|      0|#define blkid_bmp_idx_bit(item)		(1UL << ((item) % blkid_bmp_wordsize))
  |  |  |  |  ------------------
  |  |  |  |  |  |  566|      0|#define blkid_bmp_wordsize		(8 * sizeof(unsigned long))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (577:3): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (625:7): [True: 0, False: 75.5k]
  ------------------
  626|      0|			continue;
  627|       |
  628|       |		/* apply checks from idinfo */
  629|  75.5k|		rc = idinfo_probe(pr, idinfos[i], chn);
  630|  75.5k|		if (rc < 0)
  ------------------
  |  Branch (630:7): [True: 0, False: 75.5k]
  ------------------
  631|      0|			break;
  632|  75.5k|		if (rc != BLKID_PROBE_OK)
  ------------------
  |  |  465|  75.5k|#define BLKID_PROBE_OK	0
  ------------------
  |  Branch (632:7): [True: 74.9k, False: 513]
  ------------------
  633|  74.9k|			continue;
  634|       |
  635|    513|		name = idinfos[i]->name;
  636|       |
  637|    513|		if (!chn->binary)
  ------------------
  |  Branch (637:7): [True: 513, False: 0]
  ------------------
  638|       |			/*
  639|       |			 * Non-binary interface, set generic variables. Note
  640|       |			 * that the another variables could be set in prober
  641|       |			 * functions.
  642|       |			 */
  643|    513|			blkid_probe_set_value(pr, "PTTYPE",
  644|    513|						(const unsigned char *) name,
  645|    513|						strlen(name) + 1);
  646|       |
  647|    513|		DBG(LOWPROBE, ul_debug("<-- leaving probing loop (type=%s) [PARTS idx=%d]",
  ------------------
  |  |  358|    513|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|    513|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|    513|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|    513|	do { \
  |  |  |  |  |  |  |  |   76|    513|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|    513|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|    513|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 513]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|    513|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 513]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    513|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|    513|		x; \
  |  |  |  |  |  |   85|    513|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  648|    513|			name, chn->idx));
  649|    513|		rc = BLKID_PROBE_OK;
  ------------------
  |  |  465|    513|#define BLKID_PROBE_OK	0
  ------------------
  650|    513|		break;
  651|  75.5k|	}
  652|       |
  653|  5.52k|	if (rc != BLKID_PROBE_OK) {
  ------------------
  |  |  465|  5.52k|#define BLKID_PROBE_OK	0
  ------------------
  |  Branch (653:6): [True: 5.01k, False: 513]
  ------------------
  654|  5.01k|		DBG(LOWPROBE, ul_debug("<-- leaving probing loop (failed=%d) [PARTS idx=%d]",
  ------------------
  |  |  358|  5.01k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  5.01k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  5.01k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  5.01k|	do { \
  |  |  |  |  |  |  |  |   76|  5.01k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  5.01k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  5.01k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 5.01k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  5.01k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 5.01k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  5.01k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  5.01k|		x; \
  |  |  |  |  |  |   85|  5.01k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  655|  5.01k|			rc, chn->idx));
  656|  5.01k|	}
  657|       |
  658|  5.53k|details_only:
  659|       |	/*
  660|       |	 * Gather PART_ENTRY_* values if the current device is a partition.
  661|       |	 */
  662|  5.53k|	if ((rc == BLKID_PROBE_OK || rc == BLKID_PROBE_NONE) && !chn->binary &&
  ------------------
  |  |  465|  11.0k|#define BLKID_PROBE_OK	0
  ------------------
              	if ((rc == BLKID_PROBE_OK || rc == BLKID_PROBE_NONE) && !chn->binary &&
  ------------------
  |  |  471|  5.02k|#define BLKID_PROBE_NONE	1
  ------------------
  |  Branch (662:7): [True: 513, False: 5.02k]
  |  Branch (662:31): [True: 5.02k, False: 0]
  |  Branch (662:58): [True: 5.53k, False: 0]
  ------------------
  663|  5.53k|	    (blkid_partitions_get_flags(pr) & BLKID_PARTS_ENTRY_DETAILS)) {
  ------------------
  |  |  394|  5.53k|#define BLKID_PARTS_ENTRY_DETAILS	(1 << 2)
  ------------------
  |  Branch (663:6): [True: 0, False: 5.53k]
  ------------------
  664|       |
  665|      0|		int xrc = blkid_partitions_probe_partition(pr);
  666|       |
  667|       |		/* partition entry probing is optional, and "not-found" from
  668|       |		 * this sub-probing must not to overwrite previous success. */
  669|      0|		if (xrc < 0)
  ------------------
  |  Branch (669:7): [True: 0, False: 0]
  ------------------
  670|      0|			rc = xrc;			/* always propagate errors */
  671|      0|		else if (rc == BLKID_PROBE_NONE)
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  |  Branch (671:12): [True: 0, False: 0]
  ------------------
  672|      0|			rc = xrc;
  673|      0|	}
  674|       |
  675|  5.53k|	DBG(LOWPROBE, ul_debug("partitions probe done [rc=%d]",	rc));
  ------------------
  |  |  358|  5.53k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  5.53k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  5.53k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  5.53k|	do { \
  |  |  |  |  |  |  |  |   76|  5.53k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  5.53k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  5.53k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 5.53k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  5.53k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 5.53k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  5.53k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  5.53k|		x; \
  |  |  |  |  |  |   85|  5.53k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  676|  5.53k|	return rc;
  677|  5.52k|}
partitions.c:idinfo_probe:
  550|  75.5k|{
  551|  75.5k|	const struct blkid_idmag *mag = NULL;
  552|  75.5k|	uint64_t off;
  553|  75.5k|	int rc = BLKID_PROBE_NONE;		/* default is nothing */
  ------------------
  |  |  471|  75.5k|#define BLKID_PROBE_NONE	1
  ------------------
  554|       |
  555|  75.5k|	if (pr->size <= 0 || (id->minsz && (unsigned)id->minsz > pr->size))
  ------------------
  |  Branch (555:6): [True: 0, False: 75.5k]
  |  Branch (555:24): [True: 5.33k, False: 70.1k]
  |  Branch (555:37): [True: 0, False: 5.33k]
  ------------------
  556|      0|		goto nothing;	/* the device is too small */
  557|  75.5k|	if (pr->flags & BLKID_FL_NOSCAN_DEV)
  ------------------
  |  |  244|  75.5k|#define BLKID_FL_NOSCAN_DEV	(1 << 4)	/* do not scan this device */
  ------------------
  |  Branch (557:6): [True: 0, False: 75.5k]
  ------------------
  558|      0|		goto nothing;
  559|       |
  560|  75.5k|	rc = blkid_probe_get_idmag(pr, id, &off, &mag);
  561|  75.5k|	if (rc != BLKID_PROBE_OK)
  ------------------
  |  |  465|  75.5k|#define BLKID_PROBE_OK	0
  ------------------
  |  Branch (561:6): [True: 45.6k, False: 29.8k]
  ------------------
  562|  45.6k|		goto nothing;
  563|       |
  564|       |	/* final check by probing function */
  565|  29.8k|	if (id->probefunc) {
  ------------------
  |  Branch (565:6): [True: 29.8k, False: 0]
  ------------------
  566|  29.8k|		DBG(LOWPROBE, ul_debug(
  ------------------
  |  |  358|  29.8k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  29.8k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  29.8k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  29.8k|	do { \
  |  |  |  |  |  |  |  |   76|  29.8k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  29.8k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  29.8k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 29.8k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  29.8k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 29.8k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  29.8k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  29.8k|		x; \
  |  |  |  |  |  |   85|  29.8k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  567|  29.8k|			"%s: ---> call probefunc()", id->name));
  568|  29.8k|		errno = 0;
  569|  29.8k|		rc = id->probefunc(pr, mag);
  570|  29.8k|		blkid_probe_prune_buffers(pr);
  571|  29.8k|		if (rc < 0) {
  ------------------
  |  Branch (571:7): [True: 0, False: 29.8k]
  ------------------
  572|       |			/* reset after error */
  573|      0|			reset_partlist(blkid_probe_get_partlist(pr));
  574|      0|			if (chn && !chn->binary)
  ------------------
  |  Branch (574:8): [True: 0, False: 0]
  |  Branch (574:15): [True: 0, False: 0]
  ------------------
  575|      0|				blkid_probe_chain_reset_values(pr, chn);
  576|      0|			DBG(LOWPROBE, ul_debug("%s probefunc failed, rc %d",
  ------------------
  |  |  358|      0|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      0|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      0|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      0|		x; \
  |  |  |  |  |  |   85|      0|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  577|      0|						  id->name, rc));
  578|      0|		}
  579|  29.8k|		if (rc == BLKID_PROBE_OK && mag && chn && !chn->binary)
  ------------------
  |  |  465|  59.7k|#define BLKID_PROBE_OK	0
  ------------------
  |  Branch (579:7): [True: 513, False: 29.3k]
  |  Branch (579:31): [True: 195, False: 318]
  |  Branch (579:38): [True: 195, False: 0]
  |  Branch (579:45): [True: 195, False: 0]
  ------------------
  580|    195|			rc = blkid_probe_set_magic(pr, off, mag->len,
  581|    195|					(const unsigned char *) mag->magic);
  582|       |
  583|  29.8k|		DBG(LOWPROBE, ul_debug("%s: <--- (rc = %d)", id->name, rc));
  ------------------
  |  |  358|  29.8k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  29.8k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  29.8k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  29.8k|	do { \
  |  |  |  |  |  |  |  |   76|  29.8k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  29.8k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  29.8k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 29.8k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  29.8k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 29.8k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  29.8k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  29.8k|		x; \
  |  |  |  |  |  |   85|  29.8k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  584|  29.8k|	}
  585|       |
  586|  29.8k|	return rc;
  587|       |
  588|  45.6k|nothing:
  589|  45.6k|	return BLKID_PROBE_NONE;
  ------------------
  |  |  471|  45.6k|#define BLKID_PROBE_NONE	1
  ------------------
  590|  75.5k|}

sgi.c:probe_sgi_pt:
   20|    105|{
   21|    105|	struct sgi_disklabel *l;
   22|    105|	struct sgi_partition *p;
   23|    105|	blkid_parttable tab = NULL;
   24|    105|	blkid_partlist ls;
   25|    105|	int i;
   26|       |
   27|    105|	l = (struct sgi_disklabel *) blkid_probe_get_sector(pr, 0);
   28|    105|	if (!l) {
  ------------------
  |  Branch (28:6): [True: 0, False: 105]
  ------------------
   29|      0|		if (errno)
  ------------------
  |  Branch (29:7): [True: 0, False: 0]
  ------------------
   30|      0|			return -errno;
   31|      0|		goto nothing;
   32|      0|	}
   33|       |
   34|    105|	if (!blkid_probe_verify_csum(pr, sgi_pt_checksum(l), 0)) {
  ------------------
  |  Branch (34:6): [True: 104, False: 1]
  ------------------
   35|    104|		DBG(LOWPROBE, ul_debug(
  ------------------
  |  |  358|    104|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|    104|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|    104|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|    104|	do { \
  |  |  |  |  |  |  |  |   76|    104|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|    104|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|    104|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 104]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|    104|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 104]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    104|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|    104|		x; \
  |  |  |  |  |  |   85|    104|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   36|    104|			"detected corrupted sgi disk label -- ignore"));
   37|    104|		goto nothing;
   38|    104|	}
   39|       |
   40|      1|	if (blkid_partitions_need_typeonly(pr))
  ------------------
  |  Branch (40:6): [True: 1, False: 0]
  ------------------
   41|       |		/* caller does not ask for details about partitions */
   42|      1|		return BLKID_PROBE_OK;
  ------------------
  |  |  465|      1|#define BLKID_PROBE_OK	0
  ------------------
   43|       |
   44|      0|	ls = blkid_probe_get_partlist(pr);
   45|      0|	if (!ls)
  ------------------
  |  Branch (45:6): [True: 0, False: 0]
  ------------------
   46|      0|		goto nothing;
   47|       |
   48|      0|	tab = blkid_partlist_new_parttable(ls, "sgi", 0);
   49|      0|	if (!tab)
  ------------------
  |  Branch (49:6): [True: 0, False: 0]
  ------------------
   50|      0|		goto err;
   51|       |
   52|      0|	for(i = 0, p = &l->partitions[0]; i < SGI_MAXPARTITIONS; i++, p++) {
  ------------------
  |  |   12|      0|#define SGI_MAXPARTITIONS	16
  ------------------
  |  Branch (52:36): [True: 0, False: 0]
  ------------------
   53|      0|		uint32_t size = be32_to_cpu(p->num_blocks);
  ------------------
  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
   54|      0|		uint32_t start = be32_to_cpu(p->first_block);
  ------------------
  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
   55|      0|		uint32_t type = be32_to_cpu(p->type);
  ------------------
  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
   56|      0|		blkid_partition par;
   57|       |
   58|      0|		if (!size) {
  ------------------
  |  Branch (58:7): [True: 0, False: 0]
  ------------------
   59|      0|			blkid_partlist_increment_partno(ls);
   60|      0|			continue;
   61|      0|		}
   62|      0|		par = blkid_partlist_add_partition(ls, tab, start, size);
   63|      0|		if (!par)
  ------------------
  |  Branch (63:7): [True: 0, False: 0]
  ------------------
   64|      0|			goto err;
   65|       |
   66|      0|		blkid_partition_set_type(par, type);
   67|      0|	}
   68|       |
   69|      0|	return BLKID_PROBE_OK;
  ------------------
  |  |  465|      0|#define BLKID_PROBE_OK	0
  ------------------
   70|       |
   71|    104|nothing:
   72|    104|	return BLKID_PROBE_NONE;
  ------------------
  |  |  471|    104|#define BLKID_PROBE_NONE	1
  ------------------
   73|      0|err:
   74|       |	return -ENOMEM;
   75|      0|}

solaris_x86.c:probe_solaris_pt:
   63|    662|{
   64|    662|	struct solaris_vtoc *l;	/* disk label */
   65|    662|	struct solaris_slice *p;	/* partition */
   66|    662|	blkid_parttable tab = NULL;
   67|    662|	blkid_partition parent;
   68|    662|	blkid_partlist ls;
   69|    662|	int i;
   70|    662|	uint16_t nparts;
   71|       |
   72|    662|	l = (struct solaris_vtoc *) blkid_probe_get_sector(pr, SOLARIS_SECTOR);
  ------------------
  |  |   31|    662|#define SOLARIS_SECTOR		1			/* in 512-sectors */
  ------------------
   73|    662|	if (!l) {
  ------------------
  |  Branch (73:6): [True: 0, False: 662]
  ------------------
   74|      0|		if (errno)
  ------------------
  |  Branch (74:7): [True: 0, False: 0]
  ------------------
   75|      0|			return -errno;
   76|      0|		goto nothing;
   77|      0|	}
   78|       |
   79|    662|	if (le32_to_cpu(l->v_version) != 1) {
  ------------------
  |  |  137|    662|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (79:6): [True: 656, False: 6]
  ------------------
   80|    656|		DBG(LOWPROBE, ul_debug(
  ------------------
  |  |  358|    656|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|    656|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|    656|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|    656|	do { \
  |  |  |  |  |  |  |  |   76|    656|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|    656|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|    656|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 656]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|    656|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 656]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    656|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|    656|		x; \
  |  |  |  |  |  |   85|    656|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   81|    656|			"WARNING: unsupported solaris x86 version %"PRIu32", ignore",
   82|    656|			le32_to_cpu(l->v_version)));
   83|    656|		goto nothing;
   84|    656|	}
   85|       |
   86|      6|	if (blkid_partitions_need_typeonly(pr))
  ------------------
  |  Branch (86:6): [True: 6, False: 0]
  ------------------
   87|       |		/* caller does not ask for details about partitions */
   88|      6|		return BLKID_PROBE_OK;
  ------------------
  |  |  465|      6|#define BLKID_PROBE_OK	0
  ------------------
   89|       |
   90|      0|	ls = blkid_probe_get_partlist(pr);
   91|      0|	if (!ls)
  ------------------
  |  Branch (91:6): [True: 0, False: 0]
  ------------------
   92|      0|		goto nothing;
   93|       |
   94|      0|	parent = blkid_partlist_get_parent(ls);
   95|       |
   96|      0|	tab = blkid_partlist_new_parttable(ls, "solaris", SOLARIS_OFFSET);
  ------------------
  |  |   32|      0|#define SOLARIS_OFFSET		(SOLARIS_SECTOR << 9)	/* in bytes */
  |  |  ------------------
  |  |  |  |   31|      0|#define SOLARIS_SECTOR		1			/* in 512-sectors */
  |  |  ------------------
  ------------------
   97|      0|	if (!tab)
  ------------------
  |  Branch (97:6): [True: 0, False: 0]
  ------------------
   98|      0|		goto err;
   99|       |
  100|      0|	nparts = le16_to_cpu(l->v_nparts);
  ------------------
  |  |  136|      0|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  101|      0|	if (nparts > SOLARIS_MAXPARTITIONS)
  ------------------
  |  |   28|      0|#define SOLARIS_MAXPARTITIONS	16
  ------------------
  |  Branch (101:6): [True: 0, False: 0]
  ------------------
  102|      0|		nparts = SOLARIS_MAXPARTITIONS;
  ------------------
  |  |   28|      0|#define SOLARIS_MAXPARTITIONS	16
  ------------------
  103|       |
  104|      0|	for (i = 1, p = &l->v_slice[0];	i < nparts; i++, p++) {
  ------------------
  |  Branch (104:34): [True: 0, False: 0]
  ------------------
  105|       |
  106|      0|		uint64_t start = le32_to_cpu(p->s_start);
  ------------------
  |  |  137|      0|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  107|      0|		uint64_t size = le32_to_cpu(p->s_size);
  ------------------
  |  |  137|      0|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  108|      0|		blkid_partition par;
  109|       |
  110|      0|		if (size == 0 || le16_to_cpu(p->s_tag) == SOLARIS_TAG_WHOLEDISK)
  ------------------
  |  |  136|      0|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
              		if (size == 0 || le16_to_cpu(p->s_tag) == SOLARIS_TAG_WHOLEDISK)
  ------------------
  |  |   36|      0|#define SOLARIS_TAG_WHOLEDISK	5
  ------------------
  |  Branch (110:7): [True: 0, False: 0]
  |  Branch (110:20): [True: 0, False: 0]
  ------------------
  111|      0|			continue;
  112|       |
  113|      0|		if (parent)
  ------------------
  |  Branch (113:7): [True: 0, False: 0]
  ------------------
  114|       |			/* Solaris slices are relative to the parent (primary
  115|       |			 * DOS partition) */
  116|      0|			start += blkid_partition_get_start(parent);
  117|       |
  118|      0|		if (parent && !blkid_is_nested_dimension(parent, start, size)) {
  ------------------
  |  Branch (118:7): [True: 0, False: 0]
  |  Branch (118:17): [True: 0, False: 0]
  ------------------
  119|      0|			DBG(LOWPROBE, ul_debug(
  ------------------
  |  |  358|      0|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      0|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      0|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      0|		x; \
  |  |  |  |  |  |   85|      0|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  120|      0|				"WARNING: solaris partition (%d) overflow "
  121|      0|				"detected, ignore", i));
  122|      0|			continue;
  123|      0|		}
  124|       |
  125|      0|		par = blkid_partlist_add_partition(ls, tab, start, size);
  126|      0|		if (!par)
  ------------------
  |  Branch (126:7): [True: 0, False: 0]
  ------------------
  127|      0|			goto err;
  128|       |
  129|      0|		blkid_partition_set_type(par, le16_to_cpu(p->s_tag));
  ------------------
  |  |  136|      0|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  130|      0|		blkid_partition_set_flags(par, le16_to_cpu(p->s_flag));
  ------------------
  |  |  136|      0|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  131|      0|	}
  132|       |
  133|      0|	return BLKID_PROBE_OK;
  ------------------
  |  |  465|      0|#define BLKID_PROBE_OK	0
  ------------------
  134|       |
  135|    656|nothing:
  136|    656|	return BLKID_PROBE_NONE;
  ------------------
  |  |  471|    656|#define BLKID_PROBE_NONE	1
  ------------------
  137|      0|err:
  138|       |	return -ENOMEM;
  139|      0|}

sun.c:probe_sun_pt:
   20|    892|{
   21|    892|	struct sun_disklabel *l;
   22|    892|	struct sun_partition *p;
   23|    892|	blkid_parttable tab = NULL;
   24|    892|	blkid_partlist ls;
   25|    892|	uint16_t nparts;
   26|    892|	uint64_t spc;
   27|    892|	int i, use_vtoc;
   28|       |
   29|    892|	l = (struct sun_disklabel *) blkid_probe_get_sector(pr, 0);
   30|    892|	if (!l) {
  ------------------
  |  Branch (30:6): [True: 0, False: 892]
  ------------------
   31|      0|		if (errno)
  ------------------
  |  Branch (31:7): [True: 0, False: 0]
  ------------------
   32|      0|			return -errno;
   33|      0|		goto nothing;
   34|      0|	}
   35|       |
   36|    892|	if (!blkid_probe_verify_csum(pr, sun_pt_checksum(l), 0)) {
  ------------------
  |  Branch (36:6): [True: 889, False: 3]
  ------------------
   37|    889|		DBG(LOWPROBE, ul_debug(
  ------------------
  |  |  358|    889|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|    889|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|    889|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|    889|	do { \
  |  |  |  |  |  |  |  |   76|    889|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|    889|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|    889|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 889]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|    889|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 889]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    889|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|    889|		x; \
  |  |  |  |  |  |   85|    889|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   38|    889|			"detected corrupted sun disk label -- ignore"));
   39|    889|		goto nothing;
   40|    889|	}
   41|       |
   42|      3|	if (blkid_partitions_need_typeonly(pr))
  ------------------
  |  Branch (42:6): [True: 3, False: 0]
  ------------------
   43|       |		/* caller does not ask for details about partitions */
   44|      3|		return BLKID_PROBE_OK;
  ------------------
  |  |  465|      3|#define BLKID_PROBE_OK	0
  ------------------
   45|       |
   46|      0|	ls = blkid_probe_get_partlist(pr);
   47|      0|	if (!ls)
  ------------------
  |  Branch (47:6): [True: 0, False: 0]
  ------------------
   48|      0|		goto nothing;
   49|       |
   50|      0|	tab = blkid_partlist_new_parttable(ls, "sun", 0);
   51|      0|	if (!tab)
  ------------------
  |  Branch (51:6): [True: 0, False: 0]
  ------------------
   52|      0|		goto err;
   53|       |
   54|       |	/* sectors per cylinder (partition offset is in cylinders...) */
   55|      0|	spc = (uint64_t) be16_to_cpu(l->nhead) * be16_to_cpu(l->nsect);
  ------------------
  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
              	spc = (uint64_t) be16_to_cpu(l->nhead) * be16_to_cpu(l->nsect);
  ------------------
  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
   56|       |
   57|      0|	DBG(LOWPROBE, ul_debug("Sun VTOC sanity=%u version=%u nparts=%u",
  ------------------
  |  |  358|      0|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      0|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      0|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      0|		x; \
  |  |  |  |  |  |   85|      0|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   58|      0|			be32_to_cpu(l->vtoc.sanity),
   59|      0|			be32_to_cpu(l->vtoc.version),
   60|      0|			be16_to_cpu(l->vtoc.nparts)));
   61|       |
   62|       |	/* Check to see if we can use the VTOC table */
   63|      0|	use_vtoc = ((be32_to_cpu(l->vtoc.sanity) == SUN_VTOC_SANITY) &&
  ------------------
  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
              	use_vtoc = ((be32_to_cpu(l->vtoc.sanity) == SUN_VTOC_SANITY) &&
  ------------------
  |  |   13|      0|#define SUN_VTOC_SANITY		0x600DDEEE	/* magic number */
  ------------------
  |  Branch (63:14): [True: 0, False: 0]
  ------------------
   64|      0|		    (be32_to_cpu(l->vtoc.version) == SUN_VTOC_VERSION) &&
  ------------------
  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
              		    (be32_to_cpu(l->vtoc.version) == SUN_VTOC_VERSION) &&
  ------------------
  |  |   14|      0|#define SUN_VTOC_VERSION	1
  ------------------
  |  Branch (64:7): [True: 0, False: 0]
  ------------------
   65|      0|		    (be16_to_cpu(l->vtoc.nparts) <= SUN_MAXPARTITIONS));
  ------------------
  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
              		    (be16_to_cpu(l->vtoc.nparts) <= SUN_MAXPARTITIONS));
  ------------------
  |  |   15|      0|#define SUN_MAXPARTITIONS	8
  ------------------
  |  Branch (65:7): [True: 0, False: 0]
  ------------------
   66|       |
   67|       |	/* Use 8 partition entries if not specified in validated VTOC */
   68|      0|	nparts = use_vtoc ? be16_to_cpu(l->vtoc.nparts) : SUN_MAXPARTITIONS;
  ------------------
  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
              	nparts = use_vtoc ? be16_to_cpu(l->vtoc.nparts) : SUN_MAXPARTITIONS;
  ------------------
  |  |   15|      0|#define SUN_MAXPARTITIONS	8
  ------------------
  |  Branch (68:11): [True: 0, False: 0]
  ------------------
   69|       |
   70|       |	/*
   71|       |	 * So that old Linux-Sun partitions continue to work,
   72|       |	 * allow the VTOC to be used under the additional condition ...
   73|       |	 */
   74|      0|	use_vtoc = use_vtoc || !(l->vtoc.sanity || l->vtoc.version || l->vtoc.nparts);
  ------------------
  |  Branch (74:13): [True: 0, False: 0]
  |  Branch (74:27): [True: 0, False: 0]
  |  Branch (74:45): [True: 0, False: 0]
  |  Branch (74:64): [True: 0, False: 0]
  ------------------
   75|       |
   76|      0|	for (i = 0, p = l->partitions; i < nparts; i++, p++) {
  ------------------
  |  Branch (76:33): [True: 0, False: 0]
  ------------------
   77|       |
   78|      0|		uint64_t start, size;
   79|      0|		uint16_t type = 0, flags = 0;
   80|      0|		blkid_partition par;
   81|       |
   82|      0|		start = be32_to_cpu(p->start_cylinder) * spc;
  ------------------
  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
   83|      0|		size = be32_to_cpu(p->num_sectors);
  ------------------
  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
   84|      0|		if (use_vtoc) {
  ------------------
  |  Branch (84:7): [True: 0, False: 0]
  ------------------
   85|      0|			type = be16_to_cpu(l->vtoc.infos[i].id);
  ------------------
  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
   86|      0|			flags = be16_to_cpu(l->vtoc.infos[i].flags);
  ------------------
  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
   87|      0|		}
   88|       |
   89|      0|		if (type == SUN_TAG_WHOLEDISK || !size) {
  ------------------
  |  |   68|      0|#define SUN_TAG_WHOLEDISK	0x05	/* Full-disk slice	*/
  ------------------
  |  Branch (89:7): [True: 0, False: 0]
  |  Branch (89:36): [True: 0, False: 0]
  ------------------
   90|      0|			blkid_partlist_increment_partno(ls);
   91|      0|			continue;
   92|      0|		}
   93|      0|		par = blkid_partlist_add_partition(ls, tab, start, size);
   94|      0|		if (!par)
  ------------------
  |  Branch (94:7): [True: 0, False: 0]
  ------------------
   95|      0|			goto err;
   96|       |
   97|      0|		if (type)
  ------------------
  |  Branch (97:7): [True: 0, False: 0]
  ------------------
   98|      0|			blkid_partition_set_type(par, type);
   99|      0|		if (flags)
  ------------------
  |  Branch (99:7): [True: 0, False: 0]
  ------------------
  100|      0|			blkid_partition_set_flags(par, flags);
  101|      0|	}
  102|      0|	return BLKID_PROBE_OK;
  ------------------
  |  |  465|      0|#define BLKID_PROBE_OK	0
  ------------------
  103|       |
  104|    889|nothing:
  105|    889|	return BLKID_PROBE_NONE;
  ------------------
  |  |  471|    889|#define BLKID_PROBE_NONE	1
  ------------------
  106|      0|err:
  107|       |	return -ENOMEM;
  108|      0|}

ultrix.c:probe_ultrix_pt:
   39|  5.34k|{
   40|  5.34k|	const unsigned char *data;
   41|  5.34k|	const struct ultrix_disklabel *l;
   42|  5.34k|	blkid_parttable tab = NULL;
   43|  5.34k|	blkid_partlist ls;
   44|  5.34k|	int i;
   45|       |
   46|  5.34k|	data = blkid_probe_get_sector(pr, ULTRIX_SECTOR);
  ------------------
  |  |   23|  5.34k|#define ULTRIX_SECTOR		((16384 - sizeof(struct ultrix_disklabel)) >> 9)
  ------------------
   47|  5.34k|	if (!data) {
  ------------------
  |  Branch (47:6): [True: 0, False: 5.34k]
  ------------------
   48|      0|		if (errno)
  ------------------
  |  Branch (48:7): [True: 0, False: 0]
  ------------------
   49|      0|			return -errno;
   50|      0|		goto nothing;
   51|      0|	}
   52|       |
   53|  5.34k|	l = (const struct ultrix_disklabel *) (data + ULTRIX_OFFSET);
  ------------------
  |  |   25|  5.34k|#define ULTRIX_OFFSET		(512 - sizeof(struct ultrix_disklabel))
  ------------------
   54|       |
   55|  5.34k|	if (l->pt_magic != ULTRIX_MAGIC || l->pt_valid != 1)
  ------------------
  |  |   19|  10.6k|#define ULTRIX_MAGIC		0x032957
  ------------------
  |  Branch (55:6): [True: 5.30k, False: 33]
  |  Branch (55:37): [True: 30, False: 3]
  ------------------
   56|  5.33k|		goto nothing;
   57|       |
   58|      3|	if (blkid_probe_set_magic(pr, (ULTRIX_SECTOR << 9) + ULTRIX_OFFSET,
  ------------------
  |  |   23|      3|#define ULTRIX_SECTOR		((16384 - sizeof(struct ultrix_disklabel)) >> 9)
  ------------------
              	if (blkid_probe_set_magic(pr, (ULTRIX_SECTOR << 9) + ULTRIX_OFFSET,
  ------------------
  |  |   25|      3|#define ULTRIX_OFFSET		(512 - sizeof(struct ultrix_disklabel))
  ------------------
  |  Branch (58:6): [True: 0, False: 3]
  ------------------
   59|      3|			sizeof(ULTRIX_MAGIC_STR) - 1,
  ------------------
  |  |   20|      3|#define ULTRIX_MAGIC_STR	"\x02\x29\x57"
  ------------------
   60|      3|			(unsigned char *) ULTRIX_MAGIC_STR))
  ------------------
  |  |   20|      3|#define ULTRIX_MAGIC_STR	"\x02\x29\x57"
  ------------------
   61|      0|		goto err;
   62|       |
   63|      3|	if (blkid_partitions_need_typeonly(pr))
  ------------------
  |  Branch (63:6): [True: 3, False: 0]
  ------------------
   64|       |		/* caller does not ask for details about partitions */
   65|      3|		return BLKID_PROBE_OK;
  ------------------
  |  |  465|      3|#define BLKID_PROBE_OK	0
  ------------------
   66|       |
   67|      0|	ls = blkid_probe_get_partlist(pr);
   68|      0|	if (!ls)
  ------------------
  |  Branch (68:6): [True: 0, False: 0]
  ------------------
   69|      0|		goto nothing;
   70|       |
   71|      0|	tab = blkid_partlist_new_parttable(ls, "ultrix", 0);
   72|      0|	if (!tab)
  ------------------
  |  Branch (72:6): [True: 0, False: 0]
  ------------------
   73|      0|		goto err;
   74|       |
   75|      0|	for (i = 0; i < ULTRIX_MAXPARTITIONS; i++) {
  ------------------
  |  |   17|      0|#define ULTRIX_MAXPARTITIONS	8
  ------------------
  |  Branch (75:14): [True: 0, False: 0]
  ------------------
   76|      0|		if (!l->pt_part[i].pi_nblocks)
  ------------------
  |  Branch (76:7): [True: 0, False: 0]
  ------------------
   77|      0|			 blkid_partlist_increment_partno(ls);
   78|      0|		else {
   79|      0|			if (!blkid_partlist_add_partition(ls, tab,
  ------------------
  |  Branch (79:8): [True: 0, False: 0]
  ------------------
   80|      0|						l->pt_part[i].pi_blkoff,
   81|      0|						l->pt_part[i].pi_nblocks))
   82|      0|				goto err;
   83|      0|		}
   84|      0|	}
   85|       |
   86|      0|	return BLKID_PROBE_OK;
  ------------------
  |  |  465|      0|#define BLKID_PROBE_OK	0
  ------------------
   87|  5.33k|nothing:
   88|  5.33k|	return BLKID_PROBE_NONE;
  ------------------
  |  |  471|  5.33k|#define BLKID_PROBE_NONE	1
  ------------------
   89|      0|err:
   90|       |	return -ENOMEM;
   91|      0|}

unixware.c:probe_unixware_pt:
   99|     66|{
  100|     66|	struct unixware_disklabel *l;
  101|     66|	struct unixware_partition *p;
  102|     66|	blkid_parttable tab = NULL;
  103|     66|	blkid_partition parent;
  104|     66|	blkid_partlist ls;
  105|     66|	int i;
  106|       |
  107|     66|	l = (struct unixware_disklabel *)
  108|     66|			blkid_probe_get_sector(pr, UNIXWARE_SECTOR);
  ------------------
  |  |   24|     66|#define UNIXWARE_SECTOR		29
  ------------------
  109|     66|	if (!l) {
  ------------------
  |  Branch (109:6): [True: 0, False: 66]
  ------------------
  110|      0|		if (errno)
  ------------------
  |  Branch (110:7): [True: 0, False: 0]
  ------------------
  111|      0|			return -errno;
  112|      0|		goto nothing;
  113|      0|	}
  114|       |
  115|     66|	if (le32_to_cpu(l->vtoc.v_magic) != UNIXWARE_VTOCMAGIC)
  ------------------
  |  |  137|     66|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              	if (le32_to_cpu(l->vtoc.v_magic) != UNIXWARE_VTOCMAGIC)
  ------------------
  |  |   31|     66|#define UNIXWARE_VTOCMAGIC	0x600DDEEEUL
  ------------------
  |  Branch (115:6): [True: 65, False: 1]
  ------------------
  116|     65|		goto nothing;
  117|       |
  118|      1|	if (blkid_partitions_need_typeonly(pr))
  ------------------
  |  Branch (118:6): [True: 1, False: 0]
  ------------------
  119|       |		/* caller does not ask for details about partitions */
  120|      1|		return BLKID_PROBE_OK;
  ------------------
  |  |  465|      1|#define BLKID_PROBE_OK	0
  ------------------
  121|       |
  122|      0|	ls = blkid_probe_get_partlist(pr);
  123|      0|	if (!ls)
  ------------------
  |  Branch (123:6): [True: 0, False: 0]
  ------------------
  124|      0|		goto nothing;
  125|       |
  126|      0|	parent = blkid_partlist_get_parent(ls);
  127|       |
  128|      0|	tab = blkid_partlist_new_parttable(ls, "unixware", UNIXWARE_OFFSET);
  ------------------
  |  |   25|      0|#define UNIXWARE_OFFSET		(UNIXWARE_SECTOR << 9)	/* offset in bytes */
  |  |  ------------------
  |  |  |  |   24|      0|#define UNIXWARE_SECTOR		29
  |  |  ------------------
  ------------------
  129|      0|	if (!tab)
  ------------------
  |  Branch (129:6): [True: 0, False: 0]
  ------------------
  130|      0|		goto err;
  131|       |
  132|       |	/* Skip the first partition that describe whole disk
  133|       |	 */
  134|      0|	for (i = 1, p = &l->vtoc.v_slice[1];
  135|      0|			i < UNIXWARE_MAXPARTITIONS; i++, p++) {
  ------------------
  |  |   32|      0|#define UNIXWARE_MAXPARTITIONS	16
  ------------------
  |  Branch (135:4): [True: 0, False: 0]
  ------------------
  136|       |
  137|      0|		uint32_t start, size;
  138|      0|		uint16_t tag, flg;
  139|      0|		blkid_partition par;
  140|       |
  141|      0|		tag = le16_to_cpu(p->s_label);
  ------------------
  |  |  136|      0|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  142|      0|		flg = le16_to_cpu(p->s_flags);
  ------------------
  |  |  136|      0|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  143|       |
  144|      0|		if (tag == UNIXWARE_TAG_UNUSED ||
  ------------------
  |  |   35|      0|#define UNIXWARE_TAG_UNUSED       0x0000  /* unused partition */
  ------------------
  |  Branch (144:7): [True: 0, False: 0]
  ------------------
  145|      0|		    tag == UNIXWARE_TAG_ENTIRE_DISK ||
  ------------------
  |  |   40|      0|#define UNIXWARE_TAG_ENTIRE_DISK  0x0005  /* whole disk */
  ------------------
  |  Branch (145:7): [True: 0, False: 0]
  ------------------
  146|      0|		    flg != UNIXWARE_FLAG_VALID)
  ------------------
  |  |   54|      0|#define UNIXWARE_FLAG_VALID	0x0200
  ------------------
  |  Branch (146:7): [True: 0, False: 0]
  ------------------
  147|      0|			continue;
  148|       |
  149|      0|		start = le32_to_cpu(p->start_sect);
  ------------------
  |  |  137|      0|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  150|      0|		size = le32_to_cpu(p->nr_sects);
  ------------------
  |  |  137|      0|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  151|       |
  152|      0|		if (parent && !blkid_is_nested_dimension(parent, start, size)) {
  ------------------
  |  Branch (152:7): [True: 0, False: 0]
  |  Branch (152:17): [True: 0, False: 0]
  ------------------
  153|      0|			DBG(LOWPROBE, ul_debug(
  ------------------
  |  |  358|      0|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      0|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      0|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      0|		x; \
  |  |  |  |  |  |   85|      0|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  154|      0|				"WARNING: unixware partition (%d) overflow "
  155|      0|				"detected, ignore", i));
  156|      0|			continue;
  157|      0|		}
  158|       |
  159|      0|		par = blkid_partlist_add_partition(ls, tab, start, size);
  160|      0|		if (!par)
  ------------------
  |  Branch (160:7): [True: 0, False: 0]
  ------------------
  161|      0|			goto err;
  162|       |
  163|      0|		blkid_partition_set_type(par, tag);
  164|      0|		blkid_partition_set_flags(par, flg);
  165|      0|	}
  166|       |
  167|      0|	return BLKID_PROBE_OK;
  ------------------
  |  |  465|      0|#define BLKID_PROBE_OK	0
  ------------------
  168|       |
  169|     65|nothing:
  170|     65|	return BLKID_PROBE_NONE;
  ------------------
  |  |  471|     65|#define BLKID_PROBE_NONE	1
  ------------------
  171|      0|err:
  172|       |	return -ENOMEM;
  173|      0|}

blkid_new_probe:
  142|  5.99k|{
  143|  5.99k|	int i;
  144|  5.99k|	blkid_probe pr;
  145|       |
  146|  5.99k|	pr = calloc(1, sizeof(struct blkid_struct_probe));
  147|  5.99k|	if (!pr)
  ------------------
  |  Branch (147:6): [True: 0, False: 5.99k]
  ------------------
  148|      0|		return NULL;
  149|       |
  150|  5.99k|	DBG(LOWPROBE, ul_debug("allocate a new probe"));
  ------------------
  |  |  358|  5.99k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  5.99k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  5.99k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  5.99k|	do { \
  |  |  |  |  |  |  |  |   76|  5.99k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  5.99k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  5.99k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 5.99k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  5.99k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 5.99k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  5.99k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  5.99k|		x; \
  |  |  |  |  |  |   85|  5.99k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  151|       |
  152|       |	/* initialize chains */
  153|  23.9k|	for (i = 0; i < BLKID_NCHAINS; i++) {
  ------------------
  |  Branch (153:14): [True: 17.9k, False: 5.99k]
  ------------------
  154|  17.9k|		pr->chains[i].driver = chains_drvs[i];
  155|  17.9k|		pr->chains[i].flags = chains_drvs[i]->dflt_flags;
  156|  17.9k|		pr->chains[i].enabled = chains_drvs[i]->dflt_enabled;
  157|  17.9k|	}
  158|  5.99k|	INIT_LIST_HEAD(&pr->buffers);
  ------------------
  |  |   38|  5.99k|#define INIT_LIST_HEAD(ptr) do { \
  |  |   39|  5.99k|	(ptr)->next = (ptr); (ptr)->prev = (ptr); \
  |  |   40|  5.99k|} while (0)
  |  |  ------------------
  |  |  |  Branch (40:10): [Folded, False: 5.99k]
  |  |  ------------------
  ------------------
  159|  5.99k|	INIT_LIST_HEAD(&pr->prunable_buffers);
  ------------------
  |  |   38|  5.99k|#define INIT_LIST_HEAD(ptr) do { \
  |  |   39|  5.99k|	(ptr)->next = (ptr); (ptr)->prev = (ptr); \
  |  |   40|  5.99k|} while (0)
  |  |  ------------------
  |  |  |  Branch (40:10): [Folded, False: 5.99k]
  |  |  ------------------
  ------------------
  160|  5.99k|	INIT_LIST_HEAD(&pr->values);
  ------------------
  |  |   38|  5.99k|#define INIT_LIST_HEAD(ptr) do { \
  |  |   39|  5.99k|	(ptr)->next = (ptr); (ptr)->prev = (ptr); \
  |  |   40|  5.99k|} while (0)
  |  |  ------------------
  |  |  |  Branch (40:10): [Folded, False: 5.99k]
  |  |  ------------------
  ------------------
  161|  5.99k|	INIT_LIST_HEAD(&pr->hints);
  ------------------
  |  |   38|  5.99k|#define INIT_LIST_HEAD(ptr) do { \
  |  |   39|  5.99k|	(ptr)->next = (ptr); (ptr)->prev = (ptr); \
  |  |   40|  5.99k|} while (0)
  |  |  ------------------
  |  |  |  Branch (40:10): [Folded, False: 5.99k]
  |  |  ------------------
  ------------------
  162|  5.99k|	return pr;
  163|  5.99k|}
blkid_probe_open_device:
  230|  5.99k|{
  231|  5.99k|	int fd;
  232|  5.99k|	struct stat sb;
  233|       |
  234|  5.99k|	if (stat(filename, &sb) == 0 && S_ISBLK(sb.st_mode) &&
  ------------------
  |  Branch (234:6): [True: 5.99k, False: 0]
  |  Branch (234:34): [True: 0, False: 5.99k]
  ------------------
  235|      0|	    sysfs_devno_is_dm_hidden(sb.st_rdev, NULL, pr->vfs)) {
  ------------------
  |  Branch (235:6): [True: 0, False: 0]
  ------------------
  236|      0|		DBG(LOWPROBE, ul_debug("ignore hidden device mapper device"));
  ------------------
  |  |  358|      0|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      0|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      0|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      0|		x; \
  |  |  |  |  |  |   85|      0|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  237|      0|		errno = EINVAL;
  238|      0|		return -EINVAL;
  239|      0|	}
  240|       |
  241|  5.99k|	if (!flags)
  ------------------
  |  Branch (241:6): [True: 5.99k, False: 0]
  ------------------
  242|  5.99k|		flags = O_RDONLY | O_CLOEXEC | O_NONBLOCK;
  243|       |
  244|  5.99k|	fd = ul_vfs_open(pr->vfs, filename, flags, 0);
  245|  5.99k|	if (fd < 0)
  ------------------
  |  Branch (245:6): [True: 0, False: 5.99k]
  ------------------
  246|      0|		return -errno;
  247|       |
  248|  5.99k|	if (blkid_probe_set_device(pr, fd, 0, 0)) {
  ------------------
  |  Branch (248:6): [True: 0, False: 5.99k]
  ------------------
  249|      0|		ul_vfs_close(pr->vfs, fd);
  250|      0|		return -errno ? -errno : -EINVAL;
  ------------------
  |  Branch (250:10): [True: 0, False: 0]
  ------------------
  251|      0|	}
  252|       |
  253|  5.99k|	pr->flags |= BLKID_FL_PRIVATE_FD;
  ------------------
  |  |  241|  5.99k|#define BLKID_FL_PRIVATE_FD	(1 << 1)	/* see blkid_new_probe_from_filename() */
  ------------------
  254|  5.99k|	return 0;
  255|  5.99k|}
blkid_new_probe_from_filename:
  271|  5.99k|{
  272|  5.99k|	blkid_probe pr;
  273|       |
  274|  5.99k|	pr = blkid_new_probe();
  275|  5.99k|	if (!pr)
  ------------------
  |  Branch (275:6): [True: 0, False: 5.99k]
  ------------------
  276|      0|		return NULL;
  277|       |
  278|  5.99k|	if (blkid_probe_open_device(pr, filename, 0)) {
  ------------------
  |  Branch (278:6): [True: 0, False: 5.99k]
  ------------------
  279|      0|		blkid_free_probe(pr);
  280|      0|		return NULL;
  281|      0|	}
  282|       |
  283|  5.99k|	return pr;
  284|  5.99k|}
blkid_free_probe:
  294|  11.9k|{
  295|  11.9k|	int i;
  296|       |
  297|  11.9k|	if (!pr)
  ------------------
  |  Branch (297:6): [True: 5.99k, False: 5.99k]
  ------------------
  298|  5.99k|		return;
  299|       |
  300|  23.9k|	for (i = 0; i < BLKID_NCHAINS; i++) {
  ------------------
  |  Branch (300:14): [True: 17.9k, False: 5.99k]
  ------------------
  301|  17.9k|		struct blkid_chain *ch = &pr->chains[i];
  302|       |
  303|  17.9k|		if (ch->driver->free_data)
  ------------------
  |  Branch (303:7): [True: 11.9k, False: 5.99k]
  ------------------
  304|  11.9k|			ch->driver->free_data(pr, ch->data);
  305|  17.9k|		free(ch->fltr);
  306|  17.9k|		ch->fltr = NULL;
  307|  17.9k|	}
  308|       |
  309|  5.99k|	if ((pr->flags & BLKID_FL_PRIVATE_FD) && pr->fd >= 0)
  ------------------
  |  |  241|  5.99k|#define BLKID_FL_PRIVATE_FD	(1 << 1)	/* see blkid_new_probe_from_filename() */
  ------------------
  |  Branch (309:6): [True: 5.99k, False: 0]
  |  Branch (309:43): [True: 5.99k, False: 0]
  ------------------
  310|  5.99k|		ul_vfs_close(pr->vfs, pr->fd);
  311|  5.99k|	blkid_probe_reset_buffers(pr);
  312|  5.99k|	blkid_probe_reset_values(pr);
  313|  5.99k|	blkid_probe_reset_hints(pr);
  314|  5.99k|	blkid_free_probe(pr->disk_probe);
  315|       |
  316|  5.99k|	DBG(LOWPROBE, ul_debug("free probe"));
  ------------------
  |  |  358|  5.99k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  5.99k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  5.99k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  5.99k|	do { \
  |  |  |  |  |  |  |  |   76|  5.99k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  5.99k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  5.99k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 5.99k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  5.99k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 5.99k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  5.99k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  5.99k|		x; \
  |  |  |  |  |  |   85|  5.99k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  317|  5.99k|	free(pr->vfs);
  318|  5.99k|	free(pr);
  319|  5.99k|}
blkid_probe_free_value:
  322|  4.61k|{
  323|  4.61k|	if (!v)
  ------------------
  |  Branch (323:6): [True: 0, False: 4.61k]
  ------------------
  324|      0|		return;
  325|       |
  326|  4.61k|	list_del(&v->prvals);
  327|  4.61k|	free(v->data);
  328|       |
  329|  4.61k|	DBG(LOWPROBE, ul_debug(" free value %s", v->name));
  ------------------
  |  |  358|  4.61k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  4.61k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  4.61k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  4.61k|	do { \
  |  |  |  |  |  |  |  |   76|  4.61k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  4.61k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  4.61k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 4.61k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  4.61k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 4.61k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  4.61k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  4.61k|		x; \
  |  |  |  |  |  |   85|  4.61k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  330|  4.61k|	free(v);
  331|  4.61k|}
blkid_probe_chain_reset_values:
  337|   126k|{
  338|       |
  339|   126k|	struct list_head *p, *pnext;
  340|       |
  341|   126k|	if (list_empty(&pr->values))
  ------------------
  |  Branch (341:6): [True: 125k, False: 1.84k]
  ------------------
  342|   125k|		return;
  343|       |
  344|  1.84k|	DBG(LOWPROBE, ul_debug("Resetting %s values", chn->driver->name));
  ------------------
  |  |  358|  1.84k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  1.84k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  1.84k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  1.84k|	do { \
  |  |  |  |  |  |  |  |   76|  1.84k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  1.84k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  1.84k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 1.84k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  1.84k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 1.84k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  1.84k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  1.84k|		x; \
  |  |  |  |  |  |   85|  1.84k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  345|       |
  346|  3.00k|	list_for_each_safe(p, pnext, &pr->values) {
  ------------------
  |  |  208|  4.84k|	for (pos = (head)->next, pnext = pos->next; pos != (head); \
  |  |  ------------------
  |  |  |  Branch (208:46): [True: 3.00k, False: 1.84k]
  |  |  ------------------
  |  |  209|  3.00k|	     pos = pnext, pnext = pos->next)
  ------------------
  347|  3.00k|		struct blkid_prval *v = list_entry(p,
  ------------------
  |  |  176|  3.00k|#define list_entry(ptr, type, member)	container_of(ptr, type, member)
  |  |  ------------------
  |  |  |  |  270|  3.00k|#define container_of(ptr, type, member) __extension__ ({	\
  |  |  |  |  271|  3.00k|	const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
  |  |  |  |  272|  3.00k|	(type *)( (char *)__mptr - offsetof(type,member) );})
  |  |  ------------------
  ------------------
  348|  3.00k|						struct blkid_prval, prvals);
  349|       |
  350|  3.00k|		if (v->chain == chn)
  ------------------
  |  Branch (350:7): [True: 1.36k, False: 1.64k]
  ------------------
  351|  1.36k|			blkid_probe_free_value(v);
  352|  3.00k|	}
  353|  1.84k|}
blkid_probe_chain_save_values:
  365|  1.39k|{
  366|  1.39k|	struct list_head *p, *pnext;
  367|  1.39k|	struct blkid_prval *v;
  368|       |
  369|  1.39k|	DBG(LOWPROBE, ul_debug("saving %s values", chn->driver->name));
  ------------------
  |  |  358|  1.39k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  1.39k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  1.39k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  1.39k|	do { \
  |  |  |  |  |  |  |  |   76|  1.39k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  1.39k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  1.39k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 1.39k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  1.39k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 1.39k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  1.39k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  1.39k|		x; \
  |  |  |  |  |  |   85|  1.39k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  370|       |
  371|  2.41k|	list_for_each_safe(p, pnext, &pr->values) {
  ------------------
  |  |  208|  3.81k|	for (pos = (head)->next, pnext = pos->next; pos != (head); \
  |  |  ------------------
  |  |  |  Branch (208:46): [True: 2.41k, False: 1.39k]
  |  |  ------------------
  |  |  209|  2.41k|	     pos = pnext, pnext = pos->next)
  ------------------
  372|       |
  373|  2.41k|		v = list_entry(p, struct blkid_prval, prvals);
  ------------------
  |  |  176|  2.41k|#define list_entry(ptr, type, member)	container_of(ptr, type, member)
  |  |  ------------------
  |  |  |  |  270|  2.41k|#define container_of(ptr, type, member) __extension__ ({	\
  |  |  |  |  271|  2.41k|	const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
  |  |  |  |  272|  2.41k|	(type *)( (char *)__mptr - offsetof(type,member) );})
  |  |  ------------------
  ------------------
  374|  2.41k|		if (v->chain != chn)
  ------------------
  |  Branch (374:7): [True: 0, False: 2.41k]
  ------------------
  375|      0|			continue;
  376|       |
  377|  2.41k|		list_del_init(&v->prvals);
  378|  2.41k|		list_add_tail(&v->prvals, vals);
  379|  2.41k|	}
  380|  1.39k|	return 0;
  381|  1.39k|}
blkid_probe_append_values_list:
  387|    969|{
  388|    969|	DBG(LOWPROBE, ul_debug("appending values"));
  ------------------
  |  |  358|    969|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|    969|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|    969|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|    969|	do { \
  |  |  |  |  |  |  |  |   76|    969|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|    969|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|    969|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 969]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|    969|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 969]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    969|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|    969|		x; \
  |  |  |  |  |  |   85|    969|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  389|       |
  390|    969|	list_splice(vals, &pr->values);
  391|    969|	INIT_LIST_HEAD(vals);
  ------------------
  |  |   38|    969|#define INIT_LIST_HEAD(ptr) do { \
  |  |   39|    969|	(ptr)->next = (ptr); (ptr)->prev = (ptr); \
  |  |   40|    969|} while (0)
  |  |  ------------------
  |  |  |  Branch (40:10): [Folded, False: 969]
  |  |  ------------------
  ------------------
  392|    969|}
blkid_probe_free_values_list:
  396|  5.99k|{
  397|  5.99k|	if (!vals)
  ------------------
  |  Branch (397:6): [True: 0, False: 5.99k]
  ------------------
  398|      0|		return;
  399|       |
  400|  5.99k|	DBG(LOWPROBE, ul_debug("freeing values list"));
  ------------------
  |  |  358|  5.99k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  5.99k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  5.99k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  5.99k|	do { \
  |  |  |  |  |  |  |  |   76|  5.99k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  5.99k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  5.99k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 5.99k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  5.99k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 5.99k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  5.99k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  5.99k|		x; \
  |  |  |  |  |  |   85|  5.99k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  401|       |
  402|  6.79k|	while (!list_empty(vals)) {
  ------------------
  |  Branch (402:9): [True: 801, False: 5.99k]
  ------------------
  403|       |		struct blkid_prval *v = list_entry(vals->next, struct blkid_prval, prvals);
  ------------------
  |  |  176|    801|#define list_entry(ptr, type, member)	container_of(ptr, type, member)
  |  |  ------------------
  |  |  |  |  270|    801|#define container_of(ptr, type, member) __extension__ ({	\
  |  |  |  |  271|    801|	const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
  |  |  |  |  272|    801|	(type *)( (char *)__mptr - offsetof(type,member) );})
  |  |  ------------------
  ------------------
  404|    801|		blkid_probe_free_value(v);
  405|    801|	}
  406|  5.99k|}
blkid_probe_get_chain:
  409|  33.8k|{
  410|  33.8k|	return pr->cur_chain;
  411|  33.8k|}
blkid_reset_probe:
  466|  5.99k|{
  467|  5.99k|	int i;
  468|       |
  469|  5.99k|	blkid_probe_reset_values(pr);
  470|  5.99k|	blkid_probe_set_wiper(pr, 0, 0);
  471|       |
  472|  5.99k|	pr->cur_chain = NULL;
  473|       |
  474|  23.9k|	for (i = 0; i < BLKID_NCHAINS; i++)
  ------------------
  |  Branch (474:14): [True: 17.9k, False: 5.99k]
  ------------------
  475|  17.9k|		blkid_probe_chain_reset_position(&pr->chains[i]);
  476|  5.99k|}
blkid_probe_get_filter:
  509|  5.99k|{
  510|  5.99k|	struct blkid_chain *chn;
  511|       |
  512|  5.99k|	if (chain < 0 || chain >= BLKID_NCHAINS)
  ------------------
  |  Branch (512:6): [True: 0, False: 5.99k]
  |  Branch (512:19): [True: 0, False: 5.99k]
  ------------------
  513|      0|		return NULL;
  514|       |
  515|  5.99k|	chn = &pr->chains[chain];
  516|       |
  517|       |	/* always when you touch the chain filter all indexes are reset and
  518|       |	 * probing starts from scratch
  519|       |	 */
  520|  5.99k|	blkid_probe_chain_reset_position(chn);
  521|  5.99k|	pr->cur_chain = NULL;
  522|       |
  523|  5.99k|	if (!chn->driver->has_fltr || (!chn->fltr && !create))
  ------------------
  |  Branch (523:6): [True: 0, False: 5.99k]
  |  Branch (523:33): [True: 5.99k, False: 0]
  |  Branch (523:47): [True: 0, False: 5.99k]
  ------------------
  524|      0|		return NULL;
  525|       |
  526|  5.99k|	if (!chn->fltr)
  ------------------
  |  Branch (526:6): [True: 5.99k, False: 0]
  ------------------
  527|  5.99k|		chn->fltr = calloc(1, blkid_bmp_nbytes(chn->driver->nidinfos));
  ------------------
  |  |  583|  5.99k|		(blkid_bmp_nwords(max_items) * sizeof(unsigned long))
  |  |  ------------------
  |  |  |  |  580|  5.99k|		(((max_items) + blkid_bmp_wordsize) / blkid_bmp_wordsize)
  |  |  |  |  ------------------
  |  |  |  |  |  |  566|  5.99k|#define blkid_bmp_wordsize		(8 * sizeof(unsigned long))
  |  |  |  |  ------------------
  |  |  |  |               		(((max_items) + blkid_bmp_wordsize) / blkid_bmp_wordsize)
  |  |  |  |  ------------------
  |  |  |  |  |  |  566|  5.99k|#define blkid_bmp_wordsize		(8 * sizeof(unsigned long))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  528|      0|	else
  529|      0|		memset(chn->fltr, 0, blkid_bmp_nbytes(chn->driver->nidinfos));
  ------------------
  |  |  583|      0|		(blkid_bmp_nwords(max_items) * sizeof(unsigned long))
  |  |  ------------------
  |  |  |  |  580|      0|		(((max_items) + blkid_bmp_wordsize) / blkid_bmp_wordsize)
  |  |  |  |  ------------------
  |  |  |  |  |  |  566|      0|#define blkid_bmp_wordsize		(8 * sizeof(unsigned long))
  |  |  |  |  ------------------
  |  |  |  |               		(((max_items) + blkid_bmp_wordsize) / blkid_bmp_wordsize)
  |  |  |  |  ------------------
  |  |  |  |  |  |  566|      0|#define blkid_bmp_wordsize		(8 * sizeof(unsigned long))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  530|       |
  531|       |	/* blkid_probe_dump_filter(pr, chain); */
  532|  5.99k|	return chn->fltr;
  533|  5.99k|}
__blkid_probe_filter_types:
  562|  5.99k|{
  563|  5.99k|	unsigned long *fltr;
  564|  5.99k|	struct blkid_chain *chn;
  565|  5.99k|	size_t i;
  566|       |
  567|  5.99k|	fltr = blkid_probe_get_filter(pr, chain, TRUE);
  ------------------
  |  |  198|  5.99k|# define TRUE 1
  ------------------
  568|  5.99k|	if (!fltr)
  ------------------
  |  Branch (568:6): [True: 0, False: 5.99k]
  ------------------
  569|      0|		return -1;
  570|       |
  571|  5.99k|	chn = &pr->chains[chain];
  572|       |
  573|   497k|	for (i = 0; i < chn->driver->nidinfos; i++) {
  ------------------
  |  Branch (573:14): [True: 491k, False: 5.99k]
  ------------------
  574|   491k|		int has = 0;
  575|   491k|		const struct blkid_idinfo *id = chn->driver->idinfos[i];
  576|   491k|		char **n;
  577|       |
  578|   971k|		for (n = names; *n; n++) {
  ------------------
  |  Branch (578:19): [True: 491k, False: 479k]
  ------------------
  579|   491k|			if (!strcmp(id->name, *n)) {
  ------------------
  |  Branch (579:8): [True: 11.9k, False: 479k]
  ------------------
  580|  11.9k|				has = 1;
  581|  11.9k|				break;
  582|  11.9k|			}
  583|   491k|		}
  584|   491k|		if (has) {
  ------------------
  |  Branch (584:7): [True: 11.9k, False: 479k]
  ------------------
  585|  11.9k|			if (flag & BLKID_FLTR_NOTIN)
  ------------------
  |  |  336|  11.9k|#define BLKID_FLTR_NOTIN		1
  ------------------
  |  Branch (585:8): [True: 11.9k, False: 0]
  ------------------
  586|  11.9k|				blkid_bmp_set_item(fltr, i);
  ------------------
  |  |  571|  11.9k|		((bmp)[ blkid_bmp_idx_byte(item) ] |= blkid_bmp_idx_bit(item))
  |  |  ------------------
  |  |  |  |  568|  11.9k|#define blkid_bmp_idx_byte(item)	((item) / blkid_bmp_wordsize)
  |  |  |  |  ------------------
  |  |  |  |  |  |  566|  11.9k|#define blkid_bmp_wordsize		(8 * sizeof(unsigned long))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		((bmp)[ blkid_bmp_idx_byte(item) ] |= blkid_bmp_idx_bit(item))
  |  |  ------------------
  |  |  |  |  567|  11.9k|#define blkid_bmp_idx_bit(item)		(1UL << ((item) % blkid_bmp_wordsize))
  |  |  |  |  ------------------
  |  |  |  |  |  |  566|  11.9k|#define blkid_bmp_wordsize		(8 * sizeof(unsigned long))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  587|   479k|		} else if (flag & BLKID_FLTR_ONLYIN)
  ------------------
  |  |  340|   479k|#define BLKID_FLTR_ONLYIN		2
  ------------------
  |  Branch (587:14): [True: 0, False: 479k]
  ------------------
  588|      0|			blkid_bmp_set_item(fltr, i);
  ------------------
  |  |  571|      0|		((bmp)[ blkid_bmp_idx_byte(item) ] |= blkid_bmp_idx_bit(item))
  |  |  ------------------
  |  |  |  |  568|      0|#define blkid_bmp_idx_byte(item)	((item) / blkid_bmp_wordsize)
  |  |  |  |  ------------------
  |  |  |  |  |  |  566|      0|#define blkid_bmp_wordsize		(8 * sizeof(unsigned long))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		((bmp)[ blkid_bmp_idx_byte(item) ] |= blkid_bmp_idx_bit(item))
  |  |  ------------------
  |  |  |  |  567|      0|#define blkid_bmp_idx_bit(item)		(1UL << ((item) % blkid_bmp_wordsize))
  |  |  |  |  ------------------
  |  |  |  |  |  |  566|      0|#define blkid_bmp_wordsize		(8 * sizeof(unsigned long))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  589|   491k|	}
  590|       |
  591|  5.99k|	DBG(LOWPROBE, ul_debug("%s: a new probing type-filter initialized",
  ------------------
  |  |  358|  5.99k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  5.99k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  5.99k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  5.99k|	do { \
  |  |  |  |  |  |  |  |   76|  5.99k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  5.99k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  5.99k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 5.99k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  5.99k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 5.99k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  5.99k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  5.99k|		x; \
  |  |  |  |  |  |   85|  5.99k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  592|  5.99k|		chn->driver->name));
  593|       |	/* blkid_probe_dump_filter(pr, chain); */
  594|  5.99k|	return 0;
  595|  5.99k|}
blkid_probe_prune_buffers:
  707|   158k|{
  708|   158k|	struct list_head *p, *next;
  709|       |
  710|   158k|	list_for_each_safe(p, next, &pr->prunable_buffers) {
  ------------------
  |  |  208|   237k|	for (pos = (head)->next, pnext = pos->next; pos != (head); \
  |  |  ------------------
  |  |  |  Branch (208:46): [True: 78.6k, False: 158k]
  |  |  ------------------
  |  |  209|   158k|	     pos = pnext, pnext = pos->next)
  ------------------
  711|  78.6k|		struct blkid_bufinfo *x =
  712|  78.6k|				list_entry(p, struct blkid_bufinfo, bufs);
  ------------------
  |  |  176|  78.6k|#define list_entry(ptr, type, member)	container_of(ptr, type, member)
  |  |  ------------------
  |  |  |  |  270|  78.6k|#define container_of(ptr, type, member) __extension__ ({	\
  |  |  |  |  271|  78.6k|	const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
  |  |  |  |  272|  78.6k|	(type *)( (char *)__mptr - offsetof(type,member) );})
  |  |  ------------------
  ------------------
  713|       |
  714|  78.6k|		remove_buffer(x);
  715|  78.6k|	}
  716|   158k|}
blkid_probe_get_buffer:
  765|  1.20M|{
  766|  1.20M|	struct blkid_bufinfo *bf = NULL;
  767|  1.20M|	uint64_t real_off, bias, len_align;
  768|       |
  769|  1.20M|	bias = off % pr->io_size;
  770|  1.20M|	off -= bias;
  771|  1.20M|	len += bias;
  772|       |
  773|  1.20M|	if (len % pr->io_size) {
  ------------------
  |  Branch (773:6): [True: 976k, False: 227k]
  ------------------
  774|   976k|		len_align = pr->io_size - (len % pr->io_size);
  775|       |
  776|   976k|		if (pr->off + off + len + len_align <= pr->size)
  ------------------
  |  Branch (776:7): [True: 975k, False: 871]
  ------------------
  777|   975k|			len += len_align;
  778|   976k|	}
  779|       |
  780|  1.20M|	real_off = pr->off + off;
  781|       |
  782|       |	/*
  783|       |	DBG(BUFFER, ul_debug("\t>>>> off=%ju, real-off=%ju (probe <%ju..%ju>, len=%ju",
  784|       |				off, real_off, pr->off, pr->off + pr->size, len));
  785|       |	*/
  786|  1.20M|	if (pr->size == 0 || pr->io_size == 0) {
  ------------------
  |  Branch (786:6): [True: 0, False: 1.20M]
  |  Branch (786:23): [True: 0, False: 1.20M]
  ------------------
  787|      0|		errno = EINVAL;
  788|      0|		return NULL;
  789|      0|	}
  790|       |
  791|  1.20M|	if (UINT64_MAX - len < off || UINT64_MAX - len < real_off) {
  ------------------
  |  Branch (791:6): [True: 18, False: 1.20M]
  |  Branch (791:32): [True: 0, False: 1.20M]
  ------------------
  792|     18|		DBG(BUFFER, ul_debug("\t  read-buffer overflow (ignore)"));
  ------------------
  |  |  358|     18|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|     18|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|     18|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|     18|	do { \
  |  |  |  |  |  |  |  |   76|     18|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  355|     18|#define BLKID_DEBUG_BUFFER	(1 << 13)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|     18|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 18]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|     18|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 18]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|     18|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|     18|		x; \
  |  |  |  |  |  |   85|     18|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  793|     18|		return NULL;
  794|     18|	}
  795|       |
  796|  1.20M|	if (len > 8388608 /* 8 Mib */ ) {
  ------------------
  |  Branch (796:6): [True: 105, False: 1.20M]
  ------------------
  797|    105|		DBG(BUFFER, ul_debug("\t  too large read request (ignore)"));
  ------------------
  |  |  358|    105|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|    105|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|    105|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|    105|	do { \
  |  |  |  |  |  |  |  |   76|    105|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  355|    105|#define BLKID_DEBUG_BUFFER	(1 << 13)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|    105|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 105]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|    105|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 105]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    105|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|    105|		x; \
  |  |  |  |  |  |   85|    105|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  798|    105|		return NULL;
  799|    105|	}
  800|       |
  801|  1.20M|	if (len == 0
  ------------------
  |  Branch (801:6): [True: 21, False: 1.20M]
  ------------------
  802|  1.20M|	    || (!S_ISCHR(pr->mode) && (pr->size < off || pr->size < len))
  ------------------
  |  Branch (802:10): [True: 1.20M, False: 0]
  |  Branch (802:33): [True: 3.53k, False: 1.20M]
  |  Branch (802:51): [True: 0, False: 1.20M]
  ------------------
  803|  1.20M|	    || (!S_ISCHR(pr->mode) && (pr->off + pr->size < real_off + len))) {
  ------------------
  |  Branch (803:10): [True: 1.20M, False: 0]
  |  Branch (803:32): [True: 416, False: 1.20M]
  ------------------
  804|  3.97k|		DBG(BUFFER, ul_debug("\t  read-buffer out of probing area (ignore)"));
  ------------------
  |  |  358|  3.97k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  3.97k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  3.97k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  3.97k|	do { \
  |  |  |  |  |  |  |  |   76|  3.97k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  355|  3.97k|#define BLKID_DEBUG_BUFFER	(1 << 13)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  3.97k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 3.97k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  3.97k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 3.97k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  3.97k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  3.97k|		x; \
  |  |  |  |  |  |   85|  3.97k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  805|  3.97k|		errno = 0;
  806|  3.97k|		return NULL;
  807|  3.97k|	}
  808|       |
  809|  1.20M|	if (pr->parent &&
  ------------------
  |  Branch (809:6): [True: 0, False: 1.20M]
  ------------------
  810|      0|	    pr->parent->devno == pr->devno &&
  ------------------
  |  Branch (810:6): [True: 0, False: 0]
  ------------------
  811|      0|	    pr->parent->off <= pr->off &&
  ------------------
  |  Branch (811:6): [True: 0, False: 0]
  ------------------
  812|      0|	    pr->parent->off + pr->parent->size >= pr->off + pr->size) {
  ------------------
  |  Branch (812:6): [True: 0, False: 0]
  ------------------
  813|       |		/*
  814|       |		 * This is a cloned prober and points to the same area as
  815|       |		 * parent. Let's use parent's buffers.
  816|       |		 *
  817|       |		 * Note that pr->off (and pr->parent->off) is always from the
  818|       |		 * begin of the device.
  819|       |		 */
  820|      0|		return blkid_probe_get_buffer(pr->parent,
  821|      0|				pr->off + off + bias - pr->parent->off, len);
  822|      0|	}
  823|       |
  824|       |	/* try buffers we already have in memory or read from device */
  825|  1.20M|	bf = get_cached_buffer(pr, off, len);
  826|  1.20M|	if (!bf) {
  ------------------
  |  Branch (826:6): [True: 226k, False: 974k]
  ------------------
  827|   226k|		bf = read_buffer(pr, real_off, len);
  828|   226k|		if (!bf)
  ------------------
  |  Branch (828:7): [True: 0, False: 226k]
  ------------------
  829|      0|			return NULL;
  830|       |
  831|   226k|		mark_prunable_buffers(pr, bf);
  832|   226k|		list_add_tail(&bf->bufs, &pr->buffers);
  833|   226k|	}
  834|       |
  835|  1.20M|	assert(bf->off <= real_off);
  ------------------
  |  Branch (835:2): [True: 0, False: 1.20M]
  |  Branch (835:2): [True: 1.20M, False: 0]
  ------------------
  836|  1.20M|	assert(bf->off + bf->len >= real_off + len);
  ------------------
  |  Branch (836:2): [True: 0, False: 1.20M]
  |  Branch (836:2): [True: 1.20M, False: 0]
  ------------------
  837|       |
  838|  1.20M|	errno = 0;
  839|  1.20M|	return real_off ? bf->data + (real_off - bf->off + bias) : bf->data + bias;
  ------------------
  |  Branch (839:9): [True: 854k, False: 345k]
  ------------------
  840|  1.20M|}
blkid_probe_get_buffer_direct:
  849|  2.44k|{
  850|  2.44k|	const unsigned char *ret = NULL;
  851|  2.44k|	int flags, rc, olderrno;
  852|       |
  853|  2.44k|	flags = fcntl(pr->fd, F_GETFL);
  854|  2.44k|	rc = fcntl(pr->fd, F_SETFL, flags | O_DIRECT);
  855|  2.44k|	if (rc) {
  ------------------
  |  Branch (855:6): [True: 0, False: 2.44k]
  ------------------
  856|      0|		DBG(LOWPROBE, ul_debug("fcntl F_SETFL failed to set O_DIRECT"));
  ------------------
  |  |  358|      0|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      0|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      0|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      0|		x; \
  |  |  |  |  |  |   85|      0|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  857|      0|		errno = 0;
  858|      0|		return NULL;
  859|      0|	}
  860|  2.44k|	ret = blkid_probe_get_buffer(pr, off, len);
  861|  2.44k|	olderrno = errno;
  862|  2.44k|	rc = fcntl(pr->fd, F_SETFL, flags);
  863|  2.44k|	if (rc) {
  ------------------
  |  Branch (863:6): [True: 0, False: 2.44k]
  ------------------
  864|      0|		DBG(LOWPROBE, ul_debug("fcntl F_SETFL failed to clear O_DIRECT"));
  ------------------
  |  |  358|      0|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      0|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      0|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      0|		x; \
  |  |  |  |  |  |   85|      0|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  865|       |		errno = olderrno;
  866|      0|	}
  867|  2.44k|	return ret;
  868|  2.44k|}
blkid_probe_reset_buffers:
  885|  14.4k|{
  886|  14.4k|	uint64_t ct = 0, len = 0;
  887|       |
  888|  14.4k|	pr->flags &= ~BLKID_FL_MODIF_BUFF;
  ------------------
  |  |  245|  14.4k|#define BLKID_FL_MODIF_BUFF	(1 << 5)	/* cached buffers has been modified */
  ------------------
  889|       |
  890|  14.4k|	blkid_probe_prune_buffers(pr);
  891|       |
  892|  14.4k|	if (list_empty(&pr->buffers))
  ------------------
  |  Branch (892:6): [True: 5.99k, False: 8.43k]
  ------------------
  893|  5.99k|		return 0;
  894|       |
  895|  8.43k|	DBG(BUFFER, ul_debug("Resetting probing buffers"));
  ------------------
  |  |  358|  8.43k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  8.43k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  8.43k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  8.43k|	do { \
  |  |  |  |  |  |  |  |   76|  8.43k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  355|  8.43k|#define BLKID_DEBUG_BUFFER	(1 << 13)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  8.43k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 8.43k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  8.43k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 8.43k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  8.43k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  8.43k|		x; \
  |  |  |  |  |  |   85|  8.43k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  896|       |
  897|   155k|	while (!list_empty(&pr->buffers)) {
  ------------------
  |  Branch (897:9): [True: 147k, False: 8.43k]
  ------------------
  898|   147k|		struct blkid_bufinfo *bf = list_entry(pr->buffers.next,
  ------------------
  |  |  176|   147k|#define list_entry(ptr, type, member)	container_of(ptr, type, member)
  |  |  ------------------
  |  |  |  |  270|   147k|#define container_of(ptr, type, member) __extension__ ({	\
  |  |  |  |  271|   147k|	const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
  |  |  |  |  272|   147k|	(type *)( (char *)__mptr - offsetof(type,member) );})
  |  |  ------------------
  ------------------
  899|   147k|						struct blkid_bufinfo, bufs);
  900|   147k|		ct++;
  901|   147k|		len += bf->len;
  902|       |
  903|   147k|		remove_buffer(bf);
  904|   147k|	}
  905|       |
  906|  8.43k|	DBG(LOWPROBE, ul_debug(" buffers summary: %"PRIu64" bytes by %"PRIu64" read() calls",
  ------------------
  |  |  358|  8.43k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  8.43k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  8.43k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  8.43k|	do { \
  |  |  |  |  |  |  |  |   76|  8.43k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  8.43k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  8.43k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 8.43k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  8.43k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 8.43k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  8.43k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  8.43k|		x; \
  |  |  |  |  |  |   85|  8.43k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  907|  8.43k|			len, ct));
  908|       |
  909|  8.43k|	INIT_LIST_HEAD(&pr->buffers);
  ------------------
  |  |   38|  8.43k|#define INIT_LIST_HEAD(ptr) do { \
  |  |   39|  8.43k|	(ptr)->next = (ptr); (ptr)->prev = (ptr); \
  |  |   40|  8.43k|} while (0)
  |  |  ------------------
  |  |  |  Branch (40:10): [Folded, False: 8.43k]
  |  |  ------------------
  ------------------
  910|       |
  911|  8.43k|	return 0;
  912|  14.4k|}
blkid_probe_is_tiny:
  963|   115k|{
  964|   115k|	return (pr->flags & BLKID_FL_TINY_DEV);
  ------------------
  |  |  242|   115k|#define BLKID_FL_TINY_DEV	(1 << 2)	/* <= 1.47MiB (floppy or so) */
  ------------------
  965|   115k|}
blkid_probe_is_cdrom:
  971|   161k|{
  972|   161k|	return (pr->flags & BLKID_FL_CDROM_DEV);
  ------------------
  |  |  243|   161k|#define BLKID_FL_CDROM_DEV	(1 << 3)	/* is a CD/DVD drive */
  ------------------
  973|   161k|}
blkid_probe_set_device:
 1097|  5.99k|{
 1098|  5.99k|	struct stat sb;
 1099|  5.99k|	uint64_t devsiz = 0;
 1100|  5.99k|	char *dm_uuid = NULL;
 1101|  5.99k|	int is_floppy = 0;
 1102|       |
 1103|  5.99k|	blkid_reset_probe(pr);
 1104|  5.99k|	blkid_probe_reset_buffers(pr);
 1105|       |
 1106|  5.99k|	if ((pr->flags & BLKID_FL_PRIVATE_FD) && pr->fd >= 0)
  ------------------
  |  |  241|  5.99k|#define BLKID_FL_PRIVATE_FD	(1 << 1)	/* see blkid_new_probe_from_filename() */
  ------------------
  |  Branch (1106:6): [True: 0, False: 5.99k]
  |  Branch (1106:43): [True: 0, False: 0]
  ------------------
 1107|      0|		ul_vfs_close(pr->vfs, pr->fd);
 1108|       |
 1109|  5.99k|	if (pr->disk_probe) {
  ------------------
  |  Branch (1109:6): [True: 0, False: 5.99k]
  ------------------
 1110|      0|		blkid_free_probe(pr->disk_probe);
 1111|      0|		pr->disk_probe = NULL;
 1112|      0|	}
 1113|       |
 1114|  5.99k|	pr->flags &= ~BLKID_FL_PRIVATE_FD;
  ------------------
  |  |  241|  5.99k|#define BLKID_FL_PRIVATE_FD	(1 << 1)	/* see blkid_new_probe_from_filename() */
  ------------------
 1115|  5.99k|	pr->flags &= ~BLKID_FL_TINY_DEV;
  ------------------
  |  |  242|  5.99k|#define BLKID_FL_TINY_DEV	(1 << 2)	/* <= 1.47MiB (floppy or so) */
  ------------------
 1116|  5.99k|	pr->flags &= ~BLKID_FL_CDROM_DEV;
  ------------------
  |  |  243|  5.99k|#define BLKID_FL_CDROM_DEV	(1 << 3)	/* is a CD/DVD drive */
  ------------------
 1117|  5.99k|	pr->prob_flags = 0;
 1118|  5.99k|	pr->fd = fd;
 1119|  5.99k|	pr->off = (uint64_t) off;
 1120|  5.99k|	pr->size = 0;
 1121|  5.99k|	pr->io_size = DEFAULT_SECTOR_SIZE;
  ------------------
  |  |   24|  5.99k|#define DEFAULT_SECTOR_SIZE       512
  ------------------
 1122|  5.99k|	pr->devno = 0;
 1123|  5.99k|	pr->disk_devno = 0;
 1124|  5.99k|	pr->mode = 0;
 1125|  5.99k|	pr->blkssz = 0;
 1126|  5.99k|	pr->wipe_off = 0;
 1127|  5.99k|	pr->wipe_size = 0;
 1128|  5.99k|	pr->wipe_chain = NULL;
 1129|  5.99k|	pr->zone_size = 0;
 1130|       |
 1131|  5.99k|	if (fd < 0)
  ------------------
  |  Branch (1131:6): [True: 0, False: 5.99k]
  ------------------
 1132|      0|		return 1;
 1133|       |
 1134|       |
 1135|  5.99k|#if defined(POSIX_FADV_RANDOM) && defined(HAVE_POSIX_FADVISE)
 1136|       |	/* Disable read-ahead */
 1137|  5.99k|	posix_fadvise(fd, 0, 0, POSIX_FADV_RANDOM);
 1138|  5.99k|#endif
 1139|  5.99k|	if (fstat(fd, &sb))
  ------------------
  |  Branch (1139:6): [True: 0, False: 5.99k]
  ------------------
 1140|      0|		goto err;
 1141|       |
 1142|  5.99k|	if (!S_ISBLK(sb.st_mode) && !S_ISCHR(sb.st_mode) && !S_ISREG(sb.st_mode)) {
  ------------------
  |  Branch (1142:6): [True: 5.99k, False: 0]
  |  Branch (1142:30): [True: 5.99k, False: 0]
  |  Branch (1142:54): [True: 0, False: 5.99k]
  ------------------
 1143|      0|		errno = EINVAL;
 1144|      0|		goto err;
 1145|      0|	}
 1146|       |
 1147|  5.99k|	pr->mode = sb.st_mode;
 1148|  5.99k|	if (S_ISBLK(sb.st_mode) || S_ISCHR(sb.st_mode))
  ------------------
  |  Branch (1148:6): [True: 0, False: 5.99k]
  |  Branch (1148:29): [True: 0, False: 5.99k]
  ------------------
 1149|      0|		pr->devno = sb.st_rdev;
 1150|       |
 1151|  5.99k|	if (S_ISBLK(sb.st_mode)) {
  ------------------
  |  Branch (1151:6): [True: 0, False: 5.99k]
  ------------------
 1152|      0|		if (blkdev_get_size(fd, (unsigned long long *) &devsiz)) {
  ------------------
  |  Branch (1152:7): [True: 0, False: 0]
  ------------------
 1153|      0|			DBG(LOWPROBE, ul_debug("failed to get device size"));
  ------------------
  |  |  358|      0|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      0|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      0|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      0|		x; \
  |  |  |  |  |  |   85|      0|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1154|      0|			goto err;
 1155|      0|		}
 1156|  5.99k|	} else if (S_ISCHR(sb.st_mode)) {
  ------------------
  |  Branch (1156:13): [True: 0, False: 5.99k]
  ------------------
 1157|      0|		char buf[PATH_MAX];
 1158|       |
 1159|      0|		if (!sysfs_chrdev_devno_to_devname(sb.st_rdev, buf, sizeof(buf))
  ------------------
  |  Branch (1159:7): [True: 0, False: 0]
  ------------------
 1160|      0|		    || strncmp(buf, "ubi", 3) != 0) {
  ------------------
  |  Branch (1160:10): [True: 0, False: 0]
  ------------------
 1161|      0|			DBG(LOWPROBE, ul_debug("no UBI char device"));
  ------------------
  |  |  358|      0|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      0|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      0|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      0|		x; \
  |  |  |  |  |  |   85|      0|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1162|      0|			errno = EINVAL;
 1163|      0|			goto err;
 1164|      0|		}
 1165|      0|		devsiz = 1;		/* UBI devices are char... */
 1166|  5.99k|	} else if (S_ISREG(sb.st_mode))
  ------------------
  |  Branch (1166:13): [True: 5.99k, False: 0]
  ------------------
 1167|  5.99k|		devsiz = sb.st_size;	/* regular file */
 1168|       |
 1169|  5.99k|	pr->size = size ? (uint64_t)size : devsiz;
  ------------------
  |  Branch (1169:13): [True: 0, False: 5.99k]
  ------------------
 1170|       |
 1171|  5.99k|	if (off && size == 0)
  ------------------
  |  Branch (1171:6): [True: 0, False: 5.99k]
  |  Branch (1171:13): [True: 0, False: 0]
  ------------------
 1172|       |		/* only offset without size specified */
 1173|      0|		pr->size -= (uint64_t) off;
 1174|       |
 1175|  5.99k|	if (pr->off + pr->size > devsiz) {
  ------------------
  |  Branch (1175:6): [True: 0, False: 5.99k]
  ------------------
 1176|      0|		DBG(LOWPROBE, ul_debug("area specified by offset and size is bigger than device"));
  ------------------
  |  |  358|      0|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      0|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      0|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      0|		x; \
  |  |  |  |  |  |   85|      0|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1177|      0|		errno = EINVAL;
 1178|      0|		goto err;
 1179|      0|	}
 1180|       |
 1181|  5.99k|	if (pr->size <= 1440 * 1024 && !S_ISCHR(sb.st_mode))
  ------------------
  |  Branch (1181:6): [True: 0, False: 5.99k]
  |  Branch (1181:33): [True: 0, False: 0]
  ------------------
 1182|      0|		pr->flags |= BLKID_FL_TINY_DEV;
  ------------------
  |  |  242|      0|#define BLKID_FL_TINY_DEV	(1 << 2)	/* <= 1.47MiB (floppy or so) */
  ------------------
 1183|       |
 1184|  5.99k|#ifdef FDGETFDCSTAT
 1185|  5.99k|	if (S_ISBLK(sb.st_mode)) {
  ------------------
  |  Branch (1185:6): [True: 0, False: 5.99k]
  ------------------
 1186|       |		/*
 1187|       |		 * Re-open without O_NONBLOCK for floppy device.
 1188|       |		 *
 1189|       |		 * Since kernel commit c7e9d0020361f4308a70cdfd6d5335e273eb8717
 1190|       |		 * floppy drive works bad when opened with O_NONBLOCK.
 1191|       |		 */
 1192|      0|		struct floppy_fdc_state flst;
 1193|       |
 1194|      0|		if (ioctl(fd, FDGETFDCSTAT, &flst) >= 0) {
  ------------------
  |  Branch (1194:7): [True: 0, False: 0]
  ------------------
 1195|      0|			int flags = fcntl(fd, F_GETFL, 0);
 1196|       |
 1197|      0|			if (flags < 0)
  ------------------
  |  Branch (1197:8): [True: 0, False: 0]
  ------------------
 1198|      0|				goto err;
 1199|      0|			if (flags & O_NONBLOCK) {
  ------------------
  |  Branch (1199:8): [True: 0, False: 0]
  ------------------
 1200|      0|				flags &= ~O_NONBLOCK;
 1201|       |
 1202|      0|				fd = ul_reopen(fd, flags | O_CLOEXEC);
 1203|      0|				if (fd < 0)
  ------------------
  |  Branch (1203:9): [True: 0, False: 0]
  ------------------
 1204|      0|					goto err;
 1205|       |
 1206|      0|				pr->flags |= BLKID_FL_PRIVATE_FD;
  ------------------
  |  |  241|      0|#define BLKID_FL_PRIVATE_FD	(1 << 1)	/* see blkid_new_probe_from_filename() */
  ------------------
 1207|      0|				pr->fd = fd;
 1208|      0|			}
 1209|      0|			is_floppy = 1;
 1210|      0|		}
 1211|      0|		errno = 0;
 1212|      0|	}
 1213|  5.99k|#endif
 1214|  5.99k|	if (S_ISBLK(sb.st_mode) &&
  ------------------
  |  Branch (1214:6): [True: 0, False: 5.99k]
  ------------------
 1215|      0|	    !is_floppy &&
  ------------------
  |  Branch (1215:6): [True: 0, False: 0]
  ------------------
 1216|      0|	    sysfs_devno_is_dm_private(sb.st_rdev, &dm_uuid, pr->vfs)) {
  ------------------
  |  Branch (1216:6): [True: 0, False: 0]
  ------------------
 1217|      0|		DBG(LOWPROBE, ul_debug("ignore private device mapper device"));
  ------------------
  |  |  358|      0|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      0|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      0|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      0|		x; \
  |  |  |  |  |  |   85|      0|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1218|      0|		pr->flags |= BLKID_FL_NOSCAN_DEV;
  ------------------
  |  |  244|      0|#define BLKID_FL_NOSCAN_DEV	(1 << 4)	/* do not scan this device */
  ------------------
 1219|      0|	}
 1220|       |
 1221|  5.99k|#ifdef CDROM_GET_CAPABILITY
 1222|  5.99k|	else if (S_ISBLK(sb.st_mode) &&
  ------------------
  |  Branch (1222:11): [True: 0, False: 5.99k]
  ------------------
 1223|      0|	    !blkid_probe_is_tiny(pr) &&
  ------------------
  |  Branch (1223:6): [True: 0, False: 0]
  ------------------
 1224|      0|	    !dm_uuid &&
  ------------------
  |  Branch (1224:6): [True: 0, False: 0]
  ------------------
 1225|      0|	    !is_floppy &&
  ------------------
  |  Branch (1225:6): [True: 0, False: 0]
  ------------------
 1226|      0|	    blkid_probe_is_wholedisk(pr)) {
  ------------------
  |  Branch (1226:6): [True: 0, False: 0]
  ------------------
 1227|       |
 1228|      0|		long last_written = 0;
 1229|       |
 1230|       |		/*
 1231|       |		 * pktcdvd.ko accepts only these ioctls:
 1232|       |		 *   CDROMEJECT CDROMMULTISESSION CDROMREADTOCENTRY
 1233|       |		 *   CDROM_LAST_WRITTEN CDROM_SEND_PACKET SCSI_IOCTL_SEND_COMMAND
 1234|       |		 * So CDROM_GET_CAPABILITY cannot be used for detecting pktcdvd
 1235|       |		 * devices. But CDROM_GET_CAPABILITY and CDROM_DRIVE_STATUS are
 1236|       |		 * fast so use them for detecting if medium is present. In any
 1237|       |		 * case use last written block form CDROM_LAST_WRITTEN.
 1238|       |		 */
 1239|       |
 1240|      0|		if (ioctl(fd, CDROM_GET_CAPABILITY, NULL) >= 0) {
  ------------------
  |  Branch (1240:7): [True: 0, False: 0]
  ------------------
 1241|      0|# ifdef CDROM_DRIVE_STATUS
 1242|      0|			switch (ioctl(fd, CDROM_DRIVE_STATUS, CDSL_CURRENT)) {
  ------------------
  |  Branch (1242:12): [True: 0, False: 0]
  ------------------
 1243|      0|			case CDS_TRAY_OPEN:
  ------------------
  |  Branch (1243:4): [True: 0, False: 0]
  ------------------
 1244|      0|			case CDS_NO_DISC:
  ------------------
  |  Branch (1244:4): [True: 0, False: 0]
  ------------------
 1245|      0|				errno = ENOMEDIUM;
 1246|      0|				goto err;
 1247|      0|			}
 1248|      0|# endif
 1249|      0|			pr->flags |= BLKID_FL_CDROM_DEV;
  ------------------
  |  |  243|      0|#define BLKID_FL_CDROM_DEV	(1 << 3)	/* is a CD/DVD drive */
  ------------------
 1250|      0|		}
 1251|       |
 1252|      0|# ifdef CDROM_LAST_WRITTEN
 1253|      0|		if (ioctl(fd, CDROM_LAST_WRITTEN, &last_written) == 0) {
  ------------------
  |  Branch (1253:7): [True: 0, False: 0]
  ------------------
 1254|      0|			pr->flags |= BLKID_FL_CDROM_DEV;
  ------------------
  |  |  243|      0|#define BLKID_FL_CDROM_DEV	(1 << 3)	/* is a CD/DVD drive */
  ------------------
 1255|      0|		} else {
 1256|      0|			if (errno == ENOMEDIUM)
  ------------------
  |  Branch (1256:8): [True: 0, False: 0]
  ------------------
 1257|      0|				goto err;
 1258|      0|		}
 1259|      0|# endif
 1260|       |
 1261|      0|		if (pr->flags & BLKID_FL_CDROM_DEV) {
  ------------------
  |  |  243|      0|#define BLKID_FL_CDROM_DEV	(1 << 3)	/* is a CD/DVD drive */
  ------------------
  |  Branch (1261:7): [True: 0, False: 0]
  ------------------
 1262|      0|			cdrom_size_correction(pr, last_written);
 1263|       |
 1264|      0|# ifdef CDROMMULTISESSION
 1265|      0|			if (!pr->off && blkid_probe_get_hint(pr, "session_offset", NULL) < 0) {
  ------------------
  |  Branch (1265:8): [True: 0, False: 0]
  |  Branch (1265:20): [True: 0, False: 0]
  ------------------
 1266|      0|				struct cdrom_multisession multisession = { .addr_format = CDROM_LBA };
 1267|      0|				if (ioctl(fd, CDROMMULTISESSION, &multisession) == 0 && multisession.xa_flag)
  ------------------
  |  Branch (1267:9): [True: 0, False: 0]
  |  Branch (1267:61): [True: 0, False: 0]
  ------------------
 1268|      0|					blkid_probe_set_hint(pr, "session_offset", (multisession.addr.lba << 11));
 1269|      0|			}
 1270|      0|# endif
 1271|      0|		}
 1272|      0|	}
 1273|  5.99k|#endif
 1274|  5.99k|	free(dm_uuid);
 1275|       |
 1276|  5.99k|# ifdef BLKGETZONESZ
 1277|  5.99k|	if (S_ISBLK(sb.st_mode) && !is_floppy) {
  ------------------
  |  Branch (1277:6): [True: 0, False: 5.99k]
  |  Branch (1277:29): [True: 0, False: 0]
  ------------------
 1278|      0|		uint32_t zone_size_sector;
 1279|       |
 1280|      0|		if (!ioctl(pr->fd, BLKGETZONESZ, &zone_size_sector))
  ------------------
  |  Branch (1280:7): [True: 0, False: 0]
  ------------------
 1281|      0|			pr->zone_size = zone_size_sector << 9;
 1282|      0|	}
 1283|  5.99k|# endif
 1284|       |
 1285|  5.99k|	if (S_ISBLK(sb.st_mode) && !is_floppy && !blkid_probe_is_tiny(pr))
  ------------------
  |  Branch (1285:6): [True: 0, False: 5.99k]
  |  Branch (1285:29): [True: 0, False: 0]
  |  Branch (1285:43): [True: 0, False: 0]
  ------------------
 1286|      0|		pr->io_size = blkid_get_io_size(fd);
 1287|       |
 1288|  5.99k|	DBG(LOWPROBE, ul_debug("ready for low-probing, offset=%"PRIu64", size=%"PRIu64", zonesize=%"PRIu64", iosize=%"PRIu64,
  ------------------
  |  |  358|  5.99k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  5.99k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  5.99k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  5.99k|	do { \
  |  |  |  |  |  |  |  |   76|  5.99k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  5.99k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  5.99k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 5.99k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  5.99k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 5.99k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  5.99k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  5.99k|		x; \
  |  |  |  |  |  |   85|  5.99k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1289|  5.99k|				pr->off, pr->size, pr->zone_size, pr->io_size));
 1290|  5.99k|	DBG(LOWPROBE, ul_debug("whole-disk: %s, regfile: %s",
  ------------------
  |  |  358|  5.99k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  5.99k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  5.99k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  5.99k|	do { \
  |  |  |  |  |  |  |  |   76|  5.99k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  5.99k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  5.99k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 5.99k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (77:4): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  Branch (77:4): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  5.99k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 5.99k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  5.99k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  5.99k|		x; \
  |  |  |  |  |  |   85|  5.99k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1291|  5.99k|		blkid_probe_is_wholedisk(pr) ?"YES" : "NO",
 1292|  5.99k|		S_ISREG(pr->mode) ? "YES" : "NO"));
 1293|       |
 1294|  5.99k|	return 0;
 1295|      0|err:
 1296|      0|	DBG(LOWPROBE, ul_debug("failed to prepare a device for low-probing"));
  ------------------
  |  |  358|      0|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      0|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      0|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      0|		x; \
  |  |  |  |  |  |   85|      0|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1297|      0|	return -1;
 1298|       |
 1299|  5.99k|}
blkid_probe_get_sb_buffer:
 1328|  16.6k|{
 1329|  16.6k|	uint64_t hint_offset, off;
 1330|       |
 1331|  16.6k|	if (mag->kboff >= 0) {
  ------------------
  |  Branch (1331:6): [True: 16.6k, False: 0]
  ------------------
 1332|  16.6k|		if (!mag->hoff || blkid_probe_get_hint(pr, mag->hoff, &hint_offset) < 0)
  ------------------
  |  Branch (1332:7): [True: 16.6k, False: 0]
  |  Branch (1332:21): [True: 0, False: 0]
  ------------------
 1333|  16.6k|			hint_offset = 0;
 1334|       |
 1335|  16.6k|		off = hint_offset + (mag->kboff << 10);
 1336|  16.6k|	} else {
 1337|      0|		off = pr->size - (-mag->kboff << 10);
 1338|      0|	}
 1339|       |
 1340|  16.6k|	return blkid_probe_get_buffer(pr, off, size);
 1341|  16.6k|}
blkid_probe_get_idmag_off:
 1344|    367|{
 1345|    367|	if (mag->kboff >= 0)
  ------------------
  |  Branch (1345:6): [True: 367, False: 0]
  ------------------
 1346|    367|		return mag->kboff << 10;
 1347|      0|	else
 1348|      0|		return pr->size - (-mag->kboff << 10);
 1349|    367|}
blkid_probe_get_idmag:
 1358|   534k|{
 1359|   534k|	const struct blkid_idmag *mag = NULL;
 1360|   534k|	uint64_t off = 0;
 1361|       |
 1362|   534k|	if (id)
  ------------------
  |  Branch (1362:6): [True: 534k, False: 0]
  ------------------
 1363|   534k|		mag = &id->magics[0];
 1364|   534k|	if (res)
  ------------------
  |  Branch (1364:6): [True: 534k, False: 0]
  ------------------
 1365|   534k|		*res = NULL;
 1366|       |
 1367|       |	/* try to detect by magic string */
 1368|  1.38M|	while(mag && mag->magic) {
  ------------------
  |  Branch (1368:8): [True: 1.38M, False: 0]
  |  Branch (1368:15): [True: 879k, False: 501k]
  ------------------
 1369|   879k|		const unsigned char *buf;
 1370|   879k|		long kboff;
 1371|   879k|		uint64_t hint_offset;
 1372|       |
 1373|   879k|		if (!mag->hoff || blkid_probe_get_hint(pr, mag->hoff, &hint_offset) < 0)
  ------------------
  |  Branch (1373:7): [True: 828k, False: 51.1k]
  |  Branch (1373:21): [True: 51.1k, False: 0]
  ------------------
 1374|   879k|			hint_offset = 0;
 1375|       |
 1376|       |		/* If the magic is for zoned device, skip non-zoned device */
 1377|   879k|		if (mag->is_zoned && !pr->zone_size) {
  ------------------
  |  Branch (1377:7): [True: 11.8k, False: 867k]
  |  Branch (1377:24): [True: 11.8k, False: 0]
  ------------------
 1378|  11.8k|			mag++;
 1379|  11.8k|			continue;
 1380|  11.8k|		}
 1381|       |
 1382|   867k|		if (!mag->is_zoned)
  ------------------
  |  Branch (1382:7): [True: 867k, False: 0]
  ------------------
 1383|   867k|			kboff = mag->kboff;
 1384|      0|		else
 1385|      0|			kboff = ((mag->zonenum * pr->zone_size) >> 10) + mag->kboff_inzone;
 1386|       |
 1387|   867k|		if (kboff >= 0)
  ------------------
  |  Branch (1387:7): [True: 844k, False: 23.5k]
  ------------------
 1388|   844k|			off = hint_offset + (kboff << 10) + mag->sboff;
 1389|  23.5k|		else
 1390|  23.5k|			off = pr->size - (-kboff << 10) + mag->sboff;
 1391|   867k|		buf = blkid_probe_get_buffer(pr, off, mag->len);
 1392|       |
 1393|   867k|		if (!buf && errno)
  ------------------
  |  Branch (1393:7): [True: 0, False: 867k]
  |  Branch (1393:15): [True: 0, False: 0]
  ------------------
 1394|      0|			return -errno;
 1395|       |
 1396|   867k|		if (buf && !memcmp(mag->magic, buf, mag->len)) {
  ------------------
  |  Branch (1396:7): [True: 867k, False: 0]
  |  Branch (1396:14): [True: 33.6k, False: 834k]
  ------------------
 1397|  33.6k|			DBG(LOWPROBE, ul_debug("\tmagic sboff=%u, kboff=%ld",
  ------------------
  |  |  358|  33.6k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  33.6k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  33.6k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  33.6k|	do { \
  |  |  |  |  |  |  |  |   76|  33.6k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  33.6k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  33.6k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 33.6k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  33.6k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 33.6k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  33.6k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  33.6k|		x; \
  |  |  |  |  |  |   85|  33.6k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1398|  33.6k|				mag->sboff, kboff));
 1399|  33.6k|			if (offset)
  ------------------
  |  Branch (1399:8): [True: 33.2k, False: 425]
  ------------------
 1400|  33.2k|				*offset = off;
 1401|  33.6k|			if (res)
  ------------------
  |  Branch (1401:8): [True: 33.6k, False: 0]
  ------------------
 1402|  33.6k|				*res = mag;
 1403|  33.6k|			return BLKID_PROBE_OK;
  ------------------
  |  |  465|  33.6k|#define BLKID_PROBE_OK	0
  ------------------
 1404|  33.6k|		}
 1405|   834k|		mag++;
 1406|   834k|	}
 1407|       |
 1408|   501k|	if (id && id->magics[0].magic)
  ------------------
  |  Branch (1408:6): [True: 501k, False: 0]
  |  Branch (1408:12): [True: 389k, False: 111k]
  ------------------
 1409|       |		/* magic string(s) defined, but not found */
 1410|   389k|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|   389k|#define BLKID_PROBE_NONE	1
  ------------------
 1411|       |
 1412|   111k|	return BLKID_PROBE_OK;
  ------------------
  |  |  465|   111k|#define BLKID_PROBE_OK	0
  ------------------
 1413|   501k|}
blkid_do_safeprobe:
 1840|  5.99k|{
 1841|  5.99k|	int i, count = 0, rc = 0;
 1842|       |
 1843|  5.99k|	if (pr->flags & BLKID_FL_NOSCAN_DEV)
  ------------------
  |  |  244|  5.99k|#define BLKID_FL_NOSCAN_DEV	(1 << 4)	/* do not scan this device */
  ------------------
  |  Branch (1843:6): [True: 0, False: 5.99k]
  ------------------
 1844|      0|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
 1845|       |
 1846|  5.99k|	blkid_probe_start(pr);
 1847|  5.99k|	pr->prob_flags |= BLKID_PROBE_FL_SAFEPROBE;
  ------------------
  |  |  251|  5.99k|#define BLKID_PROBE_FL_SAFEPROBE (1 << 2)	/* safeprobe mode */
  ------------------
 1848|       |
 1849|  22.6k|	for (i = 0; i < BLKID_NCHAINS; i++) {
  ------------------
  |  Branch (1849:14): [True: 17.0k, False: 5.53k]
  ------------------
 1850|  17.0k|		struct blkid_chain *chn;
 1851|       |
 1852|  17.0k|		chn = pr->cur_chain = &pr->chains[i];
 1853|  17.0k|		chn->binary = FALSE;		/* for sure... */
  ------------------
  |  |  202|  17.0k|# define FALSE 0
  ------------------
 1854|       |
 1855|  17.0k|		DBG(LOWPROBE, ul_debug("chain safeprobe %s %s",
  ------------------
  |  |  358|  17.0k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  17.0k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  17.0k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  17.0k|	do { \
  |  |  |  |  |  |  |  |   76|  17.0k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  17.0k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  17.0k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 17.0k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (77:4): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  17.0k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 17.0k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  17.0k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  17.0k|		x; \
  |  |  |  |  |  |   85|  17.0k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1856|  17.0k|				chn->driver->name,
 1857|  17.0k|				chn->enabled? "ENABLED" : "DISABLED"));
 1858|       |
 1859|  17.0k|		if (!chn->enabled)
  ------------------
  |  Branch (1859:7): [True: 5.53k, False: 11.5k]
  ------------------
 1860|  5.53k|			continue;
 1861|       |
 1862|  11.5k|		blkid_probe_chain_reset_position(chn);
 1863|       |
 1864|  11.5k|		rc = chn->driver->safeprobe(pr, chn);
 1865|       |
 1866|  11.5k|		blkid_probe_chain_reset_position(chn);
 1867|       |
 1868|       |		/* rc: -2 ambivalent, -1 = error, 0 = success, 1 = no result */
 1869|  11.5k|		if (rc < 0)
  ------------------
  |  Branch (1869:7): [True: 455, False: 11.0k]
  ------------------
 1870|    455|			goto done;	/* error */
 1871|  11.0k|		if (rc == 0)
  ------------------
  |  Branch (1871:7): [True: 1.50k, False: 9.57k]
  ------------------
 1872|  1.50k|			count++;	/* success */
 1873|  11.0k|	}
 1874|       |
 1875|  5.99k|done:
 1876|  5.99k|	blkid_probe_end(pr);
 1877|  5.99k|	if (rc < 0)
  ------------------
  |  Branch (1877:6): [True: 455, False: 5.53k]
  ------------------
 1878|    455|		return BLKID_PROBE_ERROR;
  ------------------
  |  |  477|    455|#define BLKID_PROBE_ERROR	-1
  ------------------
 1879|       |
 1880|  5.53k|	return count == 0 ? BLKID_PROBE_NONE : BLKID_PROBE_OK;
  ------------------
  |  |  471|  4.18k|#define BLKID_PROBE_NONE	1
  ------------------
              	return count == 0 ? BLKID_PROBE_NONE : BLKID_PROBE_OK;
  ------------------
  |  |  465|  1.35k|#define BLKID_PROBE_OK	0
  ------------------
  |  Branch (1880:9): [True: 4.18k, False: 1.35k]
  ------------------
 1881|  5.99k|}
blkid_probe_get_sector:
 1940|  23.2k|{
 1941|  23.2k|	return blkid_probe_get_buffer(pr, ((uint64_t) sector) << 9, 0x200);
 1942|  23.2k|}
blkid_probe_assign_value:
 1945|  4.61k|{
 1946|  4.61k|	struct blkid_prval *v;
 1947|       |
 1948|  4.61k|	v = calloc(1, sizeof(struct blkid_prval));
 1949|  4.61k|	if (!v)
  ------------------
  |  Branch (1949:6): [True: 0, False: 4.61k]
  ------------------
 1950|      0|		return NULL;
 1951|       |
 1952|  4.61k|	INIT_LIST_HEAD(&v->prvals);
  ------------------
  |  |   38|  4.61k|#define INIT_LIST_HEAD(ptr) do { \
  |  |   39|  4.61k|	(ptr)->next = (ptr); (ptr)->prev = (ptr); \
  |  |   40|  4.61k|} while (0)
  |  |  ------------------
  |  |  |  Branch (40:10): [Folded, False: 4.61k]
  |  |  ------------------
  ------------------
 1953|  4.61k|	v->name = name;
 1954|  4.61k|	v->chain = pr->cur_chain;
 1955|  4.61k|	list_add_tail(&v->prvals, &pr->values);
 1956|       |
 1957|  4.61k|	DBG(LOWPROBE, ul_debug("assigning %s [%s]", name, v->chain->driver->name));
  ------------------
  |  |  358|  4.61k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  4.61k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  4.61k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  4.61k|	do { \
  |  |  |  |  |  |  |  |   76|  4.61k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  4.61k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  4.61k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 4.61k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  4.61k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 4.61k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  4.61k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  4.61k|		x; \
  |  |  |  |  |  |   85|  4.61k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1958|  4.61k|	return v;
 1959|  4.61k|}
blkid_probe_value_set_data:
 1968|  3.29k|{
 1969|  3.29k|	v->data = calloc(1, len + 1);	/* always terminate by \0 */
 1970|       |
 1971|  3.29k|	if (!v->data)
  ------------------
  |  Branch (1971:6): [True: 0, False: 3.29k]
  ------------------
 1972|      0|		return -ENOMEM;
 1973|  3.29k|	memcpy(v->data, data, len);
 1974|  3.29k|	v->len = len;
 1975|  3.29k|	return 0;
 1976|  3.29k|}
blkid_probe_set_value:
 1980|  3.29k|{
 1981|  3.29k|	struct blkid_prval *v;
 1982|       |
 1983|  3.29k|	v = blkid_probe_assign_value(pr, name);
 1984|  3.29k|	if (!v)
  ------------------
  |  Branch (1984:6): [True: 0, False: 3.29k]
  ------------------
 1985|      0|		return -1;
 1986|       |
 1987|  3.29k|	return blkid_probe_value_set_data(v, data, len);
 1988|  3.29k|}
blkid_probe_vsprintf_value:
 1992|  1.22k|{
 1993|  1.22k|	struct blkid_prval *v;
 1994|  1.22k|	ssize_t len;
 1995|       |
 1996|  1.22k|	v = blkid_probe_assign_value(pr, name);
 1997|  1.22k|	if (!v)
  ------------------
  |  Branch (1997:6): [True: 0, False: 1.22k]
  ------------------
 1998|      0|		return -ENOMEM;
 1999|       |
 2000|  1.22k|	len = vasprintf((char **) &v->data, fmt, ap);
 2001|       |
 2002|  1.22k|	if (len <= 0) {
  ------------------
  |  Branch (2002:6): [True: 0, False: 1.22k]
  ------------------
 2003|      0|		blkid_probe_free_value(v);
 2004|      0|		return len == 0 ? -EINVAL : -ENOMEM;
  ------------------
  |  Branch (2004:10): [True: 0, False: 0]
  ------------------
 2005|      0|	}
 2006|  1.22k|	v->len = len + 1;
 2007|  1.22k|	return 0;
 2008|  1.22k|}
blkid_probe_sprintf_value:
 2012|  1.22k|{
 2013|  1.22k|	int rc;
 2014|  1.22k|	va_list ap;
 2015|       |
 2016|  1.22k|	va_start(ap, fmt);
 2017|  1.22k|	rc = blkid_probe_vsprintf_value(pr, name, fmt, ap);
 2018|  1.22k|	va_end(ap);
 2019|       |
 2020|  1.22k|	return rc;
 2021|  1.22k|}
blkid_probe_set_magic:
 2025|  2.77k|{
 2026|  2.77k|	int rc = 0;
 2027|  2.77k|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
 2028|       |
 2029|  2.77k|	if (!chn || !len || chn->binary)
  ------------------
  |  Branch (2029:6): [True: 0, False: 2.77k]
  |  Branch (2029:14): [True: 0, False: 2.77k]
  |  Branch (2029:22): [True: 0, False: 2.77k]
  ------------------
 2030|      0|		return 0;
 2031|       |
 2032|  2.77k|	switch (chn->driver->id) {
 2033|  2.26k|	case BLKID_CHAIN_SUBLKS:
  ------------------
  |  Branch (2033:2): [True: 2.26k, False: 513]
  ------------------
 2034|  2.26k|		if (!(chn->flags & BLKID_SUBLKS_MAGIC))
  ------------------
  |  |  319|  2.26k|#define BLKID_SUBLKS_MAGIC	(1 << 9) /* define SBMAGIC and SBMAGIC_OFFSET */
  ------------------
  |  Branch (2034:7): [True: 2.26k, False: 0]
  ------------------
 2035|  2.26k|			return 0;
 2036|      0|		rc = blkid_probe_set_value(pr, "SBMAGIC", magic, len);
 2037|      0|		if (!rc)
  ------------------
  |  Branch (2037:7): [True: 0, False: 0]
  ------------------
 2038|      0|			rc = blkid_probe_sprintf_value(pr,
 2039|      0|					"SBMAGIC_OFFSET", "%llu", (unsigned long long)offset);
 2040|      0|		break;
 2041|    513|	case BLKID_CHAIN_PARTS:
  ------------------
  |  Branch (2041:2): [True: 513, False: 2.26k]
  ------------------
 2042|    513|		if (!(chn->flags & BLKID_PARTS_MAGIC))
  ------------------
  |  |  395|    513|#define BLKID_PARTS_MAGIC		(1 << 3)
  ------------------
  |  Branch (2042:7): [True: 513, False: 0]
  ------------------
 2043|    513|			return 0;
 2044|      0|		rc = blkid_probe_set_value(pr, "PTMAGIC", magic, len);
 2045|      0|		if (!rc)
  ------------------
  |  Branch (2045:7): [True: 0, False: 0]
  ------------------
 2046|      0|			rc = blkid_probe_sprintf_value(pr,
 2047|      0|					"PTMAGIC_OFFSET", "%llu", (unsigned long long)offset);
 2048|      0|		break;
 2049|      0|	default:
  ------------------
  |  Branch (2049:2): [True: 0, False: 2.77k]
  ------------------
 2050|      0|		break;
 2051|  2.77k|	}
 2052|       |
 2053|      0|	return rc;
 2054|  2.77k|}
blkid_probe_verify_csum_buf:
 2078|  7.11k|{
 2079|  7.11k|	if (memcmp(csum, expected, n) != 0) {
  ------------------
  |  Branch (2079:6): [True: 7.06k, False: 48]
  ------------------
 2080|  7.06k|		struct blkid_chain *chn = blkid_probe_get_chain(pr);
 2081|       |
 2082|  7.06k|		ON_DBG(LOWPROBE, blkid_probe_log_csum_mismatch(pr, n, csum, expected));
  ------------------
  |  |  360|  7.06k|#define ON_DBG(m, x)		__UL_DBG_CALL(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   75|  7.06k|	do { \
  |  |  |  |   76|  7.06k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  350|  7.06k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  ------------------
  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  7.06k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:7): [True: 0, False: 7.06k]
  |  |  |  |  ------------------
  |  |  |  |   77|      0|			x; \
  |  |  |  |   78|      0|		} \
  |  |  |  |   79|  7.06k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (79:11): [Folded, False: 7.06k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2083|       |
 2084|       |		/*
 2085|       |		 * Accept bad checksum if BLKID_SUBLKS_BADCSUM flags is set
 2086|       |		 */
 2087|  7.06k|		if (chn && chn->driver->id == BLKID_CHAIN_SUBLKS
  ------------------
  |  Branch (2087:7): [True: 7.06k, False: 0]
  |  Branch (2087:14): [True: 6.06k, False: 1.00k]
  ------------------
 2088|  6.06k|		    && (chn->flags & BLKID_SUBLKS_BADCSUM)) {
  ------------------
  |  |  320|  6.06k|#define BLKID_SUBLKS_BADCSUM	(1 << 10) /* allow a bad checksum */
  ------------------
  |  Branch (2088:10): [True: 0, False: 6.06k]
  ------------------
 2089|      0|			blkid_probe_set_value(pr, "SBBADCSUM", (unsigned char *) "1", 2);
 2090|      0|			goto accept;
 2091|      0|		}
 2092|  7.06k|		return 0;	/* bad checksum */
 2093|  7.06k|	}
 2094|       |
 2095|     48|accept:
 2096|     48|	return 1;
 2097|  7.11k|}
blkid_probe_verify_csum:
 2100|  7.11k|{
 2101|  7.11k|	return blkid_probe_verify_csum_buf(pr, sizeof(csum), &csum, &expected);
 2102|  7.11k|}
blkid_probe_get_size:
 2213|  12.4k|{
 2214|  12.4k|	return (blkid_loff_t) pr->size;
 2215|  12.4k|}
blkid_probe_get_sectorsize:
 2248|  24.8k|{
 2249|  24.8k|	if (pr->blkssz)
  ------------------
  |  Branch (2249:6): [True: 18.8k, False: 5.99k]
  ------------------
 2250|  18.8k|		return pr->blkssz;
 2251|       |
 2252|  5.99k|	if (S_ISBLK(pr->mode) &&
  ------------------
  |  Branch (2252:6): [True: 0, False: 5.99k]
  ------------------
 2253|      0|	    blkdev_get_sector_size(pr->fd, (int *) &pr->blkssz) == 0)
  ------------------
  |  Branch (2253:6): [True: 0, False: 0]
  ------------------
 2254|      0|		return pr->blkssz;
 2255|       |
 2256|  5.99k|	pr->blkssz = DEFAULT_SECTOR_SIZE;
  ------------------
  |  |   24|  5.99k|#define DEFAULT_SECTOR_SIZE       512
  ------------------
 2257|  5.99k|	return pr->blkssz;
 2258|  5.99k|}
blkid_probe_lookup_value:
 2389|  3.55k|{
 2390|  3.55k|	struct blkid_prval *v = __blkid_probe_lookup_value(pr, name);
 2391|       |
 2392|  3.55k|	if (!v)
  ------------------
  |  Branch (2392:6): [True: 844, False: 2.71k]
  ------------------
 2393|    844|		return -1;
 2394|  2.71k|	if (data)
  ------------------
  |  Branch (2394:6): [True: 1.35k, False: 1.35k]
  ------------------
 2395|  1.35k|		*data = (char *) v->data;
 2396|  2.71k|	if (len)
  ------------------
  |  Branch (2396:6): [True: 0, False: 2.71k]
  ------------------
 2397|      0|		*len = v->len;
 2398|  2.71k|	return 0;
 2399|  3.55k|}
blkid_probe_has_value:
 2409|  2.20k|{
 2410|  2.20k|	if (blkid_probe_lookup_value(pr, name, NULL, NULL) == 0)
  ------------------
  |  Branch (2410:6): [True: 1.35k, False: 844]
  ------------------
 2411|  1.35k|		return 1;
 2412|    844|	return 0;
 2413|  2.20k|}
__blkid_probe_lookup_value:
 2432|  3.66k|{
 2433|  3.66k|	struct list_head *p;
 2434|       |
 2435|  3.66k|	if (list_empty(&pr->values))
  ------------------
  |  Branch (2435:6): [True: 64, False: 3.59k]
  ------------------
 2436|     64|		return NULL;
 2437|       |
 2438|  6.36k|	list_for_each(p, &pr->values) {
  ------------------
  |  |  190|  7.20k|	for (pos = (head)->next; pos != (head); pos = pos->next)
  |  |  ------------------
  |  |  |  Branch (190:27): [True: 6.36k, False: 844]
  |  |  ------------------
  ------------------
 2439|  6.36k|		struct blkid_prval *v = list_entry(p, struct blkid_prval,
  ------------------
  |  |  176|  6.36k|#define list_entry(ptr, type, member)	container_of(ptr, type, member)
  |  |  ------------------
  |  |  |  |  270|  6.36k|#define container_of(ptr, type, member) __extension__ ({	\
  |  |  |  |  271|  6.36k|	const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
  |  |  |  |  272|  6.36k|	(type *)( (char *)__mptr - offsetof(type,member) );})
  |  |  ------------------
  ------------------
 2440|  6.36k|						prvals);
 2441|       |
 2442|  6.36k|		if (v->name && strcmp(name, v->name) == 0) {
  ------------------
  |  Branch (2442:7): [True: 6.36k, False: 0]
  |  Branch (2442:18): [True: 2.75k, False: 3.60k]
  ------------------
 2443|  2.75k|			DBG(LOWPROBE, ul_debug("returning %s value", v->name));
  ------------------
  |  |  358|  2.75k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  2.75k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  2.75k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  2.75k|	do { \
  |  |  |  |  |  |  |  |   76|  2.75k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  2.75k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  2.75k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 2.75k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  2.75k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 2.75k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  2.75k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  2.75k|		x; \
  |  |  |  |  |  |   85|  2.75k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2444|  2.75k|			return v;
 2445|  2.75k|		}
 2446|  6.36k|	}
 2447|    844|	return NULL;
 2448|  3.59k|}
blkid_unparse_uuid:
 2454|    103|{
 2455|    103|	snprintf(str, len,
 2456|    103|		"%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x",
 2457|    103|		uuid[0], uuid[1], uuid[2], uuid[3],
 2458|    103|		uuid[4], uuid[5],
 2459|    103|		uuid[6], uuid[7],
 2460|    103|		uuid[8], uuid[9],
 2461|    103|		uuid[10], uuid[11], uuid[12], uuid[13], uuid[14],uuid[15]);
 2462|    103|}
blkid_uuid_is_empty:
 2466|  1.42k|{
 2467|  1.42k|	size_t i;
 2468|       |
 2469|  5.80k|	for (i = 0; i < len; i++)
  ------------------
  |  Branch (2469:14): [True: 5.61k, False: 188]
  ------------------
 2470|  5.61k|		if (buf[i])
  ------------------
  |  Branch (2470:7): [True: 1.23k, False: 4.38k]
  ------------------
 2471|  1.23k|			return 0;
 2472|    188|	return 1;
 2473|  1.42k|}
blkid_probe_set_wiper:
 2522|  18.0k|{
 2523|  18.0k|	struct blkid_chain *chn;
 2524|       |
 2525|  18.0k|	if (!size) {
  ------------------
  |  Branch (2525:6): [True: 17.9k, False: 85]
  ------------------
 2526|  17.9k|		DBG(LOWPROBE, ul_debug("zeroize wiper"));
  ------------------
  |  |  358|  17.9k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  17.9k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  17.9k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  17.9k|	do { \
  |  |  |  |  |  |  |  |   76|  17.9k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  17.9k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  17.9k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 17.9k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  17.9k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 17.9k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  17.9k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  17.9k|		x; \
  |  |  |  |  |  |   85|  17.9k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2527|  17.9k|		pr->wipe_size = pr->wipe_off = 0;
 2528|  17.9k|		pr->wipe_chain = NULL;
 2529|  17.9k|		return;
 2530|  17.9k|	}
 2531|       |
 2532|     85|	chn = pr->cur_chain;
 2533|       |
 2534|     85|	if (!chn || !chn->driver ||
  ------------------
  |  Branch (2534:6): [True: 0, False: 85]
  |  Branch (2534:14): [True: 0, False: 85]
  ------------------
 2535|     85|	    chn->idx < 0 || (size_t) chn->idx >= chn->driver->nidinfos)
  ------------------
  |  Branch (2535:6): [True: 0, False: 85]
  |  Branch (2535:22): [True: 0, False: 85]
  ------------------
 2536|      0|		return;
 2537|       |
 2538|     85|	pr->wipe_size = size;
 2539|     85|	pr->wipe_off = off;
 2540|     85|	pr->wipe_chain = chn;
 2541|       |
 2542|     85|	DBG(LOWPROBE,
  ------------------
  |  |  358|     85|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|     85|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|     85|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|     85|	do { \
  |  |  |  |  |  |  |  |   76|     85|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|     85|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|     85|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 85]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|     85|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 85]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|     85|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|     85|		x; \
  |  |  |  |  |  |   85|     85|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2543|     85|		ul_debug("wiper set to %s::%s off=%"PRIu64" size=%"PRIu64"",
 2544|     85|			chn->driver->name,
 2545|     85|			chn->driver->idinfos[chn->idx]->name,
 2546|     85|			pr->wipe_off, pr->wipe_size));
 2547|     85|}
blkid_probe_is_wiped:
 2553|    103|{
 2554|    103|	if (!size)
  ------------------
  |  Branch (2554:6): [True: 0, False: 103]
  ------------------
 2555|      0|		return 0;
 2556|       |
 2557|    103|	if (pr->wipe_off <= off && off + size <= pr->wipe_off + pr->wipe_size) {
  ------------------
  |  Branch (2557:6): [True: 103, False: 0]
  |  Branch (2557:29): [True: 5, False: 98]
  ------------------
 2558|      5|		*chn = pr->wipe_chain;
 2559|      5|		return 1;
 2560|      5|	}
 2561|     98|	return 0;
 2562|    103|}
blkid_probe_use_wiper:
 2569|    103|{
 2570|    103|	struct blkid_chain *chn = NULL;
 2571|       |
 2572|    103|	if (blkid_probe_is_wiped(pr, &chn, off, size) && chn) {
  ------------------
  |  Branch (2572:6): [True: 5, False: 98]
  |  Branch (2572:51): [True: 5, False: 0]
  ------------------
 2573|      5|		DBG(LOWPROBE, ul_debug("previously wiped area modified "
  ------------------
  |  |  358|      5|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      5|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      5|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      5|	do { \
  |  |  |  |  |  |  |  |   76|      5|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      5|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      5|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 5]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      5|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 5]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      5|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      5|		x; \
  |  |  |  |  |  |   85|      5|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2574|      5|				       " -- ignore previous results"));
 2575|      5|		blkid_probe_set_wiper(pr, 0, 0);
 2576|      5|		blkid_probe_chain_reset_values(pr, chn);
 2577|      5|	}
 2578|    103|}
blkid_probe_get_hint:
 2666|  52.2k|{
 2667|  52.2k|	struct blkid_hint *h = get_hint(pr, name);
 2668|       |
 2669|  52.2k|	if (!h)
  ------------------
  |  Branch (2669:6): [True: 52.2k, False: 0]
  ------------------
 2670|  52.2k|		return -EINVAL;
 2671|      0|	if (value)
  ------------------
  |  Branch (2671:6): [True: 0, False: 0]
  ------------------
 2672|      0|		*value = h->value;
 2673|      0|	return 0;
 2674|  52.2k|}
blkid_probe_reset_hints:
 2683|  5.99k|{
 2684|  5.99k|	if (list_empty(&pr->hints))
  ------------------
  |  Branch (2684:6): [True: 5.99k, False: 0]
  ------------------
 2685|  5.99k|		return;
 2686|       |
 2687|      0|	DBG(LOWPROBE, ul_debug("resetting hints"));
  ------------------
  |  |  358|      0|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      0|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      0|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      0|		x; \
  |  |  |  |  |  |   85|      0|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2688|       |
 2689|      0|	while (!list_empty(&pr->hints)) {
  ------------------
  |  Branch (2689:9): [True: 0, False: 0]
  ------------------
 2690|      0|		struct blkid_hint *h = list_entry(pr->hints.next,
  ------------------
  |  |  176|      0|#define list_entry(ptr, type, member)	container_of(ptr, type, member)
  |  |  ------------------
  |  |  |  |  270|      0|#define container_of(ptr, type, member) __extension__ ({	\
  |  |  |  |  271|      0|	const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
  |  |  |  |  272|      0|	(type *)( (char *)__mptr - offsetof(type,member) );})
  |  |  ------------------
  ------------------
 2691|      0|						struct blkid_hint, hints);
 2692|      0|		list_del(&h->hints);
 2693|      0|		free(h->name);
 2694|      0|		free(h);
 2695|      0|	}
 2696|       |
 2697|      0|	INIT_LIST_HEAD(&pr->hints);
  ------------------
  |  |   38|      0|#define INIT_LIST_HEAD(ptr) do { \
  |  |   39|      0|	(ptr)->next = (ptr); (ptr)->prev = (ptr); \
  |  |   40|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (40:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2698|      0|}
probe.c:blkid_probe_chain_reset_position:
  356|  47.0k|{
  357|  47.0k|	chn->idx = -1;
  358|  47.0k|}
probe.c:remove_buffer:
  598|   226k|{
  599|   226k|	list_del(&bf->bufs);
  600|       |
  601|   226k|	DBG(BUFFER, ul_debug(" remove buffer: [off=%"PRIu64", len=%"PRIu64"]",
  ------------------
  |  |  358|   226k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|   226k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|   226k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|   226k|	do { \
  |  |  |  |  |  |  |  |   76|   226k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  355|   226k|#define BLKID_DEBUG_BUFFER	(1 << 13)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|   226k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 226k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|   226k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 226k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|   226k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|   226k|		x; \
  |  |  |  |  |  |   85|   226k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  602|   226k|				bf->off, bf->len));
  603|   226k|	munmap(bf->data, bf->len);
  604|   226k|	free(bf);
  605|   226k|}
probe.c:get_cached_buffer:
  668|  1.20M|{
  669|  1.20M|	uint64_t real_off = pr->off + off;
  670|  1.20M|	struct list_head *p;
  671|       |
  672|  22.3M|	list_for_each(p, &pr->buffers) {
  ------------------
  |  |  190|  22.5M|	for (pos = (head)->next; pos != (head); pos = pos->next)
  |  |  ------------------
  |  |  |  Branch (190:27): [True: 22.3M, False: 226k]
  |  |  ------------------
  ------------------
  673|  22.3M|		struct blkid_bufinfo *x =
  674|  22.3M|				list_entry(p, struct blkid_bufinfo, bufs);
  ------------------
  |  |  176|  22.3M|#define list_entry(ptr, type, member)	container_of(ptr, type, member)
  |  |  ------------------
  |  |  |  |  270|  22.3M|#define container_of(ptr, type, member) __extension__ ({	\
  |  |  |  |  271|  22.3M|	const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
  |  |  |  |  272|  22.3M|	(type *)( (char *)__mptr - offsetof(type,member) );})
  |  |  ------------------
  ------------------
  675|       |
  676|  22.3M|		if (real_off >= x->off && real_off + len <= x->off + x->len) {
  ------------------
  |  Branch (676:7): [True: 3.35M, False: 19.0M]
  |  Branch (676:29): [True: 974k, False: 2.37M]
  ------------------
  677|   974k|			DBG(BUFFER, ul_debug("\treuse: off=%"PRIu64" len=%"PRIu64" (for off=%"PRIu64" len=%"PRIu64")",
  ------------------
  |  |  358|   974k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|   974k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|   974k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|   974k|	do { \
  |  |  |  |  |  |  |  |   76|   974k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  355|   974k|#define BLKID_DEBUG_BUFFER	(1 << 13)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|   974k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 974k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|   974k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 974k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|   974k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|   974k|		x; \
  |  |  |  |  |  |   85|   974k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  678|   974k|						x->off, x->len, real_off, len));
  679|   974k|			return x;
  680|   974k|		}
  681|  22.3M|	}
  682|   226k|	return NULL;
  683|  1.20M|}
probe.c:read_buffer:
  608|   226k|{
  609|   226k|	ssize_t ret;
  610|   226k|	struct blkid_bufinfo *bf = NULL;
  611|       |
  612|   226k|	if (ul_vfs_lseek(pr->vfs, pr->fd, real_off, SEEK_SET) == (off_t) -1) {
  ------------------
  |  Branch (612:6): [True: 0, False: 226k]
  ------------------
  613|      0|		errno = 0;
  614|      0|		return NULL;
  615|      0|	}
  616|       |
  617|       |	/* someone trying to overflow some buffers? */
  618|   226k|	if (len > ULONG_MAX - sizeof(struct blkid_bufinfo)) {
  ------------------
  |  Branch (618:6): [True: 0, False: 226k]
  ------------------
  619|      0|		errno = ENOMEM;
  620|      0|		return NULL;
  621|      0|	}
  622|       |
  623|       |	/* allocate info and space for data by one malloc call */
  624|   226k|	bf = calloc(1, sizeof(struct blkid_bufinfo));
  625|   226k|	if (!bf) {
  ------------------
  |  Branch (625:6): [True: 0, False: 226k]
  ------------------
  626|      0|		errno = ENOMEM;
  627|      0|		return NULL;
  628|      0|	}
  629|       |
  630|   226k|	bf->data = mmap(NULL, len, PROT_READ | PROT_WRITE,
  631|   226k|			MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
  632|   226k|	if (bf->data == MAP_FAILED) {
  ------------------
  |  Branch (632:6): [True: 0, False: 226k]
  ------------------
  633|      0|		free(bf);
  634|      0|		errno = ENOMEM;
  635|      0|		return NULL;
  636|      0|	}
  637|       |
  638|   226k|	bf->len = len;
  639|   226k|	bf->off = real_off;
  640|   226k|	INIT_LIST_HEAD(&bf->bufs);
  ------------------
  |  |   38|   226k|#define INIT_LIST_HEAD(ptr) do { \
  |  |   39|   226k|	(ptr)->next = (ptr); (ptr)->prev = (ptr); \
  |  |   40|   226k|} while (0)
  |  |  ------------------
  |  |  |  Branch (40:10): [Folded, False: 226k]
  |  |  ------------------
  ------------------
  641|       |
  642|   226k|	DBG(LOWPROBE, ul_debug("\tread: off=%"PRIu64" len=%"PRIu64"",
  ------------------
  |  |  358|   226k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|   226k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|   226k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|   226k|	do { \
  |  |  |  |  |  |  |  |   76|   226k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|   226k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|   226k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 226k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|   226k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 226k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|   226k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|   226k|		x; \
  |  |  |  |  |  |   85|   226k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  643|   226k|	                       real_off, len));
  644|       |
  645|   226k|	ret = ul_vfs_read(pr->vfs, pr->fd, bf->data, len);
  646|   226k|	if (ret != (ssize_t) len) {
  ------------------
  |  Branch (646:6): [True: 0, False: 226k]
  ------------------
  647|      0|		DBG(LOWPROBE, ul_debug("\tread failed: %m"));
  ------------------
  |  |  358|      0|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      0|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      0|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      0|		x; \
  |  |  |  |  |  |   85|      0|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  648|      0|		remove_buffer(bf);
  649|       |
  650|       |		/* I/O errors on CDROMs are non-fatal to work with hybrid
  651|       |		 * audio+data disks */
  652|      0|		if (ret >= 0 || blkid_probe_is_cdrom(pr) || blkdid_probe_is_opal_locked(pr))
  ------------------
  |  Branch (652:7): [True: 0, False: 0]
  |  Branch (652:19): [True: 0, False: 0]
  |  Branch (652:47): [True: 0, False: 0]
  ------------------
  653|      0|			errno = 0;
  654|       |
  655|      0|		return NULL;
  656|      0|	}
  657|       |
  658|   226k|	if (mprotect(bf->data, len, PROT_READ))
  ------------------
  |  Branch (658:6): [True: 0, False: 226k]
  ------------------
  659|   226k|		DBG(LOWPROBE, ul_debug("\tmprotect failed: %m"));
  ------------------
  |  |  358|   226k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|   226k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      0|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|   226k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|   226k|		x; \
  |  |  |  |  |  |   85|   226k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  660|       |
  661|   226k|	return bf;
  662|   226k|}
probe.c:mark_prunable_buffers:
  689|   226k|{
  690|   226k|	struct list_head *p, *next;
  691|       |
  692|  3.63M|	list_for_each_safe(p, next, &pr->buffers) {
  ------------------
  |  |  208|  3.86M|	for (pos = (head)->next, pnext = pos->next; pos != (head); \
  |  |  ------------------
  |  |  |  Branch (208:46): [True: 3.63M, False: 226k]
  |  |  ------------------
  |  |  209|  3.63M|	     pos = pnext, pnext = pos->next)
  ------------------
  693|  3.63M|		struct blkid_bufinfo *x =
  694|  3.63M|				list_entry(p, struct blkid_bufinfo, bufs);
  ------------------
  |  |  176|  3.63M|#define list_entry(ptr, type, member)	container_of(ptr, type, member)
  |  |  ------------------
  |  |  |  |  270|  3.63M|#define container_of(ptr, type, member) __extension__ ({	\
  |  |  |  |  271|  3.63M|	const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
  |  |  |  |  272|  3.63M|	(type *)( (char *)__mptr - offsetof(type,member) );})
  |  |  ------------------
  ------------------
  695|       |
  696|  3.63M|		if (bf->off <= x->off && bf->off + bf->len >= x->off + x->len) {
  ------------------
  |  Branch (696:7): [True: 2.68M, False: 949k]
  |  Branch (696:28): [True: 78.6k, False: 2.60M]
  ------------------
  697|  78.6k|			list_del(&x->bufs);
  698|  78.6k|			list_add(&x->bufs, &pr->prunable_buffers);
  699|  78.6k|		}
  700|  3.63M|	}
  701|   226k|}
probe.c:blkid_probe_reset_values:
  944|  11.9k|{
  945|  11.9k|	if (list_empty(&pr->values))
  ------------------
  |  Branch (945:6): [True: 10.6k, False: 1.35k]
  ------------------
  946|  10.6k|		return;
  947|       |
  948|  1.35k|	DBG(LOWPROBE, ul_debug("resetting results"));
  ------------------
  |  |  358|  1.35k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  1.35k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  1.35k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  1.35k|	do { \
  |  |  |  |  |  |  |  |   76|  1.35k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  1.35k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  1.35k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 1.35k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  1.35k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 1.35k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  1.35k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  1.35k|		x; \
  |  |  |  |  |  |   85|  1.35k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  949|       |
  950|  3.81k|	while (!list_empty(&pr->values)) {
  ------------------
  |  Branch (950:9): [True: 2.45k, False: 1.35k]
  ------------------
  951|  2.45k|		struct blkid_prval *v = list_entry(pr->values.next,
  ------------------
  |  |  176|  2.45k|#define list_entry(ptr, type, member)	container_of(ptr, type, member)
  |  |  ------------------
  |  |  |  |  270|  2.45k|#define container_of(ptr, type, member) __extension__ ({	\
  |  |  |  |  271|  2.45k|	const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
  |  |  |  |  272|  2.45k|	(type *)( (char *)__mptr - offsetof(type,member) );})
  |  |  ------------------
  ------------------
  952|  2.45k|						struct blkid_prval, prvals);
  953|  2.45k|		blkid_probe_free_value(v);
  954|  2.45k|	}
  955|       |
  956|  1.35k|	INIT_LIST_HEAD(&pr->values);
  ------------------
  |  |   38|  1.35k|#define INIT_LIST_HEAD(ptr) do { \
  |  |   39|  1.35k|	(ptr)->next = (ptr); (ptr)->prev = (ptr); \
  |  |   40|  1.35k|} while (0)
  |  |  ------------------
  |  |  |  Branch (40:10): [Folded, False: 1.35k]
  |  |  ------------------
  ------------------
  957|  1.35k|}
probe.c:blkid_probe_start:
 1416|  5.99k|{
 1417|  5.99k|	DBG(LOWPROBE, ul_debug("start probe"));
  ------------------
  |  |  358|  5.99k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  5.99k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  5.99k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  5.99k|	do { \
  |  |  |  |  |  |  |  |   76|  5.99k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  5.99k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  5.99k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 5.99k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  5.99k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 5.99k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  5.99k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  5.99k|		x; \
  |  |  |  |  |  |   85|  5.99k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1418|       |	pr->cur_chain = NULL;
 1419|  5.99k|	pr->prob_flags = 0;
 1420|  5.99k|	blkid_probe_set_wiper(pr, 0, 0);
 1421|  5.99k|}
probe.c:blkid_probe_end:
 1424|  5.99k|{
 1425|  5.99k|	DBG(LOWPROBE, ul_debug("end probe"));
  ------------------
  |  |  358|  5.99k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  5.99k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  5.99k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  5.99k|	do { \
  |  |  |  |  |  |  |  |   76|  5.99k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  5.99k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  5.99k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 5.99k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  5.99k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 5.99k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  5.99k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  5.99k|		x; \
  |  |  |  |  |  |   85|  5.99k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1426|       |	pr->cur_chain = NULL;
 1427|  5.99k|	pr->prob_flags = 0;
 1428|  5.99k|	blkid_probe_set_wiper(pr, 0, 0);
 1429|  5.99k|}
probe.c:get_hint:
 2581|  52.2k|{
 2582|  52.2k|	struct list_head *p;
 2583|       |
 2584|  52.2k|	if (list_empty(&pr->hints))
  ------------------
  |  Branch (2584:6): [True: 52.2k, False: 0]
  ------------------
 2585|  52.2k|		return NULL;
 2586|       |
 2587|      0|	list_for_each(p, &pr->hints) {
  ------------------
  |  |  190|      0|	for (pos = (head)->next; pos != (head); pos = pos->next)
  |  |  ------------------
  |  |  |  Branch (190:27): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2588|      0|		struct blkid_hint *h = list_entry(p, struct blkid_hint, hints);
  ------------------
  |  |  176|      0|#define list_entry(ptr, type, member)	container_of(ptr, type, member)
  |  |  ------------------
  |  |  |  |  270|      0|#define container_of(ptr, type, member) __extension__ ({	\
  |  |  |  |  271|      0|	const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
  |  |  |  |  272|      0|	(type *)( (char *)__mptr - offsetof(type,member) );})
  |  |  ------------------
  ------------------
 2589|       |
 2590|      0|		if (h->name && strcmp(name, h->name) == 0)
  ------------------
  |  Branch (2590:7): [True: 0, False: 0]
  |  Branch (2590:18): [True: 0, False: 0]
  ------------------
 2591|      0|			return h;
 2592|      0|	}
 2593|      0|	return NULL;
 2594|      0|}

adaptec_raid.c:probe_adraid:
   78|  5.98k|{
   79|  5.98k|	uint64_t off;
   80|  5.98k|	struct adaptec_metadata *ad;
   81|       |
   82|  5.98k|	if (!S_ISREG(pr->mode) && !blkid_probe_is_wholedisk(pr))
  ------------------
  |  Branch (82:6): [True: 0, False: 5.98k]
  |  Branch (82:28): [True: 0, False: 0]
  ------------------
   83|      0|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
   84|       |
   85|  5.98k|	off = ((pr->size / 0x200)-1) * 0x200;
   86|  5.98k|	ad = (struct adaptec_metadata *)
   87|  5.98k|			blkid_probe_get_buffer(pr,
   88|  5.98k|					off,
   89|  5.98k|					sizeof(struct adaptec_metadata));
   90|  5.98k|	if (!ad)
  ------------------
  |  Branch (90:6): [True: 0, False: 5.98k]
  ------------------
   91|      0|		return errno ? -errno : BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  |  Branch (91:10): [True: 0, False: 0]
  ------------------
   92|       |
   93|  5.98k|	if (ad->smagic != be32_to_cpu(AD_SIGNATURE))
  ------------------
  |  |  141|  5.98k|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  |  Branch (93:6): [True: 5.98k, False: 0]
  ------------------
   94|  5.98k|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|  5.98k|#define BLKID_PROBE_NONE	1
  ------------------
   95|      0|	if (ad->b0idcode != be32_to_cpu(AD_MAGIC))
  ------------------
  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  |  Branch (95:6): [True: 0, False: 0]
  ------------------
   96|      0|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
   97|      0|	if (blkid_probe_sprintf_version(pr, "%u", ad->resver) != 0)
  ------------------
  |  Branch (97:6): [True: 0, False: 0]
  ------------------
   98|      0|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
   99|      0|	if (blkid_probe_set_magic(pr, off, sizeof(ad->b0idcode),
  ------------------
  |  Branch (99:6): [True: 0, False: 0]
  ------------------
  100|      0|				(unsigned char *) &ad->b0idcode))
  101|      0|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  102|       |
  103|      0|	return BLKID_PROBE_OK;
  ------------------
  |  |  465|      0|#define BLKID_PROBE_OK	0
  ------------------
  104|      0|}

apfs.c:probe_apfs:
   72|    608|{
   73|    608|	const struct apfs_super_block *sb;
   74|       |
   75|    608|	sb = blkid_probe_get_sb(pr, mag, struct apfs_super_block);
  ------------------
  |  |  451|    608|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
   76|    608|	if (!sb)
  ------------------
  |  Branch (76:6): [True: 0, False: 608]
  ------------------
   77|      0|		return errno ? -errno : BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  |  Branch (77:10): [True: 0, False: 0]
  ------------------
   78|       |
   79|    608|	if (!apfs_verify_checksum(pr, sb))
  ------------------
  |  Branch (79:6): [True: 585, False: 23]
  ------------------
   80|    585|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|    585|#define BLKID_PROBE_NONE	1
  ------------------
   81|       |
   82|     23|	if (le16_to_cpu(sb->type) != APFS_CONTAINER_SUPERBLOCK_TYPE)
  ------------------
  |  |  136|     23|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
              	if (le16_to_cpu(sb->type) != APFS_CONTAINER_SUPERBLOCK_TYPE)
  ------------------
  |  |   10|     23|#define APFS_CONTAINER_SUPERBLOCK_TYPE 1
  ------------------
  |  Branch (82:6): [True: 20, False: 3]
  ------------------
   83|     20|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|     20|#define BLKID_PROBE_NONE	1
  ------------------
   84|       |
   85|      3|	if (le16_to_cpu(sb->subtype) != APFS_CONTAINER_SUPERBLOCK_SUBTYPE)
  ------------------
  |  |  136|      3|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
              	if (le16_to_cpu(sb->subtype) != APFS_CONTAINER_SUPERBLOCK_SUBTYPE)
  ------------------
  |  |   11|      3|#define APFS_CONTAINER_SUPERBLOCK_SUBTYPE 0
  ------------------
  |  Branch (85:6): [True: 0, False: 3]
  ------------------
   86|      0|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
   87|       |
   88|      3|	if (le16_to_cpu(sb->pad) != 0)
  ------------------
  |  |  136|      3|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  |  Branch (88:6): [True: 3, False: 0]
  ------------------
   89|      3|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|      3|#define BLKID_PROBE_NONE	1
  ------------------
   90|       |
   91|       |	/*
   92|       |	 * This check is pretty draconian, but should avoid false
   93|       |	 * positives. Can be improved as more APFS documentation
   94|       |	 * is published.
   95|       |	 */
   96|      0|	if (le32_to_cpu(sb->block_size) != APFS_STANDARD_BLOCK_SIZE)
  ------------------
  |  |  137|      0|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              	if (le32_to_cpu(sb->block_size) != APFS_STANDARD_BLOCK_SIZE)
  ------------------
  |  |   12|      0|#define APFS_STANDARD_BLOCK_SIZE 4096
  ------------------
  |  Branch (96:6): [True: 0, False: 0]
  ------------------
   97|      0|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
   98|       |
   99|      0|	if (blkid_probe_set_uuid(pr, sb->uuid) < 0)
  ------------------
  |  Branch (99:6): [True: 0, False: 0]
  ------------------
  100|      0|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  101|       |
  102|      0|	blkid_probe_set_fsblocksize(pr, le32_to_cpu(sb->block_size));
  ------------------
  |  |  137|      0|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  103|      0|	blkid_probe_set_block_size(pr, le32_to_cpu(sb->block_size));
  ------------------
  |  |  137|      0|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  104|       |
  105|      0|	return BLKID_PROBE_OK;
  ------------------
  |  |  465|      0|#define BLKID_PROBE_OK	0
  ------------------
  106|      0|}
apfs.c:apfs_verify_checksum:
   61|    608|{
   62|    608|	const size_t csummed_start_offset = offsetof(__typeof__(*sb), oid);
   63|    608|	uint64_t csum;
   64|       |
   65|    608|	csum = apfs_fletcher64(((const uint8_t *)sb) + csummed_start_offset,
   66|    608|			       sizeof(*sb) - csummed_start_offset);
   67|       |
   68|       |	return blkid_probe_verify_csum(pr, csum, le64_to_cpu(sb->checksum));
  ------------------
  |  |  138|    608|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
   69|    608|}
apfs.c:apfs_fletcher64:
   43|    608|{
   44|    608|	uint64_t lo32 = 0, hi32 = 0, csum_hi;
   45|    608|	uint32_t csum_low;
   46|    608|	size_t i;
   47|       |
   48|   621k|	for (i = 0; i < size / 4; i++) {
  ------------------
  |  Branch (48:14): [True: 621k, False: 608]
  ------------------
   49|   621k|		lo32 += le32_to_cpu(((uint32_t *)buf)[i]);
  ------------------
  |  |  137|   621k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
   50|   621k|		hi32 += lo32;
   51|   621k|	}
   52|       |
   53|    608|	csum_low = ~((lo32 + hi32) % UINT32_MAX);
   54|    608|	csum_hi = ~((lo32 + csum_low) % UINT32_MAX);
   55|       |
   56|    608|	return csum_hi << 32 | csum_low;
   57|    608|}

bcache.c:probe_bcache:
  227|    197|{
  228|    197|	const struct bcache_super_block *bcs;
  229|       |
  230|    197|	bcs = blkid_probe_get_sb(pr, mag, struct bcache_super_block);
  ------------------
  |  |  451|    197|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
  231|    197|	if (!bcs)
  ------------------
  |  Branch (231:6): [True: 0, False: 197]
  ------------------
  232|      0|		return errno ? -errno : BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  |  Branch (232:10): [True: 0, False: 0]
  ------------------
  233|       |
  234|    197|	if (!bcache_verify_checksum(pr, mag, bcs))
  ------------------
  |  Branch (234:6): [True: 193, False: 4]
  ------------------
  235|    193|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|    193|#define BLKID_PROBE_NONE	1
  ------------------
  236|       |
  237|      4|	if (le64_to_cpu(bcs->offset) != BCACHE_SB_OFF / 512)
  ------------------
  |  |  138|      4|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
              	if (le64_to_cpu(bcs->offset) != BCACHE_SB_OFF / 512)
  ------------------
  |  |  178|      4|#define BCACHE_SB_OFF       0x1000U
  ------------------
  |  Branch (237:6): [True: 4, False: 0]
  ------------------
  238|      4|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|      4|#define BLKID_PROBE_NONE	1
  ------------------
  239|       |
  240|      0|	if (blkid_probe_sprintf_version(pr, "%"PRIu64, le64_to_cpu(bcs->version)) < 0)
  ------------------
  |  |  138|      0|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  |  Branch (240:6): [True: 0, False: 0]
  ------------------
  241|      0|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  242|       |
  243|      0|	if (blkid_probe_set_uuid(pr, bcs->uuid) < 0)
  ------------------
  |  Branch (243:6): [True: 0, False: 0]
  ------------------
  244|      0|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  245|       |
  246|      0|	if (blkid_probe_set_label(pr, bcs->label, sizeof(bcs->label)) < 0)
  ------------------
  |  Branch (246:6): [True: 0, False: 0]
  ------------------
  247|      0|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  248|       |
  249|      0|	if (blkid_probe_set_block_size(pr, le16_to_cpu(bcs->block_size) * 512))
  ------------------
  |  |  136|      0|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  |  Branch (249:6): [True: 0, False: 0]
  ------------------
  250|      0|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  251|       |
  252|      0|	blkid_probe_set_wiper(pr, 0, BCACHE_SB_OFF);
  ------------------
  |  |  178|      0|#define BCACHE_SB_OFF       0x1000U
  ------------------
  253|       |
  254|      0|	return BLKID_PROBE_OK;
  ------------------
  |  |  465|      0|#define BLKID_PROBE_OK	0
  ------------------
  255|      0|}
bcache.c:bcache_verify_checksum:
  207|    197|{
  208|    197|	const unsigned char *csummed;
  209|    197|	size_t csummed_size;
  210|    197|	uint64_t csum;
  211|       |
  212|    197|	if (le16_to_cpu(bcs->keys) > ARRAY_SIZE(bcs->d))
  ------------------
  |  |  136|    197|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
              	if (le16_to_cpu(bcs->keys) > ARRAY_SIZE(bcs->d))
  ------------------
  |  |  182|    197|#define ARRAY_SIZE(arr) countof(arr)
  ------------------
  |  Branch (212:6): [True: 159, False: 38]
  ------------------
  213|    159|		return 0;
  214|       |
  215|       |	/* up to the end of bcs->d[] */
  216|     38|	csummed_size = offsetof(__typeof__(*bcs), d) +
  217|     38|		sizeof(bcs->d[0]) * le16_to_cpu(bcs->keys);
  ------------------
  |  |  136|     38|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  218|     38|	csummed = blkid_probe_get_sb_buffer(pr, mag, csummed_size);
  219|     38|	if (!csummed)
  ------------------
  |  Branch (219:6): [True: 0, False: 38]
  ------------------
  220|      0|		return 0;
  221|     38|	csum = ul_crc64_we(csummed + BCACHE_SB_CSUMMED_START,
  ------------------
  |  |  184|     38|#define BCACHE_SB_CSUMMED_START 8U
  ------------------
  222|     38|			   csummed_size - BCACHE_SB_CSUMMED_START);
  ------------------
  |  |  184|     38|#define BCACHE_SB_CSUMMED_START 8U
  ------------------
  223|       |	return blkid_probe_verify_csum(pr, csum, le64_to_cpu(bcs->csum));
  ------------------
  |  |  138|     38|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  224|     38|}
bcache.c:probe_bcachefs:
  450|    367|{
  451|    367|	const struct bcachefs_super_block *bcs;
  452|    367|	const unsigned char *sb, *sb_end;
  453|    367|	uint64_t sb_size, blocksize, offset_sectors;
  454|    367|	uint16_t version;
  455|       |
  456|    367|	bcs = blkid_probe_get_sb(pr, mag, struct bcachefs_super_block);
  ------------------
  |  |  451|    367|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
  457|    367|	if (!bcs)
  ------------------
  |  Branch (457:6): [True: 0, False: 367]
  ------------------
  458|      0|		return errno ? -errno : BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  |  Branch (458:10): [True: 0, False: 0]
  ------------------
  459|       |
  460|    367|	offset_sectors = blkid_probe_get_idmag_off(pr, mag) / BCACHEFS_SECTOR_SIZE;
  ------------------
  |  |  186|    367|#define BCACHEFS_SECTOR_SIZE   512U
  ------------------
  461|    367|	if (le64_to_cpu(bcs->offset) != offset_sectors)
  ------------------
  |  |  138|    367|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  |  Branch (461:6): [True: 205, False: 162]
  ------------------
  462|    205|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|    205|#define BLKID_PROBE_NONE	1
  ------------------
  463|       |
  464|    162|	if (bcs->nr_devices == 0 || bcs->dev_idx >= bcs->nr_devices)
  ------------------
  |  Branch (464:6): [True: 4, False: 158]
  |  Branch (464:30): [True: 9, False: 149]
  ------------------
  465|     13|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|     13|#define BLKID_PROBE_NONE	1
  ------------------
  466|       |
  467|    149|	sb_size = BCACHEFS_SB_FIELDS_OFF + BYTES(bcs);
  ------------------
  |  |  190|    149|#define BCACHEFS_SB_FIELDS_OFF offsetof(struct bcachefs_super_block, _start)
  ------------------
              	sb_size = BCACHEFS_SB_FIELDS_OFF + BYTES(bcs);
  ------------------
  |  |  203|    149|#define BYTES(f) ((((uint64_t) le32_to_cpu((f)->u64s)) * 8))
  |  |  ------------------
  |  |  |  |  137|    149|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  ------------------
  468|       |
  469|    149|	if (bcs->layout.sb_max_size_bits > BCACHEFS_SB_MAX_SIZE_SHIFT)
  ------------------
  |  |  188|    149|#define BCACHEFS_SB_MAX_SIZE_SHIFT   0x10U
  ------------------
  |  Branch (469:6): [True: 5, False: 144]
  ------------------
  470|      5|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|      5|#define BLKID_PROBE_NONE	1
  ------------------
  471|       |
  472|    144|	if (sb_size > (BCACHEFS_SECTOR_SIZE << bcs->layout.sb_max_size_bits))
  ------------------
  |  |  186|    144|#define BCACHEFS_SECTOR_SIZE   512U
  ------------------
  |  Branch (472:6): [True: 36, False: 108]
  ------------------
  473|     36|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|     36|#define BLKID_PROBE_NONE	1
  ------------------
  474|       |
  475|    108|	sb = blkid_probe_get_sb_buffer(pr, mag, sb_size);
  476|    108|	if (!sb)
  ------------------
  |  Branch (476:6): [True: 3, False: 105]
  ------------------
  477|      3|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|      3|#define BLKID_PROBE_NONE	1
  ------------------
  478|    105|	sb_end = sb + sb_size;
  479|       |
  480|    105|	if (!bcachefs_validate_checksum(pr, bcs, sb, sb_end))
  ------------------
  |  Branch (480:6): [True: 21, False: 84]
  ------------------
  481|     21|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|     21|#define BLKID_PROBE_NONE	1
  ------------------
  482|       |
  483|     84|	blkid_probe_set_uuid(pr, bcs->user_uuid);
  484|     84|	blkid_probe_set_label(pr, bcs->label, sizeof(bcs->label));
  485|     84|	version = le16_to_cpu(bcs->version);
  ------------------
  |  |  136|     84|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  486|     84|	blkid_probe_sprintf_version(pr, "%"PRIu16".%"PRIu16,
  487|     84|				    BCH_VERSION_MAJOR(version),
  ------------------
  |  |  200|     84|#define BCH_VERSION_MAJOR(_v)           ((uint16_t) ((_v) >> 10))
  ------------------
  488|     84|				    BCH_VERSION_MINOR(version));
  ------------------
  |  |  201|     84|#define BCH_VERSION_MINOR(_v)           ((uint16_t) ((_v) & ~(~0U << 10)))
  ------------------
  489|     84|	blocksize = le16_to_cpu(bcs->block_size);
  ------------------
  |  |  136|     84|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  490|     84|	blkid_probe_set_block_size(pr, blocksize * BCACHEFS_SECTOR_SIZE);
  ------------------
  |  |  186|     84|#define BCACHEFS_SECTOR_SIZE   512U
  ------------------
  491|     84|	blkid_probe_set_fsblocksize(pr, blocksize * BCACHEFS_SECTOR_SIZE);
  ------------------
  |  |  186|     84|#define BCACHEFS_SECTOR_SIZE   512U
  ------------------
  492|     84|	blkid_probe_set_wiper(pr, 0, BCACHE_SB_OFF);
  ------------------
  |  |  178|     84|#define BCACHE_SB_OFF       0x1000U
  ------------------
  493|       |
  494|     84|	probe_bcachefs_sb_fields(pr, bcs, sb, sb_end);
  495|       |
  496|     84|	return BLKID_PROBE_OK;
  ------------------
  |  |  465|     84|#define BLKID_PROBE_OK	0
  ------------------
  497|    105|}
bcache.c:bcachefs_validate_checksum:
  423|    105|{
  424|    105|	uint8_t checksum_type = be64_to_cpu(bcs->flags[0]) >> 58;
  ------------------
  |  |  142|    105|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  425|    105|	const unsigned char *checksummed_data_start = sb + sizeof(bcs->csum);
  426|    105|	size_t checksummed_data_size = sb_end - checksummed_data_start;
  427|       |
  428|    105|	switch (checksum_type) {
  429|      3|		case BCACHEFS_SB_CSUM_TYPE_NONE:
  ------------------
  |  Branch (429:3): [True: 3, False: 102]
  ------------------
  430|      3|			return 1;
  431|      3|		case BCACHEFS_SB_CSUM_TYPE_CRC32C: {
  ------------------
  |  Branch (431:3): [True: 3, False: 102]
  ------------------
  432|      3|			uint32_t crc = crc32c(~0LL, checksummed_data_start, checksummed_data_size) ^ ~0LL;
  433|      3|			return blkid_probe_verify_csum(pr, crc, le32_to_cpu(bcs->csum.crc32c));
  ------------------
  |  |  137|      3|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  434|      0|		}
  435|      5|		case BCACHEFS_SB_CSUM_TYPE_CRC64: {
  ------------------
  |  Branch (435:3): [True: 5, False: 100]
  ------------------
  436|      5|			uint64_t crc = ul_crc64_we(checksummed_data_start, checksummed_data_size);
  437|      5|			return blkid_probe_verify_csum(pr, crc, le64_to_cpu(bcs->csum.crc64));
  ------------------
  |  |  138|      5|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  438|      0|		}
  439|     13|		case BCACHEFS_SB_CSUM_TYPE_XXHASH: {
  ------------------
  |  Branch (439:3): [True: 13, False: 92]
  ------------------
  440|     13|			XXH64_hash_t xxh64 = XXH64(checksummed_data_start, checksummed_data_size, 0);
  ------------------
  |  |  282|     13|#  define XXH64 XXH_NAME2(XXH_NAMESPACE, XXH64)
  |  |  ------------------
  |  |  |  |  269|     13|#  define XXH_NAME2(A,B) XXH_CAT(A,B)
  |  |  |  |  ------------------
  |  |  |  |  |  |  268|     13|#  define XXH_CAT(A,B) A##B
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  441|     13|			return blkid_probe_verify_csum(pr, xxh64, le64_to_cpu(bcs->csum.xxh64));
  ------------------
  |  |  138|     13|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  442|      0|		}
  443|     81|		default:
  ------------------
  |  Branch (443:3): [True: 81, False: 24]
  ------------------
  444|     81|			DBG(LOWPROBE, ul_debug("bcachefs: unknown checksum type %d, ignoring.", checksum_type));
  ------------------
  |  |  358|     81|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|     81|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|     81|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|     81|	do { \
  |  |  |  |  |  |  |  |   76|     81|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|     81|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|     81|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 81]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|     81|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 81]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|     81|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|     81|		x; \
  |  |  |  |  |  |   85|     81|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  445|     81|			return 1;
  446|    105|	}
  447|    105|}
bcache.c:probe_bcachefs_sb_fields:
  372|     84|{
  373|     84|	const unsigned char *field_addr = sb_start + BCACHEFS_SB_FIELDS_OFF;
  ------------------
  |  |  190|     84|#define BCACHEFS_SB_FIELDS_OFF offsetof(struct bcachefs_super_block, _start)
  ------------------
  374|     84|	const struct bcachefs_sb_field_disk_groups *disk_groups = NULL;
  375|     84|	uint8_t current_member_group = 0;	/* 0 means unset */
  376|       |
  377|    368|	while (1) {
  ------------------
  |  Branch (377:9): [True: 368, Folded]
  ------------------
  378|    368|		struct bcachefs_sb_field *field = (struct bcachefs_sb_field *) field_addr;
  379|    368|		uint64_t field_size;
  380|    368|		uint32_t type;
  381|       |
  382|    368|		if (!is_within_range(field, sizeof(*field), sb_end))
  ------------------
  |  Branch (382:7): [True: 1, False: 367]
  ------------------
  383|      1|			break;
  384|       |
  385|    367|		field_size = BYTES(field);
  ------------------
  |  |  203|    367|#define BYTES(f) ((((uint64_t) le32_to_cpu((f)->u64s)) * 8))
  |  |  ------------------
  |  |  |  |  137|    367|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  ------------------
  386|       |
  387|    367|		if (field_size < sizeof(*field))
  ------------------
  |  Branch (387:7): [True: 14, False: 353]
  ------------------
  388|     14|			break;
  389|       |
  390|    353|		if (!is_within_range(field, field_size, sb_end))
  ------------------
  |  Branch (390:7): [True: 64, False: 289]
  ------------------
  391|     64|			break;
  392|       |
  393|    289|		type = le32_to_cpu(field->type);
  ------------------
  |  |  137|    289|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  394|    289|		if (!type)
  ------------------
  |  Branch (394:7): [True: 5, False: 284]
  ------------------
  395|      5|			break;
  396|       |
  397|    284|		if (type == BCACHEFS_SB_FIELD_TYPE_MEMBERS_V1) {
  ------------------
  |  |  192|    284|#define BCACHEFS_SB_FIELD_TYPE_MEMBERS_V1 1
  ------------------
  |  Branch (397:7): [True: 51, False: 233]
  ------------------
  398|     51|			struct bcachefs_sb_field_members_v1 *members = (struct bcachefs_sb_field_members_v1 *) field;
  399|     51|			probe_bcachefs_sb_members(pr, bcs, field, members->members,
  400|     51|				BCACHEFS_SB_FIELD_MEMBERS_V1_BYTES, offsetof(__typeof__(*members), members),
  ------------------
  |  |  194|     51|#define BCACHEFS_SB_FIELD_MEMBERS_V1_BYTES 56
  ------------------
  401|     51|				&current_member_group);
  402|     51|		}
  403|       |
  404|    284|		if (type == BCACHEFS_SB_FIELD_TYPE_MEMBERS_V2) {
  ------------------
  |  |  196|    284|#define BCACHEFS_SB_FIELD_TYPE_MEMBERS_V2 11
  ------------------
  |  Branch (404:7): [True: 6, False: 278]
  ------------------
  405|      6|			struct bcachefs_sb_field_members_v2 *members = (struct bcachefs_sb_field_members_v2 *) field;
  406|      6|			probe_bcachefs_sb_members(pr, bcs, field, members->members,
  407|      6|				le16_to_cpu(members->member_bytes), offsetof(__typeof__(*members), members),
  ------------------
  |  |  136|      6|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  408|      6|				&current_member_group);
  409|      6|		}
  410|       |
  411|    284|		if (type == BCACHEFS_SB_FIELD_TYPE_DISK_GROUPS)
  ------------------
  |  |  198|    284|#define BCACHEFS_SB_FIELD_TYPE_DISK_GROUPS 5
  ------------------
  |  Branch (411:7): [True: 7, False: 277]
  ------------------
  412|      7|			disk_groups = (const struct bcachefs_sb_field_disk_groups *) field;
  413|       |
  414|    284|		field_addr += BYTES(field);
  ------------------
  |  |  203|    284|#define BYTES(f) ((((uint64_t) le32_to_cpu((f)->u64s)) * 8))
  |  |  ------------------
  |  |  |  |  137|    284|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  ------------------
  415|    284|	}
  416|       |
  417|     84|	if (disk_groups && current_member_group)
  ------------------
  |  Branch (417:6): [True: 4, False: 80]
  |  Branch (417:21): [True: 0, False: 4]
  ------------------
  418|      0|		probe_bcachefs_device_label(pr, &disk_groups->field, current_member_group - 1);
  419|     84|}
bcache.c:is_within_range:
  360|    721|{
  361|    721|	ptrdiff_t diff;
  362|       |
  363|    721|	if (start >= end)
  ------------------
  |  Branch (363:6): [True: 1, False: 720]
  ------------------
  364|      1|		return 0; // should not happen
  365|       |
  366|    720|	diff = (unsigned char *) end - (unsigned char *) start;
  367|    720|	return size <= (uint64_t) diff;
  368|    721|}
bcache.c:probe_bcachefs_sb_members:
  273|     57|{
  274|     57|	uint64_t sectors = 0;
  275|     57|	uint8_t i;
  276|     57|	const struct bcachefs_sb_member *current;
  277|       |
  278|     57|	if (BYTES(field) != member_array_offset + bcs->nr_devices * member_bytes)
  ------------------
  |  |  203|     57|#define BYTES(f) ((((uint64_t) le32_to_cpu((f)->u64s)) * 8))
  |  |  ------------------
  |  |  |  |  137|     57|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  ------------------
  |  Branch (278:6): [True: 57, False: 0]
  ------------------
  279|     57|		return;
  280|       |
  281|      0|	current = bcachefs_sb_member_get_unsafe(members, member_bytes, bcs->dev_idx);
  282|       |
  283|      0|	if (member_bytes < FIELD_END(struct bcachefs_sb_member, uuid))
  ------------------
  |  |  257|      0|#define FIELD_END(s, field)	offsetof(s, field) + sizeof_member(s, field)
  |  |  ------------------
  |  |  |  |  260|      0|#define sizeof_member(TYPE, MEMBER) sizeof(((TYPE *)0)->MEMBER)
  |  |  ------------------
  ------------------
  |  Branch (283:6): [True: 0, False: 0]
  ------------------
  284|      0|		return;
  285|       |
  286|      0|	blkid_probe_set_uuid_as(pr, current->uuid, "UUID_SUB");
  287|       |
  288|      0|	if (member_bytes < FIELD_END(struct bcachefs_sb_member, nbuckets) ||
  ------------------
  |  |  257|      0|#define FIELD_END(s, field)	offsetof(s, field) + sizeof_member(s, field)
  |  |  ------------------
  |  |  |  |  260|      0|#define sizeof_member(TYPE, MEMBER) sizeof(((TYPE *)0)->MEMBER)
  |  |  ------------------
  ------------------
  |  Branch (288:6): [True: 0, False: 0]
  ------------------
  289|      0|	    member_bytes < FIELD_END(struct bcachefs_sb_member, bucket_size))
  ------------------
  |  |  257|      0|#define FIELD_END(s, field)	offsetof(s, field) + sizeof_member(s, field)
  |  |  ------------------
  |  |  |  |  260|      0|#define sizeof_member(TYPE, MEMBER) sizeof(((TYPE *)0)->MEMBER)
  |  |  ------------------
  ------------------
  |  Branch (289:6): [True: 0, False: 0]
  ------------------
  290|      0|		return;
  291|       |
  292|      0|	for (i = 0; i < bcs->nr_devices; i++) {
  ------------------
  |  Branch (292:14): [True: 0, False: 0]
  ------------------
  293|      0|		const struct bcachefs_sb_member *member = bcachefs_sb_member_get_unsafe(members, member_bytes, i);
  294|      0|		sectors += le64_to_cpu(member->nbuckets) * le16_to_cpu(member->bucket_size);
  ------------------
  |  |  138|      0|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
              		sectors += le64_to_cpu(member->nbuckets) * le16_to_cpu(member->bucket_size);
  ------------------
  |  |  136|      0|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  295|      0|	}
  296|      0|	blkid_probe_set_fssize(pr, sectors * BCACHEFS_SECTOR_SIZE);
  ------------------
  |  |  186|      0|#define BCACHEFS_SECTOR_SIZE   512U
  ------------------
  297|       |
  298|      0|	if (member_bytes < FIELD_END(struct bcachefs_sb_member, flags))
  ------------------
  |  |  257|      0|#define FIELD_END(s, field)	offsetof(s, field) + sizeof_member(s, field)
  |  |  ------------------
  |  |  |  |  260|      0|#define sizeof_member(TYPE, MEMBER) sizeof(((TYPE *)0)->MEMBER)
  |  |  ------------------
  ------------------
  |  Branch (298:6): [True: 0, False: 0]
  ------------------
  299|      0|		return;
  300|       |
  301|      0|	*current_member_group = le64_to_cpu(current->flags) >> 20 & 0xFF;
  ------------------
  |  |  138|      0|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  302|      0|}

befs.c:probe_befs:
  485|  2.60k|{
  486|  2.60k|	struct befs_super_block *bs;
  487|  2.60k|	const char *version = NULL;
  488|  2.60k|	uint64_t volume_id = 0;
  489|  2.60k|	uint32_t block_size, block_shift;
  490|  2.60k|	int fs_le, ret;
  491|       |
  492|  2.60k|	bs = (struct befs_super_block *) blkid_probe_get_buffer(pr,
  493|  2.60k|					mag->sboff - B_OS_NAME_LENGTH,
  ------------------
  |  |   21|  2.60k|#define B_OS_NAME_LENGTH	0x20
  ------------------
  494|  2.60k|					sizeof(struct befs_super_block));
  495|  2.60k|	if (!bs)
  ------------------
  |  Branch (495:6): [True: 0, False: 2.60k]
  ------------------
  496|      0|		return errno ? -errno : BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  |  Branch (496:10): [True: 0, False: 0]
  ------------------
  497|       |
  498|  2.60k|	if (le32_to_cpu(bs->magic1) == SUPER_BLOCK_MAGIC1
  ------------------
  |  |  137|  2.60k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              	if (le32_to_cpu(bs->magic1) == SUPER_BLOCK_MAGIC1
  ------------------
  |  |   22|  5.20k|#define SUPER_BLOCK_MAGIC1	0x42465331	/* BFS1 */
  ------------------
  |  Branch (498:6): [True: 2.03k, False: 561]
  ------------------
  499|  2.03k|		&& le32_to_cpu(bs->magic2) == SUPER_BLOCK_MAGIC2
  ------------------
  |  |  137|  2.03k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              		&& le32_to_cpu(bs->magic2) == SUPER_BLOCK_MAGIC2
  ------------------
  |  |   23|  4.63k|#define SUPER_BLOCK_MAGIC2	0xdd121031
  ------------------
  |  Branch (499:6): [True: 1.67k, False: 368]
  ------------------
  500|  1.67k|		&& le32_to_cpu(bs->magic3) == SUPER_BLOCK_MAGIC3
  ------------------
  |  |  137|  1.67k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              		&& le32_to_cpu(bs->magic3) == SUPER_BLOCK_MAGIC3
  ------------------
  |  |   24|  4.27k|#define SUPER_BLOCK_MAGIC3	0x15b6830e
  ------------------
  |  Branch (500:6): [True: 1.60k, False: 69]
  ------------------
  501|  1.60k|		&& le32_to_cpu(bs->fs_byte_order) == SUPER_BLOCK_FS_ENDIAN) {
  ------------------
  |  |  137|  1.60k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              		&& le32_to_cpu(bs->fs_byte_order) == SUPER_BLOCK_FS_ENDIAN) {
  ------------------
  |  |   25|  1.60k|#define SUPER_BLOCK_FS_ENDIAN	0x42494745	/* BIGE */
  ------------------
  |  Branch (501:6): [True: 1.53k, False: 69]
  ------------------
  502|  1.53k|		fs_le = 1;
  503|  1.53k|		version = "little-endian";
  504|  1.53k|	} else if (be32_to_cpu(bs->magic1) == SUPER_BLOCK_MAGIC1
  ------------------
  |  |  141|  1.06k|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
              	} else if (be32_to_cpu(bs->magic1) == SUPER_BLOCK_MAGIC1
  ------------------
  |  |   22|  2.13k|#define SUPER_BLOCK_MAGIC1	0x42465331	/* BFS1 */
  ------------------
  |  Branch (504:13): [True: 561, False: 506]
  ------------------
  505|    561|		&& be32_to_cpu(bs->magic2) == SUPER_BLOCK_MAGIC2
  ------------------
  |  |  141|    561|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
              		&& be32_to_cpu(bs->magic2) == SUPER_BLOCK_MAGIC2
  ------------------
  |  |   23|  1.62k|#define SUPER_BLOCK_MAGIC2	0xdd121031
  ------------------
  |  Branch (505:6): [True: 44, False: 517]
  ------------------
  506|     44|		&& be32_to_cpu(bs->magic3) == SUPER_BLOCK_MAGIC3
  ------------------
  |  |  141|     44|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
              		&& be32_to_cpu(bs->magic3) == SUPER_BLOCK_MAGIC3
  ------------------
  |  |   24|  1.11k|#define SUPER_BLOCK_MAGIC3	0x15b6830e
  ------------------
  |  Branch (506:6): [True: 25, False: 19]
  ------------------
  507|     25|		&& be32_to_cpu(bs->fs_byte_order) == SUPER_BLOCK_FS_ENDIAN) {
  ------------------
  |  |  141|     25|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
              		&& be32_to_cpu(bs->fs_byte_order) == SUPER_BLOCK_FS_ENDIAN) {
  ------------------
  |  |   25|     25|#define SUPER_BLOCK_FS_ENDIAN	0x42494745	/* BIGE */
  ------------------
  |  Branch (507:6): [True: 15, False: 10]
  ------------------
  508|     15|		fs_le = 0;
  509|     15|		version = "big-endian";
  510|     15|	} else
  511|  1.05k|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|  1.05k|#define BLKID_PROBE_NONE	1
  ------------------
  512|       |
  513|  1.54k|	block_size = FS32_TO_CPU(bs->block_size, fs_le);
  ------------------
  |  |   36|  1.54k|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|  1.53k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 1.53k, False: 15]
  |  |  ------------------
  |  |   37|  1.54k|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|     15|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  514|  1.54k|	block_shift = FS32_TO_CPU(bs->block_shift, fs_le);
  ------------------
  |  |   36|  1.54k|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|  1.53k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 1.53k, False: 15]
  |  |  ------------------
  |  |   37|  1.54k|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|     15|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  515|       |
  516|  1.54k|	if (block_shift < 10 || block_shift > 13 ||
  ------------------
  |  Branch (516:6): [True: 8, False: 1.54k]
  |  Branch (516:26): [True: 80, False: 1.46k]
  ------------------
  517|  1.46k|	    block_size != 1U << block_shift)
  ------------------
  |  Branch (517:6): [True: 61, False: 1.39k]
  ------------------
  518|    149|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|    149|#define BLKID_PROBE_NONE	1
  ------------------
  519|       |
  520|       |	/* get_block_run() shifts uint64 left by ag_shift + block_shift,
  521|       |	 * so the combined value must stay below 64 to avoid UB */
  522|  1.39k|	if (FS32_TO_CPU(bs->ag_shift, fs_le) + block_shift >= 64)
  ------------------
  |  |   36|  1.39k|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|  1.39k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 1.39k, False: 0]
  |  |  ------------------
  |  |   37|  1.39k|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  |  Branch (522:6): [True: 47, False: 1.35k]
  ------------------
  523|     47|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|     47|#define BLKID_PROBE_NONE	1
  ------------------
  524|       |
  525|  1.35k|	ret = get_uuid(pr, bs, &volume_id, fs_le);
  526|       |
  527|  1.35k|	if (ret != 0)
  ------------------
  |  Branch (527:6): [True: 1.34k, False: 10]
  ------------------
  528|  1.34k|		return ret;
  529|       |
  530|       |	/*
  531|       |	 * all checks pass, set LABEL, VERSION and UUID
  532|       |	 */
  533|     10|	if (*bs->name != '\0')
  ------------------
  |  Branch (533:6): [True: 10, False: 0]
  ------------------
  534|     10|		blkid_probe_set_label(pr, (unsigned char *) bs->name,
  535|     10|							sizeof(bs->name));
  536|     10|	if (version)
  ------------------
  |  Branch (536:6): [True: 10, False: 0]
  ------------------
  537|     10|		blkid_probe_set_version(pr, version);
  538|       |
  539|     10|	if (volume_id)
  ------------------
  |  Branch (539:6): [True: 0, False: 10]
  ------------------
  540|      0|		blkid_probe_sprintf_uuid(pr, (unsigned char *) &volume_id,
  541|      0|					sizeof(volume_id), "%016" PRIx64,
  542|      0|					FS64_TO_CPU(volume_id, fs_le));
  ------------------
  |  |   38|      0|#define FS64_TO_CPU(value, fs_is_le) (fs_is_le ? le64_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  138|      0|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  |  |  ------------------
  |  |  |  Branch (38:39): [True: 0, False: 0]
  |  |  ------------------
  |  |   39|      0|							: be64_to_cpu(value))
  |  |  ------------------
  |  |  |  |  142|      0|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  |  |  ------------------
  ------------------
  543|       |
  544|     10|	blkid_probe_set_fsblocksize(pr, block_size);
  545|     10|	blkid_probe_set_block_size(pr, block_size);
  546|     10|	blkid_probe_set_fsendianness(pr,
  547|     10|			fs_le ? BLKID_ENDIANNESS_LITTLE : BLKID_ENDIANNESS_BIG);
  ------------------
  |  Branch (547:4): [True: 10, False: 0]
  ------------------
  548|       |
  549|     10|	return BLKID_PROBE_OK;
  ------------------
  |  |  465|     10|#define BLKID_PROBE_OK	0
  ------------------
  550|  1.35k|}
befs.c:get_uuid:
  390|  1.35k|{
  391|  1.35k|	struct befs_inode *bi;
  392|  1.35k|	struct small_data *sd;
  393|  1.35k|	uint64_t bi_size, offset, sd_size, sd_total_size;
  394|       |
  395|  1.35k|	bi = (struct befs_inode *) get_block_run(pr, bs, &bs->root_dir, fs_le);
  396|  1.35k|	if (!bi)
  ------------------
  |  Branch (396:6): [True: 13, False: 1.33k]
  ------------------
  397|     13|		return errno ? -errno : BLKID_PROBE_NONE;
  ------------------
  |  |  471|     13|#define BLKID_PROBE_NONE	1
  ------------------
  |  Branch (397:10): [True: 0, False: 13]
  ------------------
  398|       |
  399|  1.33k|	if (FS32_TO_CPU(bi->magic1, fs_le) != INODE_MAGIC1)
  ------------------
  |  |   36|  1.33k|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|  1.33k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 1.33k, False: 0]
  |  |  ------------------
  |  |   37|  1.33k|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
              	if (FS32_TO_CPU(bi->magic1, fs_le) != INODE_MAGIC1)
  ------------------
  |  |   26|  1.33k|#define INODE_MAGIC1		0x3bbe0ad9
  ------------------
  |  Branch (399:6): [True: 55, False: 1.28k]
  ------------------
  400|     55|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|     55|#define BLKID_PROBE_NONE	1
  ------------------
  401|       |
  402|  1.28k|	bi_size = (uint64_t)FS16_TO_CPU(bs->root_dir.len, fs_le) <<
  ------------------
  |  |   34|  1.28k|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|  1.28k|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 1.28k, False: 0]
  |  |  ------------------
  |  |   35|  1.28k|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  403|  1.28k|		FS32_TO_CPU(bs->block_shift, fs_le);
  ------------------
  |  |   36|  1.28k|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|  1.28k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 1.28k, False: 0]
  |  |  ------------------
  |  |   37|  1.28k|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  404|  1.28k|	sd_total_size = min(bi_size - sizeof(struct befs_inode),
  ------------------
  |  |  206|  1.28k|# define min(x, y) __extension__ ({		\
  |  |  207|  1.28k|	__typeof__(x) _min1 = (x);		\
  |  |  208|  2.56k|	__typeof__(y) _min2 = (y);		\
  |  |  ------------------
  |  |  |  Branch (208:25): [True: 1.28k, False: 0]
  |  |  ------------------
  |  |  209|  1.28k|	(void) (&_min1 == &_min2);		\
  |  |  210|  1.28k|	_min1 < _min2 ? _min1 : _min2; })
  |  |  ------------------
  |  |  |  Branch (210:2): [True: 1.23k, False: 52]
  |  |  ------------------
  ------------------
  405|  1.28k|			    (uint64_t)FS32_TO_CPU(bi->inode_size, fs_le));
  406|       |
  407|  1.28k|	offset = 0;
  408|       |
  409|  4.92k|	while (offset + sizeof(struct small_data) <= sd_total_size) {
  ------------------
  |  Branch (409:9): [True: 4.90k, False: 20]
  ------------------
  410|  4.90k|		sd = (struct small_data *) ((uint8_t *)bi->small_data + offset);
  411|  4.90k|		sd_size = sizeof(struct small_data)
  412|  4.90k|			+ FS16_TO_CPU(sd->name_size, fs_le) + 3
  ------------------
  |  |   34|  4.90k|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|  4.90k|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 4.90k, False: 0]
  |  |  ------------------
  |  |   35|  4.90k|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  413|  4.90k|			+ FS16_TO_CPU(sd->data_size, fs_le) + 1;
  ------------------
  |  |   34|  4.90k|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|  4.90k|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 4.90k, False: 0]
  |  |  ------------------
  |  |   35|  4.90k|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  414|       |
  415|  4.90k|		if (offset + sd_size > sd_total_size)
  ------------------
  |  Branch (415:7): [True: 416, False: 4.48k]
  ------------------
  416|    416|			break;
  417|       |
  418|  4.48k|		if (FS32_TO_CPU(sd->type, fs_le) == B_UINT64_TYPE
  ------------------
  |  |   36|  4.48k|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|  4.48k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 4.48k, False: 0]
  |  |  ------------------
  |  |   37|  4.48k|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
              		if (FS32_TO_CPU(sd->type, fs_le) == B_UINT64_TYPE
  ------------------
  |  |   30|  8.97k|#define B_UINT64_TYPE		0x554c4c47	/* ULLG */
  ------------------
  |  Branch (418:7): [True: 5, False: 4.48k]
  ------------------
  419|      5|			&& FS16_TO_CPU(sd->name_size, fs_le) == strlen(KEY_NAME)
  ------------------
  |  |   34|      5|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|      5|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 5, False: 0]
  |  |  ------------------
  |  |   35|      5|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
              			&& FS16_TO_CPU(sd->name_size, fs_le) == strlen(KEY_NAME)
  ------------------
  |  |   31|      5|#define KEY_NAME		"be:volume_id"
  ------------------
  |  Branch (419:7): [True: 0, False: 5]
  ------------------
  420|      0|			&& FS16_TO_CPU(sd->data_size, fs_le) == KEY_SIZE
  ------------------
  |  |   34|      0|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|      0|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 0, False: 0]
  |  |  ------------------
  |  |   35|      0|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
              			&& FS16_TO_CPU(sd->data_size, fs_le) == KEY_SIZE
  ------------------
  |  |   32|  4.48k|#define KEY_SIZE		8
  ------------------
  |  Branch (420:7): [True: 0, False: 0]
  ------------------
  421|      0|			&& strcmp(sd->name, KEY_NAME) == 0) {
  ------------------
  |  |   31|      0|#define KEY_NAME		"be:volume_id"
  ------------------
  |  Branch (421:7): [True: 0, False: 0]
  ------------------
  422|       |
  423|      0|			memcpy(uuid,
  424|      0|			       sd->name + FS16_TO_CPU(sd->name_size, fs_le) + 3,
  ------------------
  |  |   34|      0|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|      0|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 0, False: 0]
  |  |  ------------------
  |  |   35|      0|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  425|      0|			       sizeof(uint64_t));
  426|       |
  427|      0|			break;
  428|      0|		}
  429|       |
  430|  4.48k|		if (FS32_TO_CPU(sd->type, fs_le) == 0
  ------------------
  |  |   36|  4.48k|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|  4.48k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 4.48k, False: 0]
  |  |  ------------------
  |  |   37|  4.48k|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  |  Branch (430:7): [True: 1.65k, False: 2.83k]
  ------------------
  431|  1.65k|				&& FS16_TO_CPU(sd->name_size, fs_le) == 0
  ------------------
  |  |   34|  1.65k|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|  1.65k|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 1.65k, False: 0]
  |  |  ------------------
  |  |   35|  1.65k|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  |  Branch (431:8): [True: 1.43k, False: 213]
  ------------------
  432|  1.43k|				&& FS16_TO_CPU(sd->data_size, fs_le) == 0)
  ------------------
  |  |   34|  1.43k|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|  1.43k|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 1.43k, False: 0]
  |  |  ------------------
  |  |   35|  1.43k|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  |  Branch (432:8): [True: 848, False: 591]
  ------------------
  433|    848|			break;
  434|       |
  435|  3.63k|		offset += sd_size;
  436|  3.63k|	}
  437|       |
  438|  1.28k|	if (*uuid == 0
  ------------------
  |  Branch (438:6): [True: 1.28k, False: 0]
  ------------------
  439|  1.28k|		&& (FS32_TO_CPU(bi->attributes.allocation_group, fs_le) != 0
  ------------------
  |  |   36|  1.28k|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|  1.28k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 1.28k, False: 0]
  |  |  ------------------
  |  |   37|  1.28k|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  |  Branch (439:7): [True: 1.22k, False: 60]
  ------------------
  440|     60|			|| FS16_TO_CPU(bi->attributes.start, fs_le) != 0
  ------------------
  |  |   34|     60|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|     60|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 60, False: 0]
  |  |  ------------------
  |  |   35|     60|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  |  Branch (440:7): [True: 8, False: 52]
  ------------------
  441|  1.28k|			|| FS16_TO_CPU(bi->attributes.len, fs_le) != 0)) {
  ------------------
  |  |   34|     52|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|     52|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 52, False: 0]
  |  |  ------------------
  |  |   35|     52|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  |  Branch (441:7): [True: 51, False: 1]
  ------------------
  442|  1.28k|		int64_t value;
  443|       |
  444|  1.28k|		bi = (struct befs_inode *) get_block_run(pr, bs,
  445|  1.28k|							&bi->attributes, fs_le);
  446|  1.28k|		if (!bi)
  ------------------
  |  Branch (446:7): [True: 32, False: 1.25k]
  ------------------
  447|     32|			return errno ? -errno : BLKID_PROBE_NONE;
  ------------------
  |  |  471|     32|#define BLKID_PROBE_NONE	1
  ------------------
  |  Branch (447:11): [True: 0, False: 32]
  ------------------
  448|       |
  449|  1.25k|		if (FS32_TO_CPU(bi->magic1, fs_le) != INODE_MAGIC1)
  ------------------
  |  |   36|  1.25k|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|  1.25k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 1.25k, False: 0]
  |  |  ------------------
  |  |   37|  1.25k|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
              		if (FS32_TO_CPU(bi->magic1, fs_le) != INODE_MAGIC1)
  ------------------
  |  |   26|  1.25k|#define INODE_MAGIC1		0x3bbe0ad9
  ------------------
  |  Branch (449:7): [True: 42, False: 1.20k]
  ------------------
  450|     42|			return BLKID_PROBE_NONE;
  ------------------
  |  |  471|     42|#define BLKID_PROBE_NONE	1
  ------------------
  451|       |
  452|  1.20k|		value = get_key_value(pr, bs, bi, KEY_NAME, fs_le);
  ------------------
  |  |   31|  1.20k|#define KEY_NAME		"be:volume_id"
  ------------------
  453|  1.20k|		if (value < 0)
  ------------------
  |  Branch (453:7): [True: 1.20k, False: 9]
  ------------------
  454|  1.20k|			return value == -ENOENT ? BLKID_PROBE_NONE : value;
  ------------------
  |  |  471|  1.20k|#define BLKID_PROBE_NONE	1
  ------------------
  |  Branch (454:11): [True: 1.20k, False: 0]
  ------------------
  455|       |
  456|      9|		if (value > 0) {
  ------------------
  |  Branch (456:7): [True: 0, False: 9]
  ------------------
  457|      0|			bi = (struct befs_inode *) blkid_probe_get_buffer(pr,
  458|      0|				value << FS32_TO_CPU(bs->block_shift, fs_le),
  ------------------
  |  |   36|      0|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|      0|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 0, False: 0]
  |  |  ------------------
  |  |   37|      0|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  459|      0|				FS32_TO_CPU(bs->block_size, fs_le));
  ------------------
  |  |   36|      0|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|      0|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 0, False: 0]
  |  |  ------------------
  |  |   37|      0|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  460|      0|			if (!bi)
  ------------------
  |  Branch (460:8): [True: 0, False: 0]
  ------------------
  461|      0|				return errno ? -errno : BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  |  Branch (461:12): [True: 0, False: 0]
  ------------------
  462|       |
  463|      0|			if (FS32_TO_CPU(bi->magic1, fs_le) != INODE_MAGIC1)
  ------------------
  |  |   36|      0|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|      0|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 0, False: 0]
  |  |  ------------------
  |  |   37|      0|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
              			if (FS32_TO_CPU(bi->magic1, fs_le) != INODE_MAGIC1)
  ------------------
  |  |   26|      0|#define INODE_MAGIC1		0x3bbe0ad9
  ------------------
  |  Branch (463:8): [True: 0, False: 0]
  ------------------
  464|      0|				return 1;
  465|       |
  466|      0|			if (FS32_TO_CPU(bi->type, fs_le) == B_UINT64_TYPE
  ------------------
  |  |   36|      0|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|      0|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 0, False: 0]
  |  |  ------------------
  |  |   37|      0|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
              			if (FS32_TO_CPU(bi->type, fs_le) == B_UINT64_TYPE
  ------------------
  |  |   30|      0|#define B_UINT64_TYPE		0x554c4c47	/* ULLG */
  ------------------
  |  Branch (466:8): [True: 0, False: 0]
  ------------------
  467|      0|				&& FS64_TO_CPU(bi->data.size, fs_le) == KEY_SIZE
  ------------------
  |  |   38|      0|#define FS64_TO_CPU(value, fs_is_le) (fs_is_le ? le64_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  138|      0|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  |  |  ------------------
  |  |  |  Branch (38:39): [True: 0, False: 0]
  |  |  ------------------
  |  |   39|      0|							: be64_to_cpu(value))
  |  |  ------------------
  |  |  |  |  142|      0|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  |  |  ------------------
  ------------------
              				&& FS64_TO_CPU(bi->data.size, fs_le) == KEY_SIZE
  ------------------
  |  |   32|      0|#define KEY_SIZE		8
  ------------------
  |  Branch (467:8): [True: 0, False: 0]
  ------------------
  468|      0|				&& FS16_TO_CPU(bi->data.direct[0].len, fs_le)
  ------------------
  |  |   34|      0|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|      0|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 0, False: 0]
  |  |  ------------------
  |  |   35|      0|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  |  Branch (468:8): [True: 0, False: 0]
  ------------------
  469|      0|									== 1) {
  470|      0|				uint64_t *attr_data;
  471|       |
  472|      0|				attr_data = (uint64_t *) get_block_run(pr, bs,
  473|      0|						&bi->data.direct[0], fs_le);
  474|      0|				if (!attr_data)
  ------------------
  |  Branch (474:9): [True: 0, False: 0]
  ------------------
  475|      0|					return errno ? -errno : BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  |  Branch (475:13): [True: 0, False: 0]
  ------------------
  476|       |
  477|      0|				*uuid = *attr_data;
  478|      0|			}
  479|      0|		}
  480|      9|	}
  481|     10|	return 0;
  482|  1.28k|}
befs.c:get_block_run:
  127|  6.36k|{
  128|  6.36k|	return blkid_probe_get_buffer(pr,
  129|  6.36k|			((uint64_t) FS32_TO_CPU(br->allocation_group, fs_le)
  ------------------
  |  |   36|  6.36k|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|  6.36k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 6.36k, False: 0]
  |  |  ------------------
  |  |   37|  6.36k|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  130|  6.36k|					<< FS32_TO_CPU(bs->ag_shift, fs_le)
  ------------------
  |  |   36|  6.36k|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|  6.36k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 6.36k, False: 0]
  |  |  ------------------
  |  |   37|  6.36k|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  131|  6.36k|					<< FS32_TO_CPU(bs->block_shift, fs_le))
  ------------------
  |  |   36|  6.36k|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|  6.36k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 6.36k, False: 0]
  |  |  ------------------
  |  |   37|  6.36k|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  132|  6.36k|				+ ((uint64_t) FS16_TO_CPU(br->start, fs_le)
  ------------------
  |  |   34|  6.36k|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|  6.36k|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 6.36k, False: 0]
  |  |  ------------------
  |  |   35|  6.36k|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  133|  6.36k|					<< FS32_TO_CPU(bs->block_shift, fs_le)),
  ------------------
  |  |   36|  6.36k|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|  6.36k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 6.36k, False: 0]
  |  |  ------------------
  |  |   37|  6.36k|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  134|  6.36k|			(uint64_t) FS16_TO_CPU(br->len, fs_le)
  ------------------
  |  |   34|  6.36k|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|  6.36k|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 6.36k, False: 0]
  |  |  ------------------
  |  |   35|  6.36k|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  135|       |					<< FS32_TO_CPU(bs->block_shift, fs_le));
  ------------------
  |  |   36|  6.36k|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|  6.36k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 6.36k, False: 0]
  |  |  ------------------
  |  |   37|  6.36k|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  136|  6.36k|}
befs.c:get_key_value:
  280|  1.20k|{
  281|  1.20k|	struct bplustree_header *bh;
  282|  1.20k|	struct bplustree_node *bn;
  283|  1.20k|	uint16_t *keylengths;
  284|  1.20k|	int64_t *values;
  285|  1.20k|	int64_t node_pointer;
  286|  1.20k|	uint32_t bn_size, all_key_count, all_key_length;
  287|  1.20k|	uint32_t keylengths_offset, values_offset;
  288|  1.20k|	int32_t first, last, mid, cmp;
  289|  1.20k|	int loop_detect = 0;
  290|       |
  291|  1.20k|	errno = 0;
  292|  1.20k|	bh = (struct bplustree_header *) get_tree_node(pr, bs, &bi->data, 0,
  293|  1.20k|					sizeof(struct bplustree_header), fs_le);
  294|  1.20k|	if (!bh)
  ------------------
  |  Branch (294:6): [True: 203, False: 1.00k]
  ------------------
  295|    203|		return errno ? -errno : -ENOENT;
  ------------------
  |  Branch (295:10): [True: 0, False: 203]
  ------------------
  296|       |
  297|  1.00k|	if ((int32_t) FS32_TO_CPU(bh->magic, fs_le) != BPLUSTREE_MAGIC)
  ------------------
  |  |   36|  1.00k|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|  1.00k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 1.00k, False: 0]
  |  |  ------------------
  |  |   37|  1.00k|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
              	if ((int32_t) FS32_TO_CPU(bh->magic, fs_le) != BPLUSTREE_MAGIC)
  ------------------
  |  |   27|  1.00k|#define BPLUSTREE_MAGIC		0x69f6c2e8
  ------------------
  |  Branch (297:6): [True: 41, False: 965]
  ------------------
  298|     41|		return -ENOENT;
  299|       |
  300|    965|	node_pointer = FS64_TO_CPU(bh->root_node_pointer, fs_le);
  ------------------
  |  |   38|    965|#define FS64_TO_CPU(value, fs_is_le) (fs_is_le ? le64_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  138|    965|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  |  |  ------------------
  |  |  |  Branch (38:39): [True: 965, False: 0]
  |  |  ------------------
  |  |   39|    965|							: be64_to_cpu(value))
  |  |  ------------------
  |  |  |  |  142|      0|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  |  |  ------------------
  ------------------
  301|    965|	bn_size = FS32_TO_CPU(bh->node_size, fs_le);
  ------------------
  |  |   36|    965|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|    965|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 965, False: 0]
  |  |  ------------------
  |  |   37|    965|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  302|       |
  303|    965|	if (bn_size < sizeof(struct bplustree_node))
  ------------------
  |  Branch (303:6): [True: 4, False: 961]
  ------------------
  304|      4|		return -ENOENT; /* Corrupt? */
  305|       |
  306|  2.94k|	do {
  307|  2.94k|		errno = 0;
  308|       |
  309|  2.94k|		bn = (struct bplustree_node *) get_tree_node(pr, bs, &bi->data,
  310|  2.94k|			node_pointer, bn_size, fs_le);
  311|  2.94k|		if (!bn)
  ------------------
  |  Branch (311:7): [True: 761, False: 2.18k]
  ------------------
  312|    761|			return errno ? -errno : -ENOENT;
  ------------------
  |  Branch (312:11): [True: 0, False: 761]
  ------------------
  313|       |
  314|  2.18k|		all_key_count = FS16_TO_CPU(bn->all_key_count, fs_le);
  ------------------
  |  |   34|  2.18k|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|  2.18k|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 2.18k, False: 0]
  |  |  ------------------
  |  |   35|  2.18k|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  315|  2.18k|		all_key_length = FS16_TO_CPU(bn->all_key_length, fs_le);
  ------------------
  |  |   34|  2.18k|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|  2.18k|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 2.18k, False: 0]
  |  |  ------------------
  |  |   35|  2.18k|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  316|       |
  317|  2.18k|		if (all_key_count == 0)
  ------------------
  |  Branch (317:7): [True: 53, False: 2.13k]
  ------------------
  318|     53|			return -ENOENT; /* Corrupt? */
  319|       |
  320|  2.13k|		keylengths_offset =
  321|  2.13k|			(sizeof(struct bplustree_node) + all_key_length
  322|  2.13k|			 + sizeof(int64_t) - 1) & ~(sizeof(int64_t) - 1);
  323|  2.13k|		values_offset = keylengths_offset +
  324|  2.13k|			all_key_count * sizeof(uint16_t);
  325|       |
  326|  2.13k|		if (values_offset + all_key_count * sizeof(uint64_t) > bn_size)
  ------------------
  |  Branch (326:7): [True: 33, False: 2.09k]
  ------------------
  327|     33|			return -ENOENT; /* Corrupt? */
  328|       |
  329|  2.09k|		keylengths = (uint16_t *) ((uint8_t *) bn + keylengths_offset);
  330|  2.09k|		values = (int64_t *) ((uint8_t *) bn + values_offset);
  331|       |
  332|  2.09k|		first = 0;
  333|  2.09k|		mid = 0;
  334|  2.09k|		last = all_key_count - 1;
  335|       |
  336|  2.09k|		cmp = compare_keys(bn->name, keylengths, last, key,
  337|  2.09k|				   strlen(key), all_key_length, fs_le);
  338|  2.09k|		if (cmp == BAD_KEYS)
  ------------------
  |  |  248|  2.09k|#define BAD_KEYS -2
  ------------------
  |  Branch (338:7): [True: 28, False: 2.06k]
  ------------------
  339|     28|			return -ENOENT;
  340|       |
  341|  2.06k|		if (cmp == 0) {
  ------------------
  |  Branch (341:7): [True: 6, False: 2.06k]
  ------------------
  342|      6|			if ((int64_t) FS64_TO_CPU(bn->overflow_link, fs_le)
  ------------------
  |  |   38|      6|#define FS64_TO_CPU(value, fs_is_le) (fs_is_le ? le64_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  138|      6|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  |  |  ------------------
  |  |  |  Branch (38:39): [True: 6, False: 0]
  |  |  ------------------
  |  |   39|      6|							: be64_to_cpu(value))
  |  |  ------------------
  |  |  |  |  142|      0|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  |  |  ------------------
  ------------------
  |  Branch (342:8): [True: 0, False: 6]
  ------------------
  343|      6|							== BPLUSTREE_NULL)
  ------------------
  |  |   28|      6|#define BPLUSTREE_NULL		-1LL
  ------------------
  344|      0|				return FS64_TO_CPU(values[last], fs_le);
  ------------------
  |  |   38|      0|#define FS64_TO_CPU(value, fs_is_le) (fs_is_le ? le64_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  138|      0|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  |  |  ------------------
  |  |  |  Branch (38:39): [True: 0, False: 0]
  |  |  ------------------
  |  |   39|      0|							: be64_to_cpu(value))
  |  |  ------------------
  |  |  |  |  142|      0|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  |  |  ------------------
  ------------------
  345|       |
  346|      6|			node_pointer = FS64_TO_CPU(values[last], fs_le);
  ------------------
  |  |   38|      6|#define FS64_TO_CPU(value, fs_is_le) (fs_is_le ? le64_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  138|      6|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  |  |  ------------------
  |  |  |  Branch (38:39): [True: 6, False: 0]
  |  |  ------------------
  |  |   39|      6|							: be64_to_cpu(value))
  |  |  ------------------
  |  |  |  |  142|      0|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  |  |  ------------------
  ------------------
  347|  2.06k|		} else if (cmp < 0)
  ------------------
  |  Branch (347:14): [True: 1.50k, False: 554]
  ------------------
  348|  1.50k|			node_pointer = FS64_TO_CPU(bn->overflow_link, fs_le);
  ------------------
  |  |   38|  1.50k|#define FS64_TO_CPU(value, fs_is_le) (fs_is_le ? le64_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  138|  1.50k|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  |  |  ------------------
  |  |  |  Branch (38:39): [True: 1.50k, False: 0]
  |  |  ------------------
  |  |   39|  1.50k|							: be64_to_cpu(value))
  |  |  ------------------
  |  |  |  |  142|      0|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  |  |  ------------------
  ------------------
  349|    554|		else {
  350|  4.62k|			while (first <= last) {
  ------------------
  |  Branch (350:11): [True: 4.20k, False: 424]
  ------------------
  351|  4.20k|				mid = (first + last) / 2;
  352|       |
  353|  4.20k|				cmp = compare_keys(bn->name, keylengths, mid,
  354|  4.20k|						   key, strlen(key),
  355|  4.20k|						   all_key_length, fs_le);
  356|  4.20k|				if (cmp == BAD_KEYS)
  ------------------
  |  |  248|  4.20k|#define BAD_KEYS -2
  ------------------
  |  Branch (356:9): [True: 77, False: 4.12k]
  ------------------
  357|     77|					return -ENOENT;
  358|       |
  359|  4.12k|				if (cmp == 0) {
  ------------------
  |  Branch (359:9): [True: 53, False: 4.07k]
  ------------------
  360|     53|					if ((int64_t) FS64_TO_CPU(bn->overflow_link,
  ------------------
  |  |   38|     53|#define FS64_TO_CPU(value, fs_is_le) (fs_is_le ? le64_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  138|     53|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  |  |  ------------------
  |  |  |  Branch (38:39): [True: 53, False: 0]
  |  |  ------------------
  |  |   39|     53|							: be64_to_cpu(value))
  |  |  ------------------
  |  |  |  |  142|      0|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  |  |  ------------------
  ------------------
  |  Branch (360:10): [True: 0, False: 53]
  ------------------
  361|     53|						fs_le) == BPLUSTREE_NULL)
  ------------------
  |  |   28|     53|#define BPLUSTREE_NULL		-1LL
  ------------------
  362|      0|						return FS64_TO_CPU(values[mid],
  ------------------
  |  |   38|      0|#define FS64_TO_CPU(value, fs_is_le) (fs_is_le ? le64_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  138|      0|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  |  |  ------------------
  |  |  |  Branch (38:39): [True: 0, False: 0]
  |  |  ------------------
  |  |   39|      0|							: be64_to_cpu(value))
  |  |  ------------------
  |  |  |  |  142|      0|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  |  |  ------------------
  ------------------
  363|     53|									fs_le);
  364|     53|					break;
  365|     53|				}
  366|       |
  367|  4.07k|				if (cmp < 0)
  ------------------
  |  Branch (367:9): [True: 3.22k, False: 846]
  ------------------
  368|  3.22k|					first = mid + 1;
  369|    846|				else
  370|    846|					last = mid - 1;
  371|  4.07k|			}
  372|    477|			if (cmp < 0) {
  ------------------
  |  Branch (372:8): [True: 258, False: 219]
  ------------------
  373|    258|				if (mid + 1U < all_key_count)
  ------------------
  |  Branch (373:9): [True: 258, False: 0]
  ------------------
  374|    258|					node_pointer = FS64_TO_CPU(values[mid + 1],
  ------------------
  |  |   38|    258|#define FS64_TO_CPU(value, fs_is_le) (fs_is_le ? le64_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  138|    258|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  |  |  ------------------
  |  |  |  Branch (38:39): [True: 258, False: 0]
  |  |  ------------------
  |  |   39|    258|							: be64_to_cpu(value))
  |  |  ------------------
  |  |  |  |  142|      0|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  |  |  ------------------
  ------------------
  375|    258|									fs_le);
  376|      0|				else
  377|      0|					node_pointer = FS64_TO_CPU(bn->overflow_link,
  ------------------
  |  |   38|      0|#define FS64_TO_CPU(value, fs_is_le) (fs_is_le ? le64_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  138|      0|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  |  |  ------------------
  |  |  |  Branch (38:39): [True: 0, False: 0]
  |  |  ------------------
  |  |   39|      0|							: be64_to_cpu(value))
  |  |  ------------------
  |  |  |  |  142|      0|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  |  |  ------------------
  ------------------
  378|    258|									fs_le);
  379|    258|			} else
  380|    219|				node_pointer = FS64_TO_CPU(values[mid], fs_le);
  ------------------
  |  |   38|    219|#define FS64_TO_CPU(value, fs_is_le) (fs_is_le ? le64_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  138|    219|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  |  |  ------------------
  |  |  |  Branch (38:39): [True: 219, False: 0]
  |  |  ------------------
  |  |   39|    219|							: be64_to_cpu(value))
  |  |  ------------------
  |  |  |  |  142|      0|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  |  |  ------------------
  ------------------
  381|    477|		}
  382|  2.06k|	} while (++loop_detect < 100 &&
  ------------------
  |  Branch (382:11): [True: 1.98k, False: 9]
  ------------------
  383|  1.98k|		(int64_t) FS64_TO_CPU(bn->overflow_link, fs_le)
  ------------------
  |  |   38|  1.98k|#define FS64_TO_CPU(value, fs_is_le) (fs_is_le ? le64_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  138|  1.98k|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  |  |  ------------------
  |  |  |  Branch (38:39): [True: 1.98k, False: 0]
  |  |  ------------------
  |  |   39|  1.98k|							: be64_to_cpu(value))
  |  |  ------------------
  |  |  |  |  142|      0|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  |  |  ------------------
  ------------------
  |  Branch (383:3): [True: 1.98k, False: 0]
  ------------------
  384|  1.98k|						!= BPLUSTREE_NULL);
  ------------------
  |  |   28|  1.98k|#define BPLUSTREE_NULL		-1LL
  ------------------
  385|      9|	return 0;
  386|    961|}
befs.c:get_tree_node:
  160|  4.15k|{
  161|  4.15k|	if (start < (int64_t) FS64_TO_CPU(ds->max_direct_range, fs_le)) {
  ------------------
  |  |   38|  4.15k|#define FS64_TO_CPU(value, fs_is_le) (fs_is_le ? le64_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  138|  4.15k|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  |  |  ------------------
  |  |  |  Branch (38:39): [True: 4.15k, False: 0]
  |  |  ------------------
  |  |   39|  4.15k|							: be64_to_cpu(value))
  |  |  ------------------
  |  |  |  |  142|      0|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  |  |  ------------------
  ------------------
  |  Branch (161:6): [True: 210, False: 3.94k]
  ------------------
  162|    210|		int64_t br_len;
  163|    210|		size_t i;
  164|       |
  165|    210|		for (i = 0; i < NUM_DIRECT_BLOCKS; i++) {
  ------------------
  |  |   29|    210|#define NUM_DIRECT_BLOCKS	12
  ------------------
  |  Branch (165:15): [True: 210, False: 0]
  ------------------
  166|    210|			br_len = (int64_t) FS16_TO_CPU(ds->direct[i].len, fs_le)
  ------------------
  |  |   34|    210|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|    210|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 210, False: 0]
  |  |  ------------------
  |  |   35|    210|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  167|    210|					<< FS32_TO_CPU(bs->block_shift, fs_le);
  ------------------
  |  |   36|    210|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|    210|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 210, False: 0]
  |  |  ------------------
  |  |   37|    210|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  168|    210|			if (start < br_len)
  ------------------
  |  Branch (168:8): [True: 210, False: 0]
  ------------------
  169|    210|				return get_custom_block_run(pr, bs,
  170|    210|							&ds->direct[i],
  171|    210|							start, length, fs_le);
  172|      0|			start -= br_len;
  173|      0|			if (start < 0)
  ------------------
  |  Branch (173:8): [True: 0, False: 0]
  ------------------
  174|      0|				return NULL; /* Corrupt? */
  175|      0|		}
  176|  3.94k|	} else if (start < (int64_t) FS64_TO_CPU(ds->max_indirect_range, fs_le)) {
  ------------------
  |  |   38|  3.94k|#define FS64_TO_CPU(value, fs_is_le) (fs_is_le ? le64_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  138|  3.94k|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  |  |  ------------------
  |  |  |  Branch (38:39): [True: 3.94k, False: 0]
  |  |  ------------------
  |  |   39|  3.94k|							: be64_to_cpu(value))
  |  |  ------------------
  |  |  |  |  142|      0|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  |  |  ------------------
  ------------------
  |  Branch (176:13): [True: 3.53k, False: 404]
  ------------------
  177|  3.53k|		struct block_run *br;
  178|  3.53k|		int64_t max_br, br_len, i;
  179|       |
  180|  3.53k|		start -= FS64_TO_CPU(ds->max_direct_range, fs_le);
  ------------------
  |  |   38|  3.53k|#define FS64_TO_CPU(value, fs_is_le) (fs_is_le ? le64_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  138|  3.53k|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  |  |  ------------------
  |  |  |  Branch (38:39): [True: 3.53k, False: 0]
  |  |  ------------------
  |  |   39|  3.53k|							: be64_to_cpu(value))
  |  |  ------------------
  |  |  |  |  142|      0|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  |  |  ------------------
  ------------------
  181|  3.53k|		if (start < 0)
  ------------------
  |  Branch (181:7): [True: 0, False: 3.53k]
  ------------------
  182|      0|			return NULL; /* Corrupt? */
  183|       |
  184|  3.53k|		max_br = ((int64_t) FS16_TO_CPU(ds->indirect.len, fs_le)
  ------------------
  |  |   34|  3.53k|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|  3.53k|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 3.53k, False: 0]
  |  |  ------------------
  |  |   35|  3.53k|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  185|  3.53k|					<< FS32_TO_CPU(bs->block_shift, fs_le))
  ------------------
  |  |   36|  3.53k|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|  3.53k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 3.53k, False: 0]
  |  |  ------------------
  |  |   37|  3.53k|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  186|  3.53k|				/ sizeof(struct block_run);
  187|       |
  188|  3.53k|		br = (struct block_run *) get_block_run(pr, bs, &ds->indirect,
  189|  3.53k|									fs_le);
  190|  3.53k|		if (!br)
  ------------------
  |  Branch (190:7): [True: 15, False: 3.52k]
  ------------------
  191|     15|			return NULL;
  192|       |
  193|  35.8M|		for (i = 0; i < max_br; i++) {
  ------------------
  |  Branch (193:15): [True: 35.8M, False: 135]
  ------------------
  194|  35.8M|			br_len = (int64_t) FS16_TO_CPU(br[i].len, fs_le)
  ------------------
  |  |   34|  35.8M|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|  35.8M|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 35.8M, False: 0]
  |  |  ------------------
  |  |   35|  35.8M|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  195|  35.8M|					<< FS32_TO_CPU(bs->block_shift, fs_le);
  ------------------
  |  |   36|  35.8M|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|  35.8M|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 35.8M, False: 0]
  |  |  ------------------
  |  |   37|  35.8M|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  196|  35.8M|			if (start < br_len)
  ------------------
  |  Branch (196:8): [True: 3.38k, False: 35.8M]
  ------------------
  197|  3.38k|				return get_custom_block_run(pr, bs, &br[i],
  198|  3.38k|							start, length, fs_le);
  199|  35.8M|			start -= br_len;
  200|  35.8M|		}
  201|  3.52k|	} else if (start < (int64_t) FS64_TO_CPU(ds->max_double_indirect_range, fs_le)) {
  ------------------
  |  |   38|    404|#define FS64_TO_CPU(value, fs_is_le) (fs_is_le ? le64_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  138|    404|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  |  |  ------------------
  |  |  |  Branch (38:39): [True: 404, False: 0]
  |  |  ------------------
  |  |   39|    404|							: be64_to_cpu(value))
  |  |  ------------------
  |  |  |  |  142|      0|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  |  |  ------------------
  ------------------
  |  Branch (201:13): [True: 300, False: 104]
  ------------------
  202|    300|		struct block_run *br;
  203|    300|		int64_t max_br, di_br_size, br_per_di_br, di_index, i_index;
  204|       |
  205|    300|		start -= (int64_t) FS64_TO_CPU(ds->max_indirect_range, fs_le);
  ------------------
  |  |   38|    300|#define FS64_TO_CPU(value, fs_is_le) (fs_is_le ? le64_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  138|    300|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  |  |  ------------------
  |  |  |  Branch (38:39): [True: 300, False: 0]
  |  |  ------------------
  |  |   39|    300|							: be64_to_cpu(value))
  |  |  ------------------
  |  |  |  |  142|      0|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  |  |  ------------------
  ------------------
  206|    300|		if (start < 0)
  ------------------
  |  Branch (206:7): [True: 3, False: 297]
  ------------------
  207|      3|			return NULL; /* Corrupt? */
  208|       |
  209|    297|		di_br_size = (int64_t) FS16_TO_CPU(ds->double_indirect.len,
  ------------------
  |  |   34|    297|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|    297|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 297, False: 0]
  |  |  ------------------
  |  |   35|    297|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  210|    297|				fs_le) << FS32_TO_CPU(bs->block_shift, fs_le);
  ------------------
  |  |   36|    297|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|    297|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 297, False: 0]
  |  |  ------------------
  |  |   37|    297|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  211|    297|		if (di_br_size == 0)
  ------------------
  |  Branch (211:7): [True: 15, False: 282]
  ------------------
  212|     15|			return NULL;
  213|       |
  214|    282|		br_per_di_br = di_br_size / sizeof(struct block_run);
  215|    282|		if (br_per_di_br == 0)
  ------------------
  |  Branch (215:7): [True: 0, False: 282]
  ------------------
  216|      0|			return NULL;
  217|       |
  218|    282|		di_index = start / (br_per_di_br * di_br_size);
  219|    282|		i_index = (start % (br_per_di_br * di_br_size)) / di_br_size;
  220|    282|		start = (start % (br_per_di_br * di_br_size)) % di_br_size;
  221|       |
  222|    282|		if (di_index >= br_per_di_br)
  ------------------
  |  Branch (222:7): [True: 140, False: 142]
  ------------------
  223|    140|			return NULL; /* Corrupt? */
  224|       |
  225|    142|		br = (struct block_run *) get_block_run(pr, bs,
  226|    142|						&ds->double_indirect, fs_le);
  227|    142|		if (!br)
  ------------------
  |  Branch (227:7): [True: 47, False: 95]
  ------------------
  228|     47|			return NULL;
  229|       |
  230|     95|		max_br = ((int64_t)FS16_TO_CPU(br[di_index].len, fs_le)
  ------------------
  |  |   34|     95|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|     95|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 95, False: 0]
  |  |  ------------------
  |  |   35|     95|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  231|     95|			  << FS32_TO_CPU(bs->block_shift, fs_le))
  ------------------
  |  |   36|     95|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|     95|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 95, False: 0]
  |  |  ------------------
  |  |   37|     95|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  232|     95|			/ sizeof(struct block_run);
  233|       |
  234|     95|		if (i_index >= max_br)
  ------------------
  |  Branch (234:7): [True: 43, False: 52]
  ------------------
  235|     43|			return NULL; /* Corrupt? */
  236|       |
  237|     52|		br = (struct block_run *) get_block_run(pr, bs, &br[di_index],
  238|     52|									fs_le);
  239|     52|		if (!br)
  ------------------
  |  Branch (239:7): [True: 22, False: 30]
  ------------------
  240|     22|			return NULL;
  241|       |
  242|     30|		return get_custom_block_run(pr, bs, &br[i_index], start, length,
  243|     30|									fs_le);
  244|     52|	}
  245|    239|	return NULL;
  246|  4.15k|}
befs.c:get_custom_block_run:
  142|  3.62k|{
  143|  3.62k|	if (offset + length > (int64_t) FS16_TO_CPU(br->len, fs_le)
  ------------------
  |  |   34|  3.62k|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|  3.62k|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 3.62k, False: 0]
  |  |  ------------------
  |  |   35|  3.62k|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  |  Branch (143:6): [True: 98, False: 3.53k]
  ------------------
  144|  3.62k|					<< FS32_TO_CPU(bs->block_shift, fs_le))
  ------------------
  |  |   36|  3.62k|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|  3.62k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 3.62k, False: 0]
  |  |  ------------------
  |  |   37|  3.62k|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  145|     98|		return NULL;
  146|       |
  147|  3.53k|	return blkid_probe_get_buffer(pr,
  148|  3.53k|			((uint64_t) FS32_TO_CPU(br->allocation_group, fs_le)
  ------------------
  |  |   36|  3.53k|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|  3.53k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 3.53k, False: 0]
  |  |  ------------------
  |  |   37|  3.53k|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  149|  3.53k|					<< FS32_TO_CPU(bs->ag_shift, fs_le)
  ------------------
  |  |   36|  3.53k|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|  3.53k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 3.53k, False: 0]
  |  |  ------------------
  |  |   37|  3.53k|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  150|  3.53k|					<< FS32_TO_CPU(bs->block_shift, fs_le))
  ------------------
  |  |   36|  3.53k|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|  3.53k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 3.53k, False: 0]
  |  |  ------------------
  |  |   37|  3.53k|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  151|  3.53k|				+ ((uint64_t) FS16_TO_CPU(br->start, fs_le)
  ------------------
  |  |   34|  3.53k|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|  3.53k|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 3.53k, False: 0]
  |  |  ------------------
  |  |   35|  3.53k|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  152|       |					<< FS32_TO_CPU(bs->block_shift, fs_le))
  ------------------
  |  |   36|  3.53k|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|  3.53k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 3.53k, False: 0]
  |  |  ------------------
  |  |   37|  3.53k|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  153|  3.53k|				+ offset,
  154|  3.53k|			length);
  155|  3.62k|}
befs.c:compare_keys:
  254|  6.29k|{
  255|  6.29k|	const char *key1;
  256|  6.29k|	uint16_t keylength1, keystart1;
  257|  6.29k|	int32_t result;
  258|       |
  259|  6.29k|	keystart1 = index == 0 ? 0 : FS16_TO_CPU(keylengths1[index - 1], fs_le);
  ------------------
  |  |   34|  12.2k|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|  5.92k|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 5.92k, False: 0]
  |  |  ------------------
  |  |   35|  12.2k|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  |  Branch (259:14): [True: 375, False: 5.92k]
  ------------------
  260|  6.29k|	keylength1 = FS16_TO_CPU(keylengths1[index], fs_le) - keystart1;
  ------------------
  |  |   34|  6.29k|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|  6.29k|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 6.29k, False: 0]
  |  |  ------------------
  |  |   35|  6.29k|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  261|       |
  262|  6.29k|	if (keystart1 + keylength1 > all_key_length)
  ------------------
  |  Branch (262:6): [True: 105, False: 6.19k]
  ------------------
  263|    105|		return BAD_KEYS; /* Corrupt? */
  ------------------
  |  |  248|    105|#define BAD_KEYS -2
  ------------------
  264|       |
  265|  6.19k|	key1 = &keys1[keystart1];
  266|       |
  267|  6.19k|	result = strncmp(key1, key2, min(keylength1, keylength2));
  ------------------
  |  |  206|  6.19k|# define min(x, y) __extension__ ({		\
  |  |  207|  6.19k|	__typeof__(x) _min1 = (x);		\
  |  |  208|  6.19k|	__typeof__(y) _min2 = (y);		\
  |  |  209|  6.19k|	(void) (&_min1 == &_min2);		\
  |  |  210|  6.19k|	_min1 < _min2 ? _min1 : _min2; })
  |  |  ------------------
  |  |  |  Branch (210:2): [True: 4.25k, False: 1.94k]
  |  |  ------------------
  ------------------
  268|       |
  269|  6.19k|	if (result == 0)
  ------------------
  |  Branch (269:6): [True: 4.83k, False: 1.36k]
  ------------------
  270|  4.83k|		return keylength1 - keylength2;
  271|       |
  272|  1.36k|	if (result < 0) /* Don't clash with BAD_KEYS */
  ------------------
  |  Branch (272:6): [True: 553, False: 808]
  ------------------
  273|    553|		result = -1;
  274|       |
  275|  1.36k|	return result;
  276|  6.19k|}

blkid_probe_is_bitlocker:
  176|    763|{
  177|    763|	return get_bitlocker_headers(pr, NULL, NULL, NULL) == 0;
  178|    763|}
bitlocker.c:get_bitlocker_headers:
  108|  1.05k|{
  109|       |
  110|  1.05k|	const unsigned char *buf;
  111|  1.05k|	const struct bde_fve_metadata *fve;
  112|  1.05k|	uint64_t off = 0;
  113|  1.05k|	int kind;
  114|       |
  115|  1.05k|	if (buf_hdr)
  ------------------
  |  Branch (115:6): [True: 296, False: 763]
  ------------------
  116|    296|		*buf_hdr = NULL;
  117|  1.05k|	if (buf_fve)
  ------------------
  |  Branch (117:6): [True: 296, False: 763]
  ------------------
  118|    296|		*buf_fve = NULL;
  119|  1.05k|	if (type)
  ------------------
  |  Branch (119:6): [True: 296, False: 763]
  ------------------
  120|    296|		*type = -1;
  121|       |
  122|  1.05k|	buf = blkid_probe_get_buffer(pr, BDE_HDR_OFFSET, BDE_HDR_SIZE);
  ------------------
  |  |   18|  1.05k|#define BDE_HDR_OFFSET	0
  ------------------
              	buf = blkid_probe_get_buffer(pr, BDE_HDR_OFFSET, BDE_HDR_SIZE);
  ------------------
  |  |   17|  1.05k|#define BDE_HDR_SIZE	512
  ------------------
  123|  1.05k|	if (!buf)
  ------------------
  |  Branch (123:6): [True: 0, False: 1.05k]
  ------------------
  124|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (124:10): [True: 0, False: 0]
  ------------------
  125|       |
  126|  1.05k|	kind = get_bitlocker_type(buf);
  127|       |
  128|       |	/* Check BitLocker header */
  129|  1.05k|	switch (kind) {
  130|    186|	case BDE_VERSION_WIN7:
  ------------------
  |  Branch (130:2): [True: 186, False: 873]
  ------------------
  131|    186|		off = le64_to_cpu(((const struct bde_header_win7 *) buf)->fve_metadata_offset);
  ------------------
  |  |  138|    186|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  132|    186|		break;
  133|    312|	case BDE_VERSION_TOGO:
  ------------------
  |  Branch (133:2): [True: 312, False: 747]
  ------------------
  134|    312|		off = le64_to_cpu(((const struct bde_header_togo *) buf)->fve_metadata_offset);
  ------------------
  |  |  138|    312|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  135|    312|		break;
  136|      7|	case BDE_VERSION_VISTA:
  ------------------
  |  Branch (136:2): [True: 7, False: 1.05k]
  ------------------
  137|      7|		goto done;
  138|    554|	default:
  ------------------
  |  Branch (138:2): [True: 554, False: 505]
  ------------------
  139|    554|		goto nothing;
  140|  1.05k|	}
  141|       |
  142|    498|	if (!off || off % 64)
  ------------------
  |  Branch (142:6): [True: 19, False: 479]
  |  Branch (142:14): [True: 123, False: 356]
  ------------------
  143|    142|		goto nothing;
  144|    356|	if (buf_hdr)
  ------------------
  |  Branch (144:6): [True: 206, False: 150]
  ------------------
  145|    206|		*buf_hdr = buf;
  146|       |
  147|       |	/* Check Bitlocker FVE metadata header */
  148|    356|	buf = blkid_probe_get_buffer(pr, off, sizeof(struct bde_fve_metadata));
  149|    356|	if (!buf)
  ------------------
  |  Branch (149:6): [True: 245, False: 111]
  ------------------
  150|    245|		return errno ? -errno : 1;
  ------------------
  |  Branch (150:10): [True: 0, False: 245]
  ------------------
  151|       |
  152|    111|	fve = (const struct bde_fve_metadata *) buf;
  153|    111|	if (memcmp(fve->block_header.signature, BDE_MAGIC_FVE, sizeof(fve->block_header.signature)) != 0)
  ------------------
  |  |   80|    111|#define BDE_MAGIC_FVE		"-FVE-FS-"
  ------------------
  |  Branch (153:6): [True: 63, False: 48]
  ------------------
  154|     63|		goto nothing;
  155|       |
  156|     48|	if (buf_fve) {
  ------------------
  |  Branch (156:6): [True: 40, False: 8]
  ------------------
  157|     40|		buf = blkid_probe_get_buffer(pr, off,
  158|     40|			(uint64_t) sizeof(struct bde_fve_metadata_block_header) + le32_to_cpu(fve->header.size));
  ------------------
  |  |  137|     40|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  159|     40|		if (!buf)
  ------------------
  |  Branch (159:7): [True: 4, False: 36]
  ------------------
  160|      4|			return errno ? -errno : 1;
  ------------------
  |  Branch (160:11): [True: 0, False: 4]
  ------------------
  161|       |
  162|     36|		*buf_fve = buf;
  163|     36|	}
  164|     51|done:
  165|     51|	if (type)
  ------------------
  |  Branch (165:6): [True: 40, False: 11]
  ------------------
  166|     40|		*type = kind;
  167|     51|	return 0;
  168|    759|nothing:
  169|    759|	return 1;
  170|     48|}
bitlocker.c:get_bitlocker_type:
   86|  1.05k|{
   87|  1.05k|	size_t i;
   88|  1.05k|	static const char *const map[] = {
   89|  1.05k|		[BDE_VERSION_VISTA] = BDE_MAGIC_VISTA,
  ------------------
  |  |   76|  1.05k|#define BDE_MAGIC_VISTA		"\xeb\x52\x90-FVE-FS-"
  ------------------
   90|  1.05k|		[BDE_VERSION_WIN7]  = BDE_MAGIC_WIN7,
  ------------------
  |  |   77|  1.05k|#define BDE_MAGIC_WIN7		"\xeb\x58\x90-FVE-FS-"
  ------------------
   91|  1.05k|		[BDE_VERSION_TOGO]  = BDE_MAGIC_TOGO
  ------------------
  |  |   78|  1.05k|#define BDE_MAGIC_TOGO		"\xeb\x58\x90MSWIN4.1"
  ------------------
   92|  1.05k|	};
   93|       |
   94|  3.53k|	for (i = 0; i < ARRAY_SIZE(map); i++) {
  ------------------
  |  |  182|  3.53k|#define ARRAY_SIZE(arr) countof(arr)
  ------------------
  |  Branch (94:14): [True: 2.97k, False: 554]
  ------------------
   95|  2.97k|		if (memcmp(buf, map[i], 11) == 0)
  ------------------
  |  Branch (95:7): [True: 505, False: 2.47k]
  ------------------
   96|    505|			return (int) i;
   97|  2.97k|	}
   98|       |
   99|    554|	return -1;
  100|  1.05k|}
bitlocker.c:probe_bitlocker:
  182|    296|{
  183|    296|	const unsigned char *buf_fve = NULL;
  184|    296|	const unsigned char *buf_hdr = NULL;
  185|    296|	const struct bde_fve_metadata_entry *entry;
  186|    296|	int rc, kind;
  187|    296|	uint64_t off;
  188|       |
  189|    296|	rc = get_bitlocker_headers(pr, &kind, &buf_hdr, &buf_fve);
  190|    296|	if (rc)
  ------------------
  |  Branch (190:6): [True: 256, False: 40]
  ------------------
  191|    256|		return rc;
  192|       |
  193|     40|	if (buf_fve) {
  ------------------
  |  Branch (193:6): [True: 36, False: 4]
  ------------------
  194|     36|		const struct bde_fve_metadata *fve = (const struct bde_fve_metadata *) buf_fve;
  195|       |
  196|     36|		blkid_probe_sprintf_version(pr, "%d", le16_to_cpu(fve->block_header.version));
  ------------------
  |  |  136|     36|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  197|       |
  198|     36|		for (off = sizeof(struct bde_fve_metadata_header);
  199|    641|		     off + sizeof(struct bde_fve_metadata_entry) < le32_to_cpu(fve->header.size);
  ------------------
  |  |  137|    641|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (199:8): [True: 639, False: 2]
  ------------------
  200|    639|		     off += le16_to_cpu(entry->size)) {
  ------------------
  |  |  136|    605|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  201|    639|			entry = (const struct bde_fve_metadata_entry *) ((const char *) &fve->header + off);
  202|    639|			if (off % 2 ||
  ------------------
  |  Branch (202:8): [True: 6, False: 633]
  ------------------
  203|    633|			    le16_to_cpu(entry->size) < sizeof(struct bde_fve_metadata_entry) ||
  ------------------
  |  |  136|    633|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  |  Branch (203:8): [True: 11, False: 622]
  ------------------
  204|    622|			    off + le16_to_cpu(entry->size) > le32_to_cpu(fve->header.size))
  ------------------
  |  |  136|    622|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
              			    off + le16_to_cpu(entry->size) > le32_to_cpu(fve->header.size))
  ------------------
  |  |  137|    622|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (204:8): [True: 15, False: 607]
  ------------------
  205|     32|				return -1;
  206|       |
  207|    607|			if (le16_to_cpu(entry->entry_type) == BDE_METADATA_ENTRY_TYPE_DESCRIPTION &&
  ------------------
  |  |  136|    607|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
              			if (le16_to_cpu(entry->entry_type) == BDE_METADATA_ENTRY_TYPE_DESCRIPTION &&
  ------------------
  |  |   82|  1.21k|#define BDE_METADATA_ENTRY_TYPE_DESCRIPTION 0x0007
  ------------------
  |  Branch (207:8): [True: 5, False: 602]
  ------------------
  208|      5|			    le16_to_cpu(entry->value_type) == BDE_METADATA_VALUE_TYPE_STRING) {
  ------------------
  |  |  136|      5|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
              			    le16_to_cpu(entry->value_type) == BDE_METADATA_VALUE_TYPE_STRING) {
  ------------------
  |  |   83|      5|#define BDE_METADATA_VALUE_TYPE_STRING      0x0002
  ------------------
  |  Branch (208:8): [True: 2, False: 3]
  ------------------
  209|      2|				blkid_probe_set_utf8label(pr,
  210|      2|					entry->data, le16_to_cpu(entry->size) - sizeof(struct bde_fve_metadata_entry),
  ------------------
  |  |  136|      2|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  211|      2|					UL_ENCODE_UTF16LE);
  212|      2|				break;
  213|      2|			}
  214|    607|		}
  215|       |
  216|       |		/* Microsoft GUID format, interpreted as explained by Raymond Chen:
  217|       |		 * https://devblogs.microsoft.com/oldnewthing/20220928-00/?p=107221
  218|       |		 */
  219|      4|		blkid_probe_sprintf_uuid(pr, fve->header.volume_identifier, 16,
  220|      4|			"%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x",
  221|      4|			fve->header.volume_identifier[3], fve->header.volume_identifier[2], /* uint32_t Data1 */
  222|      4|			fve->header.volume_identifier[1], fve->header.volume_identifier[0],
  223|      4|			fve->header.volume_identifier[5], fve->header.volume_identifier[4], /* uint16_t Data2 */
  224|      4|			fve->header.volume_identifier[7], fve->header.volume_identifier[6], /* uint16_t Data3 */
  225|      4|			fve->header.volume_identifier[8], fve->header.volume_identifier[9], /* uint8_t Data4[8] */
  226|      4|			fve->header.volume_identifier[10], fve->header.volume_identifier[11],
  227|      4|			fve->header.volume_identifier[12], fve->header.volume_identifier[13],
  228|      4|			fve->header.volume_identifier[14], fve->header.volume_identifier[15]);
  229|      4|	}
  230|      8|	return 0;
  231|     40|}

bluestore.c:probe_bluestore:
   33|     11|{
   34|     11|	const struct bluestore_phdr *header;
   35|       |
   36|     11|	header = blkid_probe_get_sb(pr, mag, struct bluestore_phdr);
  ------------------
  |  |  451|     11|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
   37|     11|	if (header == NULL)
  ------------------
  |  Branch (37:6): [True: 0, False: 11]
  ------------------
   38|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (38:10): [True: 0, False: 0]
  ------------------
   39|       |
   40|     11|	return 0;
   41|     11|}

cramfs.c:probe_cramfs:
   73|    119|{
   74|    119|	const struct cramfs_super *cs;
   75|       |
   76|    119|	cs = blkid_probe_get_sb(pr, mag, struct cramfs_super);
  ------------------
  |  |  451|    119|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
   77|    119|	if (!cs)
  ------------------
  |  Branch (77:6): [True: 0, False: 119]
  ------------------
   78|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (78:10): [True: 0, False: 0]
  ------------------
   79|       |
   80|    119|	int le = mag->hint == BLKID_ENDIANNESS_LITTLE;
   81|    119|	int v2 = cfs32_to_cpu(le, cs->flags) & CRAMFS_FLAG_FSID_VERSION_2;
  ------------------
  |  |   38|    119|#define CRAMFS_FLAG_FSID_VERSION_2	0x00000001	/* fsid version #2 */
  ------------------
   82|       |
   83|    119|	if (v2 && !cramfs_verify_csum(pr, mag, cs, le))
  ------------------
  |  Branch (83:6): [True: 77, False: 42]
  |  Branch (83:12): [True: 77, False: 0]
  ------------------
   84|     77|		return 1;
   85|       |
   86|     42|	blkid_probe_set_label(pr, cs->name, sizeof(cs->name));
   87|     42|	blkid_probe_set_fssize(pr, cfs32_to_cpu(le, cs->size));
   88|     42|	blkid_probe_sprintf_version(pr, "%d", v2 ? 2 : 1);
  ------------------
  |  Branch (88:40): [True: 0, False: 42]
  ------------------
   89|     42|	blkid_probe_set_fsendianness(pr, mag->hint);
   90|     42|	return 0;
   91|    119|}
cramfs.c:cfs32_to_cpu:
   41|    315|{
   42|    315|	if (le)
  ------------------
  |  Branch (42:6): [True: 96, False: 219]
  ------------------
   43|     96|		return le32_to_cpu(value);
  ------------------
  |  |  137|     96|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
   44|    219|	else
   45|    219|		return be32_to_cpu(value);
  ------------------
  |  |  141|    219|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
   46|    315|}
cramfs.c:cramfs_verify_csum:
   50|     77|{
   51|     77|	uint32_t crc, expected, csummed_size;
   52|     77|	const unsigned char *csummed;
   53|       |
   54|     77|	expected = cfs32_to_cpu(le, cs->info.crc);
   55|     77|	csummed_size = cfs32_to_cpu(le, cs->size);
   56|       |
   57|     77|	if (csummed_size > (1 << 16)
  ------------------
  |  Branch (57:6): [True: 47, False: 30]
  ------------------
   58|     30|	    || csummed_size < sizeof(struct cramfs_super))
  ------------------
  |  Branch (58:9): [True: 5, False: 25]
  ------------------
   59|     52|		return 0;
   60|       |
   61|     25|	csummed = blkid_probe_get_sb_buffer(pr, mag, csummed_size);
   62|     25|	if (!csummed)
  ------------------
  |  Branch (62:6): [True: 0, False: 25]
  ------------------
   63|      0|		return 0;
   64|       |
   65|     25|	crc = ~ul_crc32_exclude_offset(~0LL, csummed, csummed_size,
   66|     25|			offsetof(struct cramfs_super, info.crc),
   67|     25|			sizeof_member(struct cramfs_super, info.crc), 0);
  ------------------
  |  |  260|     25|#define sizeof_member(TYPE, MEMBER) sizeof(((TYPE *)0)->MEMBER)
  ------------------
   68|       |
   69|     25|	return blkid_probe_verify_csum(pr, crc, expected);
   70|     25|}

cs_fvault2.c:probe_cs_fvault2:
   67|    903|{
   68|    903|	const struct cs_fvault2_sb *sb;
   69|       |
   70|    903|	sb = blkid_probe_get_sb(pr, mag, struct cs_fvault2_sb);
  ------------------
  |  |  451|    903|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
   71|    903|	if (!sb)
  ------------------
  |  Branch (71:6): [True: 0, False: 903]
  ------------------
   72|      0|		return errno ? -errno : BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  |  Branch (72:10): [True: 0, False: 0]
  ------------------
   73|       |
   74|       |	/* Apple Core storage Physical Volume Header; only type 1 checksum is supported  */
   75|    903|	if (le16_to_cpu(sb->version) != 1 ||
  ------------------
  |  |  136|    903|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  |  Branch (75:6): [True: 628, False: 275]
  ------------------
   76|    275|	    le32_to_cpu(sb->checksum_algo) != 1)
  ------------------
  |  |  137|    275|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (76:6): [True: 270, False: 5]
  ------------------
   77|    898|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|    898|#define BLKID_PROBE_NONE	1
  ------------------
   78|       |
   79|      5|	if (!cs_fvault2_verify_csum(pr, sb))
  ------------------
  |  Branch (79:6): [True: 5, False: 0]
  ------------------
   80|      5|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|      5|#define BLKID_PROBE_NONE	1
  ------------------
   81|       |
   82|       |	/* We support only block type 0x10 as it should be used for FileVault2 */
   83|      0|	if (le16_to_cpu(sb->block_type) != 0x10 ||
  ------------------
  |  |  136|      0|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  |  Branch (83:6): [True: 0, False: 0]
  ------------------
   84|      0|	    le32_to_cpu(sb->key_data_size) != 16 ||
  ------------------
  |  |  137|      0|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (84:6): [True: 0, False: 0]
  ------------------
   85|      0|	    le32_to_cpu(sb->cipher) != 2 /* AES-XTS */)
  ------------------
  |  |  137|      0|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (85:6): [True: 0, False: 0]
  ------------------
   86|      0|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
   87|       |
   88|      0|	blkid_probe_sprintf_version(pr, "%u", le16_to_cpu(sb->version));
  ------------------
  |  |  136|      0|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
   89|      0|	blkid_probe_set_uuid(pr, sb->ph_vol_uuid);
   90|       |
   91|      0|	return BLKID_PROBE_OK;
  ------------------
  |  |  465|      0|#define BLKID_PROBE_OK	0
  ------------------
   92|      0|}
cs_fvault2.c:cs_fvault2_verify_csum:
   57|      5|{
   58|      5|	uint32_t seed = le32_to_cpu(sb->checksum.seed);
  ------------------
  |  |  137|      5|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
   59|      5|	uint32_t crc = le32_to_cpu(sb->checksum.value);
  ------------------
  |  |  137|      5|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
   60|      5|	unsigned char *buf = (unsigned char *)sb + sizeof(sb->checksum);
   61|      5|	size_t buf_size = sizeof(*sb) - sizeof(sb->checksum);
   62|       |
   63|      5|	return blkid_probe_verify_csum(pr, crc32c(seed, buf, buf_size), crc);
   64|      5|}

ddf_raid.c:probe_ddf:
   92|  5.99k|{
   93|  5.99k|	int hdrs[] = { 1, 257 };
   94|  5.99k|	size_t i;
   95|  5.99k|	const struct ddf_header *ddf = NULL;
   96|  5.99k|	char version[DDF_REV_LENGTH + 1];
   97|  5.99k|	uint64_t off = 0, lba;
   98|       |
   99|  17.9k|	for (i = 0; i < ARRAY_SIZE(hdrs); i++) {
  ------------------
  |  |  182|  17.9k|#define ARRAY_SIZE(arr) countof(arr)
  ------------------
  |  Branch (99:14): [True: 11.9k, False: 5.99k]
  ------------------
  100|  11.9k|		off = ((pr->size / 0x200) - hdrs[i]) * 0x200;
  101|       |
  102|  11.9k|		ddf = (const struct ddf_header *) blkid_probe_get_buffer(pr,
  103|  11.9k|					off,
  104|  11.9k|					sizeof(struct ddf_header));
  105|  11.9k|		if (!ddf)
  ------------------
  |  Branch (105:7): [True: 0, False: 11.9k]
  ------------------
  106|      0|			return errno ? -errno : 1;
  ------------------
  |  Branch (106:11): [True: 0, False: 0]
  ------------------
  107|  11.9k|		if (ddf->signature == cpu_to_be32(DDF_MAGIC) && ddf_verify_csum(pr, ddf))
  ------------------
  |  |  133|  23.9k|#define cpu_to_be32(x) ((uint32_t) htobe32(x))
  ------------------
  |  Branch (107:7): [True: 0, False: 11.9k]
  |  Branch (107:51): [True: 0, False: 0]
  ------------------
  108|      0|			break;
  109|  11.9k|		ddf = NULL;
  110|  11.9k|	}
  111|       |
  112|  5.99k|	if (!ddf)
  ------------------
  |  Branch (112:6): [True: 5.99k, False: 0]
  ------------------
  113|  5.99k|		return 1;
  114|       |
  115|      0|	lba = be64_to_cpu(ddf->primary_lba);
  ------------------
  |  |  142|      0|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  116|       |
  117|      0|	if (lba > 0) {
  ------------------
  |  Branch (117:6): [True: 0, False: 0]
  ------------------
  118|       |		/* check primary header */
  119|      0|		const unsigned char *buf;
  120|       |
  121|      0|		buf = blkid_probe_get_buffer(pr,
  122|      0|					lba << 9, sizeof(ddf->signature));
  123|      0|		if (!buf)
  ------------------
  |  Branch (123:7): [True: 0, False: 0]
  ------------------
  124|      0|			return errno ? -errno : 1;
  ------------------
  |  Branch (124:11): [True: 0, False: 0]
  ------------------
  125|       |
  126|      0|		if (memcmp(buf, &ddf->signature, 4) != 0)
  ------------------
  |  Branch (126:7): [True: 0, False: 0]
  ------------------
  127|      0|			return 1;
  128|      0|	}
  129|       |
  130|      0|	blkid_probe_strncpy_uuid(pr, ddf->guid, sizeof(ddf->guid));
  131|       |
  132|      0|	memcpy(version, ddf->ddf_rev, sizeof(ddf->ddf_rev));
  133|      0|	*(version + sizeof(ddf->ddf_rev)) = '\0';
  134|       |
  135|      0|	if (blkid_probe_set_version(pr, version) != 0)
  ------------------
  |  Branch (135:6): [True: 0, False: 0]
  ------------------
  136|      0|		return 1;
  137|      0|	if (blkid_probe_set_magic(pr, off,
  ------------------
  |  Branch (137:6): [True: 0, False: 0]
  ------------------
  138|      0|			sizeof(ddf->signature),
  139|      0|			(const unsigned char *) &ddf->signature))
  140|      0|		return 1;
  141|      0|	return 0;
  142|      0|}

drbdmanage.c:probe_drbdmanage:
   43|     37|{
   44|     37|	struct drbdmanage_hdr *hdr;
   45|     37|	unsigned char *cp;
   46|     37|	struct drbdmanage_pers *prs;
   47|       |
   48|     37|	hdr = (struct drbdmanage_hdr*)
   49|     37|		blkid_probe_get_buffer(pr, 0, sizeof(*hdr));
   50|     37|	if (!hdr)
  ------------------
  |  Branch (50:6): [True: 0, False: 37]
  ------------------
   51|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (51:10): [True: 0, False: 0]
  ------------------
   52|       |
   53|    195|	for(cp=hdr->uuid; cp<&hdr->lf; cp++)
  ------------------
  |  Branch (53:20): [True: 191, False: 4]
  ------------------
   54|    191|		if (!isxdigit(*cp))
  ------------------
  |  Branch (54:7): [True: 33, False: 158]
  ------------------
   55|     33|			return 1;
   56|      4|	if (hdr->lf != '\n')
  ------------------
  |  Branch (56:6): [True: 3, False: 1]
  ------------------
   57|      3|		return 1;
   58|       |
   59|      1|	if (blkid_probe_strncpy_uuid(pr,
  ------------------
  |  Branch (59:6): [True: 0, False: 1]
  ------------------
   60|      1|				hdr->uuid, sizeof(hdr->uuid)))
   61|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (61:10): [True: 0, False: 0]
  ------------------
   62|       |
   63|      1|	prs = (struct drbdmanage_pers*)
   64|      1|		blkid_probe_get_buffer(pr, 0x1000, sizeof(*prs));
   65|      1|	if (!prs)
  ------------------
  |  Branch (65:6): [True: 0, False: 1]
  ------------------
   66|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (66:10): [True: 0, False: 0]
  ------------------
   67|       |
   68|      1|	if (memcmp(prs->magic, persistence_magic, sizeof(prs->magic)) == 0 &&
  ------------------
  |  Branch (68:6): [True: 0, False: 1]
  ------------------
   69|      0|	    blkid_probe_sprintf_version(pr, "%"PRIu32, be32_to_cpu(prs->version_le)) != 0)
  ------------------
  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  |  Branch (69:6): [True: 0, False: 0]
  ------------------
   70|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (70:10): [True: 0, False: 0]
  ------------------
   71|       |
   72|      1|	return 0;
   73|      1|}

drbdproxy_datalog.c:probe_drbdproxy_datalog:
   31|      8|{
   32|      8|	struct log_header_t *lh;
   33|       |
   34|      8|	lh = (struct log_header_t *) blkid_probe_get_buffer(pr, 0, sizeof(*lh));
   35|      8|	if (!lh)
  ------------------
  |  Branch (35:6): [True: 0, False: 8]
  ------------------
   36|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (36:10): [True: 0, False: 0]
  ------------------
   37|       |
   38|      8|	blkid_probe_set_uuid(pr, lh->uuid);
   39|      8|	blkid_probe_sprintf_version(pr, "v%"PRIu64, le64_to_cpu(lh->version));
  ------------------
  |  |  138|      8|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
   40|       |
   41|      8|	return 0;
   42|      8|}

erofs.c:probe_erofs:
   76|    292|{
   77|    292|	const struct erofs_super_block *sb;
   78|       |
   79|    292|	sb = blkid_probe_get_sb(pr, mag, struct erofs_super_block);
  ------------------
  |  |  451|    292|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
   80|    292|	if (!sb)
  ------------------
  |  Branch (80:6): [True: 0, False: 292]
  ------------------
   81|      0|		return errno ? -errno : BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  |  Branch (81:10): [True: 0, False: 0]
  ------------------
   82|       |
   83|       |	/* block size must be between 512 and 64k */
   84|    292|	if (sb->blkszbits < 9 || sb->blkszbits > 16)
  ------------------
  |  Branch (84:6): [True: 146, False: 146]
  |  Branch (84:27): [True: 86, False: 60]
  ------------------
   85|    232|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|    232|#define BLKID_PROBE_NONE	1
  ------------------
   86|       |
   87|     60|	if (!erofs_verify_checksum(pr, mag, sb))
  ------------------
  |  Branch (87:6): [True: 51, False: 9]
  ------------------
   88|     51|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|     51|#define BLKID_PROBE_NONE	1
  ------------------
   89|       |
   90|      9|	if (sb->volume_name[0])
  ------------------
  |  Branch (90:6): [True: 6, False: 3]
  ------------------
   91|      6|		blkid_probe_set_label(pr, (unsigned char *)sb->volume_name,
   92|      6|				      sizeof(sb->volume_name));
   93|       |
   94|      9|	blkid_probe_set_uuid(pr, sb->uuid);
   95|      9|	blkid_probe_set_fsblocksize(pr, 1U << sb->blkszbits);
   96|      9|	blkid_probe_set_block_size(pr, 1U << sb->blkszbits);
   97|      9|	blkid_probe_set_fssize(pr, (uint64_t) (1U << sb->blkszbits) * le32_to_cpu(sb->blocks));
  ------------------
  |  |  137|      9|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
   98|       |
   99|      9|	return BLKID_PROBE_OK;
  ------------------
  |  |  465|      9|#define BLKID_PROBE_OK	0
  ------------------
  100|     60|}
erofs.c:erofs_verify_checksum:
   46|     60|{
   47|     60|	uint32_t expected, csum;
   48|     60|	size_t csummed_size;
   49|     60|	const unsigned char *csummed;
   50|       |
   51|     60|	if (!(le32_to_cpu(sb->feature_compat) & EROFS_FEATURE_SB_CSUM))
  ------------------
  |  |  137|     60|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              	if (!(le32_to_cpu(sb->feature_compat) & EROFS_FEATURE_SB_CSUM))
  ------------------
  |  |   17|     60|#define EROFS_FEATURE_SB_CSUM	(1 << 0)
  ------------------
  |  Branch (51:6): [True: 9, False: 51]
  ------------------
   52|      9|		return 1;
   53|       |
   54|     51|	expected = le32_to_cpu(sb->checksum);
  ------------------
  |  |  137|     51|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
   55|       |
   56|       |	/* kernel validates blkszbits 9..PAGE_SHIFT;
   57|       |	 * block size must be > EROFS_SUPER_OFFSET to avoid underflow */
   58|     51|	if (sb->blkszbits < 9 || sb->blkszbits > 16
  ------------------
  |  Branch (58:6): [True: 0, False: 51]
  |  Branch (58:27): [True: 0, False: 51]
  ------------------
   59|     51|	    || (1U << sb->blkszbits) <= EROFS_SUPER_OFFSET)
  ------------------
  |  |   15|     51|#define EROFS_SUPER_OFFSET      1024
  ------------------
  |  Branch (59:9): [True: 7, False: 44]
  ------------------
   60|      7|		return 0;
   61|       |
   62|     44|	csummed_size = (1U << sb->blkszbits) - EROFS_SUPER_OFFSET;
  ------------------
  |  |   15|     44|#define EROFS_SUPER_OFFSET      1024
  ------------------
   63|       |
   64|     44|	csummed = blkid_probe_get_sb_buffer(pr, mag, csummed_size);
   65|     44|	if (!csummed)
  ------------------
  |  Branch (65:6): [True: 0, False: 44]
  ------------------
   66|      0|		return 0;
   67|       |
   68|     44|	csum = ul_crc32c_exclude_offset(~0L, csummed, csummed_size,
   69|     44|			                offsetof(struct erofs_super_block, checksum),
   70|     44|					sizeof_member(struct erofs_super_block, checksum));
  ------------------
  |  |  260|     44|#define sizeof_member(TYPE, MEMBER) sizeof(((TYPE *)0)->MEMBER)
  ------------------
   71|       |
   72|     44|	return blkid_probe_verify_csum(pr, csum, expected);
   73|     44|}

blkid_probe_is_exfat:
  226|    121|{
  227|    121|	const struct exfat_super_block *sb;
  228|    121|	const struct blkid_idmag *mag = NULL;
  229|    121|	int rc;
  230|       |
  231|    121|	rc = blkid_probe_get_idmag(pr, &vfat_idinfo, NULL, &mag);
  232|    121|	if (rc < 0)
  ------------------
  |  Branch (232:6): [True: 0, False: 121]
  ------------------
  233|      0|		return rc;	/* error */
  234|    121|	if (rc != BLKID_PROBE_OK || !mag)
  ------------------
  |  |  465|    242|#define BLKID_PROBE_OK	0
  ------------------
  |  Branch (234:6): [True: 0, False: 121]
  |  Branch (234:30): [True: 0, False: 121]
  ------------------
  235|      0|		return 0;
  236|       |
  237|    121|	sb = blkid_probe_get_sb(pr, mag, struct exfat_super_block);
  ------------------
  |  |  451|    121|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
  238|    121|	if (!sb)
  ------------------
  |  Branch (238:6): [True: 0, False: 121]
  ------------------
  239|      0|		return 0;
  240|       |
  241|    121|	if (memcmp(sb->FileSystemName, "EXFAT   ", 8) != 0)
  ------------------
  |  Branch (241:6): [True: 92, False: 29]
  ------------------
  242|     92|		return 0;
  243|       |
  244|     29|	return exfat_valid_superblock(pr, sb);
  245|    121|}
exfat.c:exfat_valid_superblock:
  167|    358|{
  168|    358|	if (le16_to_cpu(sb->BootSignature) != 0xAA55)
  ------------------
  |  |  136|    358|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  |  Branch (168:6): [True: 108, False: 250]
  ------------------
  169|    108|		return 0;
  170|       |
  171|    250|	if (!CLUSTER_SIZE(sb))
  ------------------
  |  |   44|    250|#define CLUSTER_SIZE(sb) ((sb)->SectorsPerClusterShift < 32 ? (BLOCK_SIZE(sb) << (sb)->SectorsPerClusterShift) : 0)
  |  |  ------------------
  |  |  |  |   43|    209|#define BLOCK_SIZE(sb) ((sb)->BytesPerSectorShift < 32 ? (1u << (sb)->BytesPerSectorShift) : 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:25): [True: 179, False: 30]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (44:27): [True: 209, False: 41]
  |  |  ------------------
  ------------------
  |  Branch (171:6): [True: 73, False: 177]
  ------------------
  172|     73|		return 0;
  173|       |
  174|    177|	if (memcmp(sb->JumpBoot, "\xEB\x76\x90", 3) != 0)
  ------------------
  |  Branch (174:6): [True: 34, False: 143]
  ------------------
  175|     34|		return 0;
  176|       |
  177|    143|	if (memcmp(sb->FileSystemName, "EXFAT   ", 8) != 0)
  ------------------
  |  Branch (177:6): [True: 0, False: 143]
  ------------------
  178|      0|		return 0;
  179|       |
  180|  6.99k|	for (size_t i = 0; i < sizeof(sb->MustBeZero); i++)
  ------------------
  |  Branch (180:21): [True: 6.86k, False: 127]
  ------------------
  181|  6.86k|		if (sb->MustBeZero[i] != 0x00)
  ------------------
  |  Branch (181:7): [True: 16, False: 6.85k]
  ------------------
  182|     16|			return 0;
  183|       |
  184|    127|	if (!in_range_inclusive(sb->NumberOfFats, 1, 2))
  ------------------
  |  |  164|    127|#define in_range_inclusive(val, start, stop) (val >= start && val <= stop)
  |  |  ------------------
  |  |  |  Branch (164:47): [True: 124, False: 3]
  |  |  |  Branch (164:63): [True: 118, False: 6]
  |  |  ------------------
  ------------------
  185|      9|		return 0;
  186|       |
  187|    118|	if (!in_range_inclusive(sb->BytesPerSectorShift, 9, 12))
  ------------------
  |  |  164|    118|#define in_range_inclusive(val, start, stop) (val >= start && val <= stop)
  |  |  ------------------
  |  |  |  Branch (164:47): [True: 113, False: 5]
  |  |  |  Branch (164:63): [True: 110, False: 3]
  |  |  ------------------
  ------------------
  188|      8|		return 0;
  189|       |
  190|    110|	if (!in_range_inclusive(sb->SectorsPerClusterShift,
  ------------------
  |  |  164|    110|#define in_range_inclusive(val, start, stop) (val >= start && val <= stop)
  |  |  ------------------
  |  |  |  Branch (164:47): [True: 110, False: 0]
  |  |  |  Branch (164:63): [True: 110, False: 0]
  |  |  ------------------
  ------------------
  191|    110|				0,
  192|    110|				25 - sb->BytesPerSectorShift))
  193|      0|		return 0;
  194|       |
  195|    110|	if (!in_range_inclusive(le32_to_cpu(sb->FatOffset),
  ------------------
  |  |  164|    110|#define in_range_inclusive(val, start, stop) (val >= start && val <= stop)
  |  |  ------------------
  |  |  |  Branch (164:47): [True: 105, False: 5]
  |  |  |  Branch (164:63): [True: 83, False: 22]
  |  |  ------------------
  ------------------
  196|    110|				24,
  197|    110|				le32_to_cpu(sb->ClusterHeapOffset) -
  198|    110|					(le32_to_cpu(sb->FatLength) * sb->NumberOfFats)))
  199|     27|		return 0;
  200|       |
  201|     83|	if (!in_range_inclusive(le32_to_cpu(sb->ClusterHeapOffset),
  ------------------
  |  |  164|     83|#define in_range_inclusive(val, start, stop) (val >= start && val <= stop)
  |  |  ------------------
  |  |  |  Branch (164:47): [True: 75, False: 8]
  |  |  |  Branch (164:63): [True: 65, False: 10]
  |  |  ------------------
  ------------------
  202|     83|				le32_to_cpu(sb->FatOffset) +
  203|     83|					le32_to_cpu(sb->FatLength) * sb->NumberOfFats,
  204|     83|				1U << (32 - 1)))
  205|     18|		return 0;
  206|       |
  207|     65|	if (!in_range_inclusive(le32_to_cpu(sb->FirstClusterOfRootDirectory),
  ------------------
  |  |  164|     65|#define in_range_inclusive(val, start, stop) (val >= start && val <= stop)
  |  |  ------------------
  |  |  |  Branch (164:47): [True: 59, False: 6]
  |  |  |  Branch (164:63): [True: 34, False: 25]
  |  |  ------------------
  ------------------
  208|     65|				2,
  209|     65|				le32_to_cpu(sb->ClusterCount) + 1))
  210|     31|		return 0;
  211|       |
  212|     34|	if (!exfat_validate_checksum(pr, sb))
  ------------------
  |  Branch (212:6): [True: 34, False: 0]
  ------------------
  213|     34|		return 0;
  214|       |
  215|      0|	return 1;
  216|     34|}
exfat.c:exfat_validate_checksum:
  143|     34|{
  144|     34|	size_t sector_size = BLOCK_SIZE(sb);
  ------------------
  |  |   43|     34|#define BLOCK_SIZE(sb) ((sb)->BytesPerSectorShift < 32 ? (1u << (sb)->BytesPerSectorShift) : 0)
  |  |  ------------------
  |  |  |  Branch (43:25): [True: 34, False: 0]
  |  |  ------------------
  ------------------
  145|       |	/* 11 sectors will be checksummed, the 12th contains the expected */
  146|     34|	const unsigned char *data = blkid_probe_get_buffer(pr, 0, sector_size * 12);
  147|     34|	if (!data)
  ------------------
  |  Branch (147:6): [True: 0, False: 34]
  ------------------
  148|      0|		return 0;
  149|       |
  150|     34|	uint32_t checksum = exfat_boot_checksum(data, sector_size);
  151|       |
  152|       |	/* The expected checksum is repeated, check all of them */
  153|     34|	for (size_t i = 0; i < sector_size / sizeof(uint32_t); i++) {
  ------------------
  |  Branch (153:21): [True: 34, False: 0]
  ------------------
  154|     34|		size_t offset = sector_size * 11 + i * 4;
  155|     34|		uint32_t *expected_addr = (uint32_t *) &data[offset];
  156|     34|		uint32_t expected = le32_to_cpu(*expected_addr);
  ------------------
  |  |  137|     34|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  157|     34|		if (!blkid_probe_verify_csum(pr, checksum, expected))
  ------------------
  |  Branch (157:7): [True: 34, False: 0]
  ------------------
  158|     34|			return 0;
  159|     34|	};
  160|       |
  161|      0|	return 1;
  162|     34|}
exfat.c:exfat_boot_checksum:
  126|     34|{
  127|     34|	uint32_t n_bytes = sector_size * 11;
  128|     34|	uint32_t checksum = 0;
  129|       |
  130|   191k|	for (size_t i = 0; i < n_bytes; i++) {
  ------------------
  |  Branch (130:21): [True: 191k, False: 34]
  ------------------
  131|   191k|		if ((i == 106) || (i == 107) || (i == 112))
  ------------------
  |  Branch (131:7): [True: 34, False: 191k]
  |  Branch (131:21): [True: 34, False: 191k]
  |  Branch (131:35): [True: 34, False: 191k]
  ------------------
  132|    102|			continue;
  133|       |
  134|   191k|		checksum = ((checksum & 1) ? 0x80000000 : 0) + (checksum >> 1)
  ------------------
  |  Branch (134:15): [True: 94.8k, False: 96.5k]
  ------------------
  135|   191k|			+ (uint32_t) sectors[i];
  136|   191k|	}
  137|       |
  138|     34|	return checksum;
  139|     34|}
exfat.c:probe_exfat:
  248|    329|{
  249|    329|	const struct exfat_super_block *sb;
  250|    329|	struct exfat_entry_label *label;
  251|       |
  252|    329|	sb = blkid_probe_get_sb(pr, mag, struct exfat_super_block);
  ------------------
  |  |  451|    329|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
  253|    329|	if (!sb)
  ------------------
  |  Branch (253:6): [True: 0, False: 329]
  ------------------
  254|      0|		return errno ? -errno : BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  |  Branch (254:10): [True: 0, False: 0]
  ------------------
  255|       |
  256|    329|	if (!exfat_valid_superblock(pr, sb))
  ------------------
  |  Branch (256:6): [True: 329, False: 0]
  ------------------
  257|    329|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|    329|#define BLKID_PROBE_NONE	1
  ------------------
  258|       |
  259|      0|	label = find_label(pr, sb);
  260|      0|	if (label)
  ------------------
  |  Branch (260:6): [True: 0, False: 0]
  ------------------
  261|      0|		blkid_probe_set_utf8label(pr, label->name,
  262|      0|				min((size_t) label->length * 2, sizeof(label->name)),
  ------------------
  |  |  206|      0|# define min(x, y) __extension__ ({		\
  |  |  207|      0|	__typeof__(x) _min1 = (x);		\
  |  |  208|      0|	__typeof__(y) _min2 = (y);		\
  |  |  209|      0|	(void) (&_min1 == &_min2);		\
  |  |  210|      0|	_min1 < _min2 ? _min1 : _min2; })
  |  |  ------------------
  |  |  |  Branch (210:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  263|      0|				UL_ENCODE_UTF16LE);
  264|      0|	else if (errno)
  ------------------
  |  Branch (264:11): [True: 0, False: 0]
  ------------------
  265|      0|		return -errno;
  266|       |
  267|      0|	blkid_probe_sprintf_uuid(pr, sb->VolumeSerialNumber, 4,
  268|      0|			"%02hhX%02hhX-%02hhX%02hhX",
  269|      0|			sb->VolumeSerialNumber[3], sb->VolumeSerialNumber[2],
  270|      0|			sb->VolumeSerialNumber[1], sb->VolumeSerialNumber[0]);
  271|       |
  272|      0|	blkid_probe_sprintf_version(pr, "%u.%u",
  273|      0|			sb->FileSystemRevision.vermaj, sb->FileSystemRevision.vermin);
  274|       |
  275|      0|	blkid_probe_set_fsblocksize(pr, BLOCK_SIZE(sb));
  ------------------
  |  |   43|      0|#define BLOCK_SIZE(sb) ((sb)->BytesPerSectorShift < 32 ? (1u << (sb)->BytesPerSectorShift) : 0)
  |  |  ------------------
  |  |  |  Branch (43:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  276|      0|	blkid_probe_set_block_size(pr, BLOCK_SIZE(sb));
  ------------------
  |  |   43|      0|#define BLOCK_SIZE(sb) ((sb)->BytesPerSectorShift < 32 ? (1u << (sb)->BytesPerSectorShift) : 0)
  |  |  ------------------
  |  |  |  Branch (43:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  277|      0|	blkid_probe_set_fssize(pr, BLOCK_SIZE(sb) * le64_to_cpu(sb->VolumeLength));
  ------------------
  |  |   43|      0|#define BLOCK_SIZE(sb) ((sb)->BytesPerSectorShift < 32 ? (1u << (sb)->BytesPerSectorShift) : 0)
  |  |  ------------------
  |  |  |  Branch (43:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              	blkid_probe_set_fssize(pr, BLOCK_SIZE(sb) * le64_to_cpu(sb->VolumeLength));
  ------------------
  |  |  138|      0|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  278|       |
  279|      0|	return BLKID_PROBE_OK;
  ------------------
  |  |  465|      0|#define BLKID_PROBE_OK	0
  ------------------
  280|      0|}

exfs.c:probe_exfs:
  160|    321|{
  161|    321|	const struct exfs_super_block *xs;
  162|       |
  163|    321|	xs = blkid_probe_get_sb(pr, mag, struct exfs_super_block);
  ------------------
  |  |  451|    321|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
  164|    321|	if (!xs)
  ------------------
  |  Branch (164:6): [True: 0, False: 321]
  ------------------
  165|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (165:10): [True: 0, False: 0]
  ------------------
  166|       |
  167|    321|	if (!exfs_verify_sb(xs))
  ------------------
  |  Branch (167:6): [True: 311, False: 10]
  ------------------
  168|    311|		return 1;
  169|       |
  170|     10|	if (*xs->sb_fname != '\0')
  ------------------
  |  Branch (170:6): [True: 5, False: 5]
  ------------------
  171|      5|		blkid_probe_set_label(pr, (unsigned char *) xs->sb_fname,
  172|      5|				sizeof(xs->sb_fname));
  173|       |
  174|     10|	blkid_probe_set_uuid(pr, xs->sb_uuid);
  175|       |
  176|     10|	blkid_probe_set_fsblocksize(pr, be32_to_cpu(xs->sb_blocksize));
  ------------------
  |  |  141|     10|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  177|     10|	blkid_probe_set_block_size(pr, be32_to_cpu(xs->sb_blocksize));
  ------------------
  |  |  141|     10|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  178|       |
  179|     10|	return 0;
  180|    321|}
exfs.c:exfs_verify_sb:
  125|    321|{
  126|    321|	struct exfs_super_block sb, *sbp = &sb;
  127|       |
  128|       |	/* beXX_to_cpu(), but don't convert UUID and fsname! */
  129|    321|	sb_from_disk(ondisk, sbp);
  130|       |
  131|       |	/* sanity checks, we don't want to rely on magic string only */
  132|    321|	if (sbp->sb_agcount <= 0					||
  ------------------
  |  Branch (132:6): [True: 4, False: 317]
  ------------------
  133|    317|	    sbp->sb_sectsize < EXFS_MIN_SECTORSIZE			||
  ------------------
  |  |   70|    638|#define EXFS_MIN_SECTORSIZE	(1 << EXFS_MIN_SECTORSIZE_LOG)
  |  |  ------------------
  |  |  |  |   68|    317|#define EXFS_MIN_SECTORSIZE_LOG	9	/* i.e. 512 bytes */
  |  |  ------------------
  ------------------
  |  Branch (133:6): [True: 23, False: 294]
  ------------------
  134|    294|	    sbp->sb_sectsize > EXFS_MAX_SECTORSIZE			||
  ------------------
  |  |   71|    615|#define EXFS_MAX_SECTORSIZE	(1 << EXFS_MAX_SECTORSIZE_LOG)
  |  |  ------------------
  |  |  |  |   69|    294|#define EXFS_MAX_SECTORSIZE_LOG	15	/* i.e. 32768 bytes */
  |  |  ------------------
  ------------------
  |  Branch (134:6): [True: 20, False: 274]
  ------------------
  135|    274|	    sbp->sb_sectlog < EXFS_MIN_SECTORSIZE_LOG			||
  ------------------
  |  |   68|    595|#define EXFS_MIN_SECTORSIZE_LOG	9	/* i.e. 512 bytes */
  ------------------
  |  Branch (135:6): [True: 7, False: 267]
  ------------------
  136|    267|	    sbp->sb_sectlog > EXFS_MAX_SECTORSIZE_LOG			||
  ------------------
  |  |   69|    588|#define EXFS_MAX_SECTORSIZE_LOG	15	/* i.e. 32768 bytes */
  ------------------
  |  Branch (136:6): [True: 17, False: 250]
  ------------------
  137|    250|	    sbp->sb_sectsize != (1 << sbp->sb_sectlog)			||
  ------------------
  |  Branch (137:6): [True: 5, False: 245]
  ------------------
  138|    245|	    sbp->sb_blocksize < EXFS_MIN_BLOCKSIZE			||
  ------------------
  |  |   66|    566|#define EXFS_MIN_BLOCKSIZE	(1 << EXFS_MIN_BLOCKSIZE_LOG)
  |  |  ------------------
  |  |  |  |   64|    245|#define EXFS_MIN_BLOCKSIZE_LOG	9	/* i.e. 512 bytes */
  |  |  ------------------
  ------------------
  |  Branch (138:6): [True: 5, False: 240]
  ------------------
  139|    240|	    sbp->sb_blocksize > EXFS_MAX_BLOCKSIZE			||
  ------------------
  |  |   67|    561|#define EXFS_MAX_BLOCKSIZE	(1 << EXFS_MAX_BLOCKSIZE_LOG)
  |  |  ------------------
  |  |  |  |   65|    240|#define EXFS_MAX_BLOCKSIZE_LOG	16	/* i.e. 65536 bytes */
  |  |  ------------------
  ------------------
  |  Branch (139:6): [True: 20, False: 220]
  ------------------
  140|    220|	    sbp->sb_blocklog < EXFS_MIN_BLOCKSIZE_LOG			||
  ------------------
  |  |   64|    541|#define EXFS_MIN_BLOCKSIZE_LOG	9	/* i.e. 512 bytes */
  ------------------
  |  Branch (140:6): [True: 7, False: 213]
  ------------------
  141|    213|	    sbp->sb_blocklog > EXFS_MAX_BLOCKSIZE_LOG			||
  ------------------
  |  |   65|    534|#define EXFS_MAX_BLOCKSIZE_LOG	16	/* i.e. 65536 bytes */
  ------------------
  |  Branch (141:6): [True: 3, False: 210]
  ------------------
  142|    210|	    sbp->sb_blocksize != (1ULL << sbp->sb_blocklog)		||
  ------------------
  |  Branch (142:6): [True: 16, False: 194]
  ------------------
  143|    194|	    sbp->sb_inodesize < EXFS_DINODE_MIN_SIZE			||
  ------------------
  |  |   75|    515|#define	EXFS_DINODE_MIN_SIZE	(1 << EXFS_DINODE_MIN_LOG)
  |  |  ------------------
  |  |  |  |   73|    194|#define	EXFS_DINODE_MIN_LOG	8
  |  |  ------------------
  ------------------
  |  Branch (143:6): [True: 3, False: 191]
  ------------------
  144|    191|	    sbp->sb_inodesize > EXFS_DINODE_MAX_SIZE			||
  ------------------
  |  |   76|    512|#define	EXFS_DINODE_MAX_SIZE	(1 << EXFS_DINODE_MAX_LOG)
  |  |  ------------------
  |  |  |  |   74|    191|#define	EXFS_DINODE_MAX_LOG	11
  |  |  ------------------
  ------------------
  |  Branch (144:6): [True: 4, False: 187]
  ------------------
  145|    187|	    sbp->sb_inodelog < EXFS_DINODE_MIN_LOG			||
  ------------------
  |  |   73|    508|#define	EXFS_DINODE_MIN_LOG	8
  ------------------
  |  Branch (145:6): [True: 7, False: 180]
  ------------------
  146|    180|	    sbp->sb_inodelog > EXFS_DINODE_MAX_LOG			||
  ------------------
  |  |   74|    501|#define	EXFS_DINODE_MAX_LOG	11
  ------------------
  |  Branch (146:6): [True: 6, False: 174]
  ------------------
  147|    174|	    sbp->sb_inodesize != (1 << sbp->sb_inodelog)		||
  ------------------
  |  Branch (147:6): [True: 7, False: 167]
  ------------------
  148|    167|	    (sbp->sb_blocklog - sbp->sb_inodelog != sbp->sb_inopblog)	||
  ------------------
  |  Branch (148:6): [True: 3, False: 164]
  ------------------
  149|    164|	    ((uint64_t) sbp->sb_rextsize * sbp->sb_blocksize > EXFS_MAX_RTEXTSIZE)	||
  ------------------
  |  |   78|    164|#define	EXFS_MAX_RTEXTSIZE	(1024 * 1024 * 1024)	/* 1GB */
  ------------------
  |  Branch (149:6): [True: 20, False: 144]
  ------------------
  150|    144|	    ((uint64_t) sbp->sb_rextsize * sbp->sb_blocksize < EXFS_MIN_RTEXTSIZE)	||
  ------------------
  |  |   80|    144|#define	EXFS_MIN_RTEXTSIZE	(4 * 1024)		/* 4kB */
  ------------------
  |  Branch (150:6): [True: 7, False: 137]
  ------------------
  151|    137|	    (sbp->sb_imax_pct > 100 /* zero sb_imax_pct is valid */)	||
  ------------------
  |  Branch (151:6): [True: 3, False: 134]
  ------------------
  152|    134|	    sbp->sb_dblocks == 0					||
  ------------------
  |  Branch (152:6): [True: 3, False: 131]
  ------------------
  153|    131|	    sbp->sb_dblocks > EXFS_MAX_DBLOCKS(sbp)			||
  ------------------
  |  |   83|    452|#define EXFS_MAX_DBLOCKS(s) ((uint64_t)(s)->sb_agcount * (s)->sb_agblocks)
  ------------------
  |  Branch (153:6): [True: 33, False: 98]
  ------------------
  154|     98|	    sbp->sb_dblocks < EXFS_MIN_DBLOCKS(sbp))
  ------------------
  |  |   84|     98|#define EXFS_MIN_DBLOCKS(s) ((uint64_t)((s)->sb_agcount - 1) *	\
  |  |   85|     98|			 (s)->sb_agblocks + EXFS_MIN_AG_BLOCKS)
  |  |  ------------------
  |  |  |  |   82|     98|#define EXFS_MIN_AG_BLOCKS	64
  |  |  ------------------
  ------------------
  |  Branch (154:6): [True: 88, False: 10]
  ------------------
  155|    311|		return 0;
  156|     10|	return 1;
  157|    321|}
exfs.c:sb_from_disk:
   90|    321|{
   91|       |
   92|    321|	to->sb_magicnum = be32_to_cpu(from->sb_magicnum);
  ------------------
  |  |  141|    321|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
   93|    321|	to->sb_blocksize = be32_to_cpu(from->sb_blocksize);
  ------------------
  |  |  141|    321|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
   94|    321|	to->sb_dblocks = be64_to_cpu(from->sb_dblocks);
  ------------------
  |  |  142|    321|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
   95|    321|	to->sb_rblocks = be64_to_cpu(from->sb_rblocks);
  ------------------
  |  |  142|    321|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
   96|    321|	to->sb_rextents = be64_to_cpu(from->sb_rextents);
  ------------------
  |  |  142|    321|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
   97|    321|	to->sb_logstart = be64_to_cpu(from->sb_logstart);
  ------------------
  |  |  142|    321|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
   98|    321|	to->sb_rootino = be64_to_cpu(from->sb_rootino);
  ------------------
  |  |  142|    321|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
   99|    321|	to->sb_rbmino = be64_to_cpu(from->sb_rbmino);
  ------------------
  |  |  142|    321|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  100|    321|	to->sb_rsumino = be64_to_cpu(from->sb_rsumino);
  ------------------
  |  |  142|    321|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  101|    321|	to->sb_rextsize = be32_to_cpu(from->sb_rextsize);
  ------------------
  |  |  141|    321|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  102|    321|	to->sb_agblocks = be32_to_cpu(from->sb_agblocks);
  ------------------
  |  |  141|    321|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  103|    321|	to->sb_agcount = be32_to_cpu(from->sb_agcount);
  ------------------
  |  |  141|    321|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  104|    321|	to->sb_rbmblocks = be32_to_cpu(from->sb_rbmblocks);
  ------------------
  |  |  141|    321|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  105|    321|	to->sb_logblocks = be32_to_cpu(from->sb_logblocks);
  ------------------
  |  |  141|    321|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  106|    321|	to->sb_versionnum = be16_to_cpu(from->sb_versionnum);
  ------------------
  |  |  140|    321|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  107|    321|	to->sb_sectsize = be16_to_cpu(from->sb_sectsize);
  ------------------
  |  |  140|    321|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  108|    321|	to->sb_inodesize = be16_to_cpu(from->sb_inodesize);
  ------------------
  |  |  140|    321|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  109|    321|	to->sb_inopblock = be16_to_cpu(from->sb_inopblock);
  ------------------
  |  |  140|    321|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  110|    321|	to->sb_blocklog = from->sb_blocklog;
  111|    321|	to->sb_sectlog = from->sb_sectlog;
  112|    321|	to->sb_inodelog = from->sb_inodelog;
  113|    321|	to->sb_inopblog = from->sb_inopblog;
  114|    321|	to->sb_agblklog = from->sb_agblklog;
  115|    321|	to->sb_rextslog = from->sb_rextslog;
  116|    321|	to->sb_inprogress = from->sb_inprogress;
  117|    321|	to->sb_imax_pct = from->sb_imax_pct;
  118|    321|	to->sb_icount = be64_to_cpu(from->sb_icount);
  ------------------
  |  |  142|    321|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  119|    321|	to->sb_ifree = be64_to_cpu(from->sb_ifree);
  ------------------
  |  |  142|    321|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  120|    321|	to->sb_fdblocks = be64_to_cpu(from->sb_fdblocks);
  ------------------
  |  |  142|    321|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  121|       |	to->sb_frextents = be64_to_cpu(from->sb_frextents);
  ------------------
  |  |  142|    321|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  122|    321|}

ext.c:probe_jbd:
  256|    802|{
  257|    802|	struct ext2_super_block *es;
  258|    802|	uint32_t fi;
  259|       |
  260|    802|	es = ext_get_super(pr, NULL, &fi, NULL);
  261|    802|	if (!es)
  ------------------
  |  Branch (261:6): [True: 656, False: 146]
  ------------------
  262|    656|		return errno ? -errno : 1;
  ------------------
  |  Branch (262:10): [True: 0, False: 656]
  ------------------
  263|    146|	if (!(fi & EXT3_FEATURE_INCOMPAT_JOURNAL_DEV))
  ------------------
  |  |  112|    146|#define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV	0x0008
  ------------------
  |  Branch (263:6): [True: 113, False: 33]
  ------------------
  264|    113|		return 1;
  265|       |
  266|     33|	ext_get_info(pr, 2, es);
  267|     33|	blkid_probe_set_uuid_as(pr, es->s_uuid, "LOGUUID");
  268|       |
  269|     33|	return 0;
  270|    146|}
ext.c:ext_get_super:
  150|  4.01k|{
  151|  4.01k|	struct ext2_super_block *es;
  152|       |
  153|  4.01k|	es = (struct ext2_super_block *)
  154|  4.01k|			blkid_probe_get_buffer(pr, EXT_SB_OFF, sizeof(struct ext2_super_block));
  ------------------
  |  |   85|  4.01k|#define EXT_SB_OFF				0x400
  ------------------
  155|  4.01k|	if (!es)
  ------------------
  |  Branch (155:6): [True: 0, False: 4.01k]
  ------------------
  156|      0|		return NULL;
  157|  4.01k|	if (le32_to_cpu(es->s_feature_ro_compat) & EXT4_FEATURE_RO_COMPAT_METADATA_CSUM) {
  ------------------
  |  |  137|  4.01k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              	if (le32_to_cpu(es->s_feature_ro_compat) & EXT4_FEATURE_RO_COMPAT_METADATA_CSUM) {
  ------------------
  |  |  107|  4.01k|#define EXT4_FEATURE_RO_COMPAT_METADATA_CSUM	0x0400
  ------------------
  |  Branch (157:6): [True: 2.45k, False: 1.56k]
  ------------------
  158|  2.45k|		uint32_t csum = crc32c(~0, es, offsetof(struct ext2_super_block, s_checksum));
  159|       |		/*
  160|       |		 * A read of the superblock can race with other updates to the
  161|       |		 * same superblock.  In the unlikely event that this occurs and
  162|       |		 * we see a checksum failure, re-read the superblock with
  163|       |		 * O_DIRECT to ensure that it's consistent.  If it _still_ fails
  164|       |		 * then declare a checksum mismatch.
  165|       |		 */
  166|  2.45k|		if (!blkid_probe_verify_csum(pr, csum, le32_to_cpu(es->s_checksum))) {
  ------------------
  |  |  137|  2.45k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (166:7): [True: 2.44k, False: 5]
  ------------------
  167|  2.44k|#ifdef O_DIRECT
  168|  2.44k|			if (blkid_probe_reset_buffers(pr))
  ------------------
  |  Branch (168:8): [True: 0, False: 2.44k]
  ------------------
  169|      0|				return NULL;
  170|       |
  171|  2.44k|			es = (struct ext2_super_block *)
  172|  2.44k|			    blkid_probe_get_buffer_direct(pr, EXT_SB_OFF, sizeof(struct ext2_super_block));
  ------------------
  |  |   85|  2.44k|#define EXT_SB_OFF				0x400
  ------------------
  173|  2.44k|			if (!es)
  ------------------
  |  Branch (173:8): [True: 0, False: 2.44k]
  ------------------
  174|      0|				return NULL;
  175|       |
  176|  2.44k|			csum = crc32c(~0, es, offsetof(struct ext2_super_block, s_checksum));
  177|  2.44k|			if (!blkid_probe_verify_csum(pr, csum, le32_to_cpu(es->s_checksum)))
  ------------------
  |  |  137|  2.44k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (177:8): [True: 2.44k, False: 0]
  ------------------
  178|  2.44k|				return NULL;
  179|       |#else
  180|       |			return NULL;
  181|       |#endif
  182|  2.44k|		}
  183|  2.45k|	} else {
  184|       |		/*
  185|       |		 * For legacy fs without checksum, additionally verify the
  186|       |		 * block size to reduce false positive. Currently max allowed
  187|       |		 * block size is 64KiB (s_log_block_size <= 6), check for 256
  188|       |		 * to be more future proof.
  189|       |		 */
  190|  1.56k|		if (le32_to_cpu(es->s_log_block_size) >= 256)
  ------------------
  |  |  137|  1.56k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (190:7): [True: 835, False: 725]
  ------------------
  191|    835|			return NULL;
  192|  1.56k|	}
  193|    730|	if (fc)
  ------------------
  |  Branch (193:6): [True: 584, False: 146]
  ------------------
  194|    584|		*fc = le32_to_cpu(es->s_feature_compat);
  ------------------
  |  |  137|    584|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  195|    730|	if (fi)
  ------------------
  |  Branch (195:6): [True: 730, False: 0]
  ------------------
  196|    730|		*fi = le32_to_cpu(es->s_feature_incompat);
  ------------------
  |  |  137|    730|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  197|    730|	if (frc)
  ------------------
  |  Branch (197:6): [True: 584, False: 146]
  ------------------
  198|    584|		*frc = le32_to_cpu(es->s_feature_ro_compat);
  ------------------
  |  |  137|    584|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  199|       |
  200|    730|	return es;
  201|  4.01k|}
ext.c:ext_get_info:
  204|    159|{
  205|    159|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
  206|    159|	uint32_t s_feature_incompat = le32_to_cpu(es->s_feature_incompat);
  ------------------
  |  |  137|    159|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  207|       |
  208|    159|	DBG(PROBE, ul_debug("ext2_sb.compat = %08X:%08X:%08X",
  ------------------
  |  |  358|    159|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|    159|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|    159|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|    159|	do { \
  |  |  |  |  |  |  |  |   76|    159|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  351|    159|#define BLKID_DEBUG_PROBE	(1 << 9)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|    159|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 159]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|    159|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 159]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    159|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|    159|		x; \
  |  |  |  |  |  |   85|    159|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  209|    159|		   le32_to_cpu(es->s_feature_compat),
  210|    159|		   s_feature_incompat,
  211|    159|		   le32_to_cpu(es->s_feature_ro_compat)));
  212|       |
  213|    159|	if (*es->s_volume_name != '\0')
  ------------------
  |  Branch (213:6): [True: 94, False: 65]
  ------------------
  214|     94|		blkid_probe_set_label(pr, (unsigned char *) es->s_volume_name,
  215|     94|					sizeof(es->s_volume_name));
  216|    159|	blkid_probe_set_uuid(pr, es->s_uuid);
  217|       |
  218|    159|	if (le32_to_cpu(es->s_feature_compat) & EXT3_FEATURE_COMPAT_HAS_JOURNAL)
  ------------------
  |  |  137|    159|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              	if (le32_to_cpu(es->s_feature_compat) & EXT3_FEATURE_COMPAT_HAS_JOURNAL)
  ------------------
  |  |   97|    159|#define EXT3_FEATURE_COMPAT_HAS_JOURNAL		0x0004
  ------------------
  |  Branch (218:6): [True: 79, False: 80]
  ------------------
  219|     79|		blkid_probe_set_uuid_as(pr, es->s_journal_uuid, "EXT_JOURNAL");
  220|       |
  221|    159|	if (ver != 2 && (chn->flags & BLKID_SUBLKS_SECTYPE) &&
  ------------------
  |  |  316|    101|#define BLKID_SUBLKS_SECTYPE	(1 << 6) /* define compatible fs type (second type) */
  ------------------
  |  Branch (221:6): [True: 101, False: 58]
  |  Branch (221:18): [True: 0, False: 101]
  ------------------
  222|      0|	    ((s_feature_incompat & EXT2_FEATURE_INCOMPAT_UNSUPPORTED) == 0))
  ------------------
  |  |  124|      0|#define EXT2_FEATURE_INCOMPAT_UNSUPPORTED	~EXT2_FEATURE_INCOMPAT_SUPP
  |  |  ------------------
  |  |  |  |  122|      0|#define EXT2_FEATURE_INCOMPAT_SUPP	(EXT2_FEATURE_INCOMPAT_FILETYPE| \
  |  |  |  |  ------------------
  |  |  |  |  |  |  110|      0|#define EXT2_FEATURE_INCOMPAT_FILETYPE		0x0002
  |  |  |  |  ------------------
  |  |  |  |  123|      0|					 EXT2_FEATURE_INCOMPAT_META_BG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  113|      0|#define EXT2_FEATURE_INCOMPAT_META_BG		0x0010
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (222:6): [True: 0, False: 0]
  ------------------
  223|      0|		blkid_probe_set_value(pr, "SEC_TYPE",
  224|      0|				(unsigned char *) "ext2",
  225|      0|				sizeof("ext2"));
  226|       |
  227|    159|	blkid_probe_sprintf_version(pr, "%u.%u",
  228|    159|		le32_to_cpu(es->s_rev_level),
  ------------------
  |  |  137|    159|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  229|    159|		le16_to_cpu(es->s_minor_rev_level));
  ------------------
  |  |  136|    159|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  230|       |
  231|    159|	uint32_t block_size = 0;
  232|    159|	if (le32_to_cpu(es->s_log_block_size) < 32){
  ------------------
  |  |  137|    159|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (232:6): [True: 124, False: 35]
  ------------------
  233|    124|		block_size = 1024U << le32_to_cpu(es->s_log_block_size);
  ------------------
  |  |  137|    124|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  234|    124|		blkid_probe_set_fsblocksize(pr, block_size);
  235|    124|		blkid_probe_set_block_size(pr, block_size);
  236|    124|	}
  237|       |
  238|    159|	uint64_t fslastblock = le32_to_cpu(es->s_blocks_count) |
  ------------------
  |  |  137|    159|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  239|    159|		((s_feature_incompat & EXT4_FEATURE_INCOMPAT_64BIT) ?
  ------------------
  |  |  115|    159|#define EXT4_FEATURE_INCOMPAT_64BIT		0x0080
  ------------------
  |  Branch (239:4): [True: 21, False: 138]
  ------------------
  240|    138|		(uint64_t) le32_to_cpu(es->s_blocks_count_hi) << 32 : 0);
  ------------------
  |  |  137|     21|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  241|    159|	blkid_probe_set_fslastblock(pr, fslastblock);
  242|       |
  243|       |	/* The total number of blocks is taken without subtraction of overhead
  244|       |	 * (journal, metadata). The ext4 has non-trivial overhead calculation
  245|       |	 * viz. ext4_calculate_overhead(). Therefore, the FSSIZE would show number
  246|       |	 * slightly higher than the real value (for example, calculated via
  247|       |	 * statfs()).
  248|       |	 */
  249|       |	uint64_t fssize = (uint64_t) block_size * le32_to_cpu(es->s_blocks_count);
  ------------------
  |  |  137|    159|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  250|    159|	blkid_probe_set_fssize(pr, fssize);
  251|    159|}
ext.c:probe_ext2:
  274|    802|{
  275|    802|	struct ext2_super_block *es;
  276|    802|	uint32_t fc, frc, fi;
  277|       |
  278|    802|	es = ext_get_super(pr, &fc, &fi, &frc);
  279|    802|	if (!es)
  ------------------
  |  Branch (279:6): [True: 656, False: 146]
  ------------------
  280|    656|		return errno ? -errno : 1;
  ------------------
  |  Branch (280:10): [True: 0, False: 656]
  ------------------
  281|       |
  282|       |	/* Distinguish between ext3 and ext2 */
  283|    146|	if (fc & EXT3_FEATURE_COMPAT_HAS_JOURNAL)
  ------------------
  |  |   97|    146|#define EXT3_FEATURE_COMPAT_HAS_JOURNAL		0x0004
  ------------------
  |  Branch (283:6): [True: 72, False: 74]
  ------------------
  284|     72|		return 1;
  285|       |
  286|       |	/* Any features which ext2 doesn't understand */
  287|     74|	if ((frc & EXT2_FEATURE_RO_COMPAT_UNSUPPORTED) ||
  ------------------
  |  |  125|     74|#define EXT2_FEATURE_RO_COMPAT_UNSUPPORTED	~EXT2_FEATURE_RO_COMPAT_SUPP
  |  |  ------------------
  |  |  |  |  119|     74|#define EXT2_FEATURE_RO_COMPAT_SUPP	(EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \
  |  |  |  |  ------------------
  |  |  |  |  |  |  100|     74|#define EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER	0x0001
  |  |  |  |  ------------------
  |  |  |  |  120|     74|					 EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \
  |  |  |  |  ------------------
  |  |  |  |  |  |  101|     74|#define EXT2_FEATURE_RO_COMPAT_LARGE_FILE	0x0002
  |  |  |  |  ------------------
  |  |  |  |  121|     74|					 EXT2_FEATURE_RO_COMPAT_BTREE_DIR)
  |  |  |  |  ------------------
  |  |  |  |  |  |  102|     74|#define EXT2_FEATURE_RO_COMPAT_BTREE_DIR	0x0004
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (287:6): [True: 37, False: 37]
  ------------------
  288|     37|	    (fi  & EXT2_FEATURE_INCOMPAT_UNSUPPORTED))
  ------------------
  |  |  124|     37|#define EXT2_FEATURE_INCOMPAT_UNSUPPORTED	~EXT2_FEATURE_INCOMPAT_SUPP
  |  |  ------------------
  |  |  |  |  122|     37|#define EXT2_FEATURE_INCOMPAT_SUPP	(EXT2_FEATURE_INCOMPAT_FILETYPE| \
  |  |  |  |  ------------------
  |  |  |  |  |  |  110|     37|#define EXT2_FEATURE_INCOMPAT_FILETYPE		0x0002
  |  |  |  |  ------------------
  |  |  |  |  123|     37|					 EXT2_FEATURE_INCOMPAT_META_BG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  113|     37|#define EXT2_FEATURE_INCOMPAT_META_BG		0x0010
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (288:6): [True: 12, False: 25]
  ------------------
  289|     49|		return 1;
  290|       |
  291|     25|	ext_get_info(pr, 2, es);
  292|     25|	return 0;
  293|     74|}
ext.c:probe_ext3:
  297|    802|{
  298|    802|	struct ext2_super_block *es;
  299|    802|	uint32_t fc, frc, fi;
  300|       |
  301|    802|	es = ext_get_super(pr, &fc, &fi, &frc);
  302|    802|	if (!es)
  ------------------
  |  Branch (302:6): [True: 656, False: 146]
  ------------------
  303|    656|		return errno ? -errno : 1;
  ------------------
  |  Branch (303:10): [True: 0, False: 656]
  ------------------
  304|       |
  305|       |	/* ext3 requires journal */
  306|    146|	if (!(fc & EXT3_FEATURE_COMPAT_HAS_JOURNAL))
  ------------------
  |  |   97|    146|#define EXT3_FEATURE_COMPAT_HAS_JOURNAL		0x0004
  ------------------
  |  Branch (306:6): [True: 74, False: 72]
  ------------------
  307|     74|		return 1;
  308|       |
  309|       |	/* Any features which ext3 doesn't understand */
  310|     72|	if ((frc & EXT3_FEATURE_RO_COMPAT_UNSUPPORTED) ||
  ------------------
  |  |  134|     72|#define EXT3_FEATURE_RO_COMPAT_UNSUPPORTED	~EXT3_FEATURE_RO_COMPAT_SUPP
  |  |  ------------------
  |  |  |  |  127|     72|#define EXT3_FEATURE_RO_COMPAT_SUPP	(EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \
  |  |  |  |  ------------------
  |  |  |  |  |  |  100|     72|#define EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER	0x0001
  |  |  |  |  ------------------
  |  |  |  |  128|     72|					 EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \
  |  |  |  |  ------------------
  |  |  |  |  |  |  101|     72|#define EXT2_FEATURE_RO_COMPAT_LARGE_FILE	0x0002
  |  |  |  |  ------------------
  |  |  |  |  129|     72|					 EXT2_FEATURE_RO_COMPAT_BTREE_DIR)
  |  |  |  |  ------------------
  |  |  |  |  |  |  102|     72|#define EXT2_FEATURE_RO_COMPAT_BTREE_DIR	0x0004
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (310:6): [True: 55, False: 17]
  ------------------
  311|     17|	    (fi  & EXT3_FEATURE_INCOMPAT_UNSUPPORTED))
  ------------------
  |  |  133|     17|#define EXT3_FEATURE_INCOMPAT_UNSUPPORTED	~EXT3_FEATURE_INCOMPAT_SUPP
  |  |  ------------------
  |  |  |  |  130|     17|#define EXT3_FEATURE_INCOMPAT_SUPP	(EXT2_FEATURE_INCOMPAT_FILETYPE| \
  |  |  |  |  ------------------
  |  |  |  |  |  |  110|     17|#define EXT2_FEATURE_INCOMPAT_FILETYPE		0x0002
  |  |  |  |  ------------------
  |  |  |  |  131|     17|					 EXT3_FEATURE_INCOMPAT_RECOVER| \
  |  |  |  |  ------------------
  |  |  |  |  |  |  111|     17|#define EXT3_FEATURE_INCOMPAT_RECOVER		0x0004
  |  |  |  |  ------------------
  |  |  |  |  132|     17|					 EXT2_FEATURE_INCOMPAT_META_BG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  113|     17|#define EXT2_FEATURE_INCOMPAT_META_BG		0x0010
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (311:6): [True: 10, False: 7]
  ------------------
  312|     65|		return 1;
  313|       |
  314|      7|	ext_get_info(pr, 3, es);
  315|      7|	return 0;
  316|     72|}
ext.c:probe_ext4:
  342|    802|{
  343|    802|	struct ext2_super_block *es;
  344|    802|	uint32_t fc, frc, fi;
  345|       |
  346|    802|	es = ext_get_super(pr, &fc, &fi, &frc);
  347|    802|	if (!es)
  ------------------
  |  Branch (347:6): [True: 656, False: 146]
  ------------------
  348|    656|		return errno ? -errno : 1;
  ------------------
  |  Branch (348:10): [True: 0, False: 656]
  ------------------
  349|       |
  350|       |	/* Distinguish from jbd */
  351|    146|	if (fi & EXT3_FEATURE_INCOMPAT_JOURNAL_DEV)
  ------------------
  |  |  112|    146|#define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV	0x0008
  ------------------
  |  Branch (351:6): [True: 33, False: 113]
  ------------------
  352|     33|		return 1;
  353|       |
  354|       |	/* Ext4 has at least one feature which ext3 doesn't understand */
  355|    113|	if (!(frc & EXT3_FEATURE_RO_COMPAT_UNSUPPORTED) &&
  ------------------
  |  |  134|    113|#define EXT3_FEATURE_RO_COMPAT_UNSUPPORTED	~EXT3_FEATURE_RO_COMPAT_SUPP
  |  |  ------------------
  |  |  |  |  127|    113|#define EXT3_FEATURE_RO_COMPAT_SUPP	(EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \
  |  |  |  |  ------------------
  |  |  |  |  |  |  100|    113|#define EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER	0x0001
  |  |  |  |  ------------------
  |  |  |  |  128|    113|					 EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \
  |  |  |  |  ------------------
  |  |  |  |  |  |  101|    113|#define EXT2_FEATURE_RO_COMPAT_LARGE_FILE	0x0002
  |  |  |  |  ------------------
  |  |  |  |  129|    113|					 EXT2_FEATURE_RO_COMPAT_BTREE_DIR)
  |  |  |  |  ------------------
  |  |  |  |  |  |  102|    113|#define EXT2_FEATURE_RO_COMPAT_BTREE_DIR	0x0004
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (355:6): [True: 44, False: 69]
  ------------------
  356|     44|	    !(fi  & EXT3_FEATURE_INCOMPAT_UNSUPPORTED))
  ------------------
  |  |  133|     44|#define EXT3_FEATURE_INCOMPAT_UNSUPPORTED	~EXT3_FEATURE_INCOMPAT_SUPP
  |  |  ------------------
  |  |  |  |  130|     44|#define EXT3_FEATURE_INCOMPAT_SUPP	(EXT2_FEATURE_INCOMPAT_FILETYPE| \
  |  |  |  |  ------------------
  |  |  |  |  |  |  110|     44|#define EXT2_FEATURE_INCOMPAT_FILETYPE		0x0002
  |  |  |  |  ------------------
  |  |  |  |  131|     44|					 EXT3_FEATURE_INCOMPAT_RECOVER| \
  |  |  |  |  ------------------
  |  |  |  |  |  |  111|     44|#define EXT3_FEATURE_INCOMPAT_RECOVER		0x0004
  |  |  |  |  ------------------
  |  |  |  |  132|     44|					 EXT2_FEATURE_INCOMPAT_META_BG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  113|     44|#define EXT2_FEATURE_INCOMPAT_META_BG		0x0010
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (356:6): [True: 34, False: 10]
  ------------------
  357|     34|		return 1;
  358|       |
  359|       |	/*
  360|       |	 * If the filesystem is a OK for use by in-development
  361|       |	 * filesystem code, and ext4dev is supported or ext4 is not
  362|       |	 * supported, then don't call ourselves ext4, so we can redo
  363|       |	 * the detection and mark the filesystem as ext4dev.
  364|       |	 *
  365|       |	 * If the filesystem is marked as in use by production
  366|       |	 * filesystem, then it can only be used by ext4 and NOT by
  367|       |	 * ext4dev.
  368|       |	 */
  369|     79|	if (le32_to_cpu(es->s_flags) & EXT2_FLAGS_TEST_FILESYS)
  ------------------
  |  |  137|     79|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              	if (le32_to_cpu(es->s_flags) & EXT2_FLAGS_TEST_FILESYS)
  ------------------
  |  |   94|     79|#define EXT2_FLAGS_TEST_FILESYS		0x0004
  ------------------
  |  Branch (369:6): [True: 35, False: 44]
  ------------------
  370|     35|		return 1;
  371|       |
  372|     44|	ext_get_info(pr, 4, es);
  373|     44|	return 0;
  374|     79|}
ext.c:probe_ext4dev:
  321|    802|{
  322|    802|	struct ext2_super_block *es;
  323|    802|	uint32_t fc, frc, fi;
  324|       |
  325|    802|	es = ext_get_super(pr, &fc, &fi, &frc);
  326|    802|	if (!es)
  ------------------
  |  Branch (326:6): [True: 656, False: 146]
  ------------------
  327|    656|		return errno ? -errno : 1;
  ------------------
  |  Branch (327:10): [True: 0, False: 656]
  ------------------
  328|       |
  329|       |	/* Distinguish from jbd */
  330|    146|	if (fi & EXT3_FEATURE_INCOMPAT_JOURNAL_DEV)
  ------------------
  |  |  112|    146|#define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV	0x0008
  ------------------
  |  Branch (330:6): [True: 33, False: 113]
  ------------------
  331|     33|		return 1;
  332|       |
  333|    113|	if (!(le32_to_cpu(es->s_flags) & EXT2_FLAGS_TEST_FILESYS))
  ------------------
  |  |  137|    113|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              	if (!(le32_to_cpu(es->s_flags) & EXT2_FLAGS_TEST_FILESYS))
  ------------------
  |  |   94|    113|#define EXT2_FLAGS_TEST_FILESYS		0x0004
  ------------------
  |  Branch (333:6): [True: 63, False: 50]
  ------------------
  334|     63|		return 1;
  335|       |
  336|     50|	ext_get_info(pr, 4, es);
  337|     50|	return 0;
  338|    113|}

f2fs.c:probe_f2fs:
   87|    591|{
   88|    591|	const struct f2fs_super_block *sb;
   89|    591|	uint16_t vermaj, vermin;
   90|       |
   91|    591|	sb = blkid_probe_get_sb(pr, mag, struct f2fs_super_block);
  ------------------
  |  |  451|    591|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
   92|    591|	if (!sb)
  ------------------
  |  Branch (92:6): [True: 0, False: 591]
  ------------------
   93|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (93:10): [True: 0, False: 0]
  ------------------
   94|       |
   95|    591|	vermaj = le16_to_cpu(sb->major_ver);
  ------------------
  |  |  136|    591|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
   96|    591|	vermin = le16_to_cpu(sb->minor_ver);
  ------------------
  |  |  136|    591|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
   97|       |
   98|       |	/* For version 1.0 we cannot know the correct sb structure */
   99|    591|	if (vermaj == 1 && vermin == 0)
  ------------------
  |  Branch (99:6): [True: 10, False: 581]
  |  Branch (99:21): [True: 4, False: 6]
  ------------------
  100|      4|		return 0;
  101|       |
  102|    587|	if (!f2fs_validate_checksum(pr, mag->kboff << 10, sb))
  ------------------
  |  Branch (102:6): [True: 513, False: 74]
  ------------------
  103|    513|		return 1;
  104|       |
  105|     74|	if (*((unsigned char *) sb->volume_name))
  ------------------
  |  Branch (105:6): [True: 33, False: 41]
  ------------------
  106|     33|		blkid_probe_set_utf8label(pr, (unsigned char *) sb->volume_name,
  107|     33|						sizeof(sb->volume_name),
  108|     33|						UL_ENCODE_UTF16LE);
  109|       |
  110|     74|	blkid_probe_set_uuid(pr, sb->uuid);
  111|     74|	blkid_probe_sprintf_version(pr, "%u.%u", vermaj, vermin);
  112|       |	/* kernel requires log_blocksize == PAGE_SHIFT (usually 12),
  113|       |	 * values above 16 (64K) would overflow 1U << shift */
  114|     74|	if (le32_to_cpu(sb->log_blocksize) <= 16){
  ------------------
  |  |  137|     74|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (114:6): [True: 21, False: 53]
  ------------------
  115|     21|		uint32_t blocksize = 1U << le32_to_cpu(sb->log_blocksize);
  ------------------
  |  |  137|     21|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  116|     21|		blkid_probe_set_fsblocksize(pr, blocksize);
  117|     21|		blkid_probe_set_block_size(pr, blocksize);
  118|       |		blkid_probe_set_fssize(pr, le64_to_cpu(sb->block_count) * blocksize);
  ------------------
  |  |  138|     21|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  119|     21|	}
  120|     74|	return 0;
  121|    587|}
f2fs.c:f2fs_validate_checksum:
   61|    587|{
   62|    587|	uint32_t csum_off = le32_to_cpu(sb->checksum_offset);
  ------------------
  |  |  137|    587|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
   63|    587|	if (!csum_off)
  ------------------
  |  Branch (63:6): [True: 68, False: 519]
  ------------------
   64|     68|		return 1;
   65|    519|	if (csum_off % sizeof(uint32_t) != 0)
  ------------------
  |  Branch (65:6): [True: 373, False: 146]
  ------------------
   66|    373|		return 0;
   67|    146|	if (csum_off + sizeof(uint32_t) > 4096)
  ------------------
  |  Branch (67:6): [True: 99, False: 47]
  ------------------
   68|     99|		return 0;
   69|       |
   70|     47|	const unsigned char *csum_data = blkid_probe_get_buffer(pr,
   71|     47|			sb_off + csum_off, sizeof(uint32_t));
   72|     47|	if (!csum_data)
  ------------------
  |  Branch (72:6): [True: 0, False: 47]
  ------------------
   73|      0|		return 0;
   74|       |
   75|     47|	uint32_t expected = le32_to_cpu(*(uint32_t *) csum_data);
  ------------------
  |  |  137|     47|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
   76|       |
   77|     47|	const unsigned char *csummed = blkid_probe_get_buffer(pr, sb_off, csum_off);
   78|     47|	if (!csummed)
  ------------------
  |  Branch (78:6): [True: 0, False: 47]
  ------------------
   79|      0|		return 0;
   80|       |
   81|     47|	uint32_t csum = ul_crc32(0xF2F52010, csummed, csum_off);
   82|       |
   83|     47|	return blkid_probe_verify_csum(pr, csum, expected);
   84|     47|}

hfs.c:probe_hfs:
  156|    877|{
  157|    877|	const struct hfs_mdb	*hfs;
  158|    877|	int size;
  159|       |
  160|    877|	hfs = blkid_probe_get_sb(pr, mag, struct hfs_mdb);
  ------------------
  |  |  451|    877|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
  161|    877|	if (!hfs)
  ------------------
  |  Branch (161:6): [True: 0, False: 877]
  ------------------
  162|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (162:10): [True: 0, False: 0]
  ------------------
  163|       |
  164|    877|	if ((memcmp(hfs->embed_sig, "H+", 2) == 0) ||
  ------------------
  |  Branch (164:6): [True: 19, False: 858]
  ------------------
  165|    858|	    (memcmp(hfs->embed_sig, "HX", 2) == 0))
  ------------------
  |  Branch (165:6): [True: 90, False: 768]
  ------------------
  166|    109|		return 1;	/* Not hfs, but an embedded HFS+ */
  167|       |
  168|    768|	size = be32_to_cpu(hfs->al_blk_size);
  ------------------
  |  |  141|    768|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  169|    768|	if (!size || (size & (HFS_SECTOR_SIZE - 1))) {
  ------------------
  |  |   28|    731|#define HFS_SECTOR_SIZE         512
  ------------------
  |  Branch (169:6): [True: 37, False: 731]
  |  Branch (169:15): [True: 713, False: 18]
  ------------------
  170|    750|		DBG(LOWPROBE, ul_debug("\tbad allocation size - ignore"));
  ------------------
  |  |  358|    750|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|    750|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|    750|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|    750|	do { \
  |  |  |  |  |  |  |  |   76|    750|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|    750|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|    750|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 750]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|    750|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 750]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    750|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|    750|		x; \
  |  |  |  |  |  |   85|    750|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  171|    750|		return 1;
  172|    750|	}
  173|       |
  174|     18|	hfs_set_uuid(pr, hfs->finder_info.id, sizeof(hfs->finder_info.id));
  175|       |
  176|     18|	size = hfs->label_len;
  177|     18|	if ((size_t) size > sizeof(hfs->label))
  ------------------
  |  Branch (177:6): [True: 9, False: 9]
  ------------------
  178|      9|		size = sizeof(hfs->label);
  179|     18|	blkid_probe_set_label(pr, hfs->label, size);
  180|     18|	return 0;
  181|    768|}
hfs.c:hfs_set_uuid:
  134|    154|{
  135|    154|	static unsigned char const hash_init[UL_MD5LENGTH] = {
  136|    154|		0xb3, 0xe2, 0x0f, 0x39, 0xf2, 0x92, 0x11, 0xd6,
  137|    154|		0x97, 0xa4, 0x00, 0x30, 0x65, 0x43, 0xec, 0xac
  138|    154|	};
  139|    154|	unsigned char uuid[UL_MD5LENGTH];
  140|    154|	struct UL_MD5Context md5c;
  141|       |
  142|    154|	if (memcmp(hfs_info, "\0\0\0\0\0\0\0\0", len) == 0)
  ------------------
  |  Branch (142:6): [True: 33, False: 121]
  ------------------
  143|     33|		return -1;
  144|       |
  145|    121|	ul_MD5Init(&md5c);
  146|    121|	ul_MD5Update(&md5c, hash_init, UL_MD5LENGTH);
  ------------------
  |  |   10|    121|#define UL_MD5LENGTH 16
  ------------------
  147|    121|	ul_MD5Update(&md5c, hfs_info, len);
  148|    121|	ul_MD5Final(uuid, &md5c);
  149|       |
  150|    121|	uuid[6] = 0x30 | (uuid[6] & 0x0f);
  151|    121|	uuid[8] = 0x80 | (uuid[8] & 0x3f);
  152|    121|	return blkid_probe_set_uuid(pr, uuid);
  153|    154|}
hfs.c:probe_hfsplus:
  184|  1.14k|{
  185|  1.14k|	struct hfsplus_extent extents[HFSPLUS_EXTENT_COUNT];
  186|  1.14k|	const struct hfsplus_bnode_descriptor *descr;
  187|  1.14k|	const struct hfsplus_bheader_record *bnode;
  188|  1.14k|	const struct hfsplus_catalog_key *key;
  189|  1.14k|	const struct hfsplus_vol_header *hfsplus;
  190|  1.14k|	const struct hfs_mdb *sbd;
  191|  1.14k|	unsigned int alloc_block_size;
  192|  1.14k|	unsigned int alloc_first_block;
  193|  1.14k|	unsigned int embed_first_block;
  194|  1.14k|	uint64_t off = 0;
  195|  1.14k|	unsigned int blocksize;
  196|  1.14k|	unsigned int cat_block;
  197|  1.14k|	unsigned int ext_block_start = 0;
  198|  1.14k|	unsigned int ext_block_count;
  199|  1.14k|	unsigned int record_count;
  200|  1.14k|	unsigned int leaf_node_head;
  201|  1.14k|	unsigned int leaf_node_count;
  202|  1.14k|	unsigned int leaf_node_size;
  203|  1.14k|	uint64_t leaf_block;
  204|  1.14k|	int ext;
  205|  1.14k|	uint64_t leaf_off;
  206|  1.14k|	const unsigned char *buf;
  207|       |
  208|  1.14k|	sbd = blkid_probe_get_sb(pr, mag, struct hfs_mdb);
  ------------------
  |  |  451|  1.14k|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
  209|  1.14k|	if (!sbd)
  ------------------
  |  Branch (209:6): [True: 0, False: 1.14k]
  ------------------
  210|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (210:10): [True: 0, False: 0]
  ------------------
  211|       |
  212|       |	/* Check for a HFS+ volume embedded in a HFS volume */
  213|  1.14k|	if (memcmp(sbd->signature, "BD", 2) == 0) {
  ------------------
  |  Branch (213:6): [True: 877, False: 266]
  ------------------
  214|    877|		if ((memcmp(sbd->embed_sig, "H+", 2) != 0) &&
  ------------------
  |  Branch (214:7): [True: 858, False: 19]
  ------------------
  215|    858|		    (memcmp(sbd->embed_sig, "HX", 2) != 0))
  ------------------
  |  Branch (215:7): [True: 768, False: 90]
  ------------------
  216|       |			/* This must be an HFS volume, so fail */
  217|    768|			return 1;
  218|       |
  219|    109|		alloc_block_size = be32_to_cpu(sbd->al_blk_size);
  ------------------
  |  |  141|    109|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  220|    109|		if (alloc_block_size < HFSPLUS_SECTOR_SIZE ||
  ------------------
  |  |  131|    218|#define HFSPLUS_SECTOR_SIZE        512
  ------------------
  |  Branch (220:7): [True: 32, False: 77]
  ------------------
  221|     77|		    alloc_block_size % HFSPLUS_SECTOR_SIZE)
  ------------------
  |  |  131|     77|#define HFSPLUS_SECTOR_SIZE        512
  ------------------
  |  Branch (221:7): [True: 31, False: 46]
  ------------------
  222|     63|		    return 1;
  223|       |
  224|     46|		alloc_first_block = be16_to_cpu(sbd->al_bl_st);
  ------------------
  |  |  140|     46|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  225|     46|		embed_first_block = be16_to_cpu(sbd->embed_startblock);
  ------------------
  |  |  140|     46|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  226|     46|		off = ((uint64_t) alloc_first_block * 512) +
  227|     46|			((uint64_t) embed_first_block * alloc_block_size);
  228|       |
  229|     46|		buf = blkid_probe_get_buffer(pr,
  230|     46|				off + (mag->kboff * 1024),
  231|     46|				sizeof(struct hfsplus_vol_header));
  232|     46|		hfsplus = (const struct hfsplus_vol_header *) buf;
  233|       |
  234|     46|	} else
  235|    266|		hfsplus = blkid_probe_get_sb(pr, mag,
  ------------------
  |  |  451|    266|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
  236|  1.14k|				struct hfsplus_vol_header);
  237|       |
  238|    312|	if (!hfsplus)
  ------------------
  |  Branch (238:6): [True: 11, False: 301]
  ------------------
  239|     11|		return errno ? -errno : 1;
  ------------------
  |  Branch (239:10): [True: 0, False: 11]
  ------------------
  240|       |
  241|    301|	if ((memcmp(hfsplus->signature, "H+", 2) != 0) &&
  ------------------
  |  Branch (241:6): [True: 276, False: 25]
  ------------------
  242|    276|	    (memcmp(hfsplus->signature, "HX", 2) != 0))
  ------------------
  |  Branch (242:6): [True: 35, False: 241]
  ------------------
  243|     35|		return 1;
  244|       |
  245|       |	/* Verify blocksize is initialized */
  246|    266|	blocksize = be32_to_cpu(hfsplus->blocksize);
  ------------------
  |  |  141|    266|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  247|    266|	if (blocksize < HFSPLUS_SECTOR_SIZE || !is_power_of_2(blocksize))
  ------------------
  |  |  131|    532|#define HFSPLUS_SECTOR_SIZE        512
  ------------------
  |  Branch (247:6): [True: 29, False: 237]
  |  Branch (247:41): [True: 43, False: 194]
  ------------------
  248|     72|		return 1;
  249|       |
  250|       |	/* Save extends (hfsplus buffer may be later overwritten) */
  251|    194|	memcpy(extents, hfsplus->cat_file.extents, sizeof(extents));
  252|       |
  253|       |	/* Make sure start_block is properly initialized */
  254|    194|	cat_block = be32_to_cpu(extents[0].start_block);
  ------------------
  |  |  141|    194|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  255|    194|	if (off + ((uint64_t) cat_block * blocksize) > pr->size)
  ------------------
  |  Branch (255:6): [True: 58, False: 136]
  ------------------
  256|     58|		return 1;
  257|       |
  258|    136|	hfs_set_uuid(pr, hfsplus->finder_info.id, sizeof(hfsplus->finder_info.id));
  259|       |
  260|    136|	blkid_probe_set_fsblocksize(pr, blocksize);
  261|    136|	blkid_probe_set_block_size(pr, blocksize);
  262|       |
  263|    136|	buf = blkid_probe_get_buffer(pr,
  264|    136|			off + ((uint64_t) cat_block * blocksize), 0x2000);
  265|    136|	if (!buf)
  ------------------
  |  Branch (265:6): [True: 1, False: 135]
  ------------------
  266|      1|		return errno ? -errno : 0;
  ------------------
  |  Branch (266:10): [True: 0, False: 1]
  ------------------
  267|       |
  268|    135|	bnode = (struct hfsplus_bheader_record *)
  269|    135|		&buf[sizeof(struct hfsplus_bnode_descriptor)];
  270|       |
  271|    135|	leaf_node_head = be32_to_cpu(bnode->leaf_head);
  ------------------
  |  |  141|    135|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  272|    135|	leaf_node_size = be16_to_cpu(bnode->node_size);
  ------------------
  |  |  140|    135|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  273|    135|	leaf_node_count = be32_to_cpu(bnode->leaf_count);
  ------------------
  |  |  141|    135|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  274|       |
  275|    135|	if (leaf_node_size < sizeof(struct hfsplus_bnode_descriptor) +
  ------------------
  |  Branch (275:6): [True: 14, False: 121]
  ------------------
  276|    135|	    sizeof(struct hfsplus_catalog_key) || leaf_node_count == 0)
  ------------------
  |  Branch (276:44): [True: 5, False: 116]
  ------------------
  277|     19|		return 0;
  278|       |
  279|    116|	leaf_block = ((uint64_t) leaf_node_head * leaf_node_size) / blocksize;
  280|       |
  281|       |	/* get physical location */
  282|    456|	for (ext = 0; ext < HFSPLUS_EXTENT_COUNT; ext++) {
  ------------------
  |  |   94|    456|#define HFSPLUS_EXTENT_COUNT		8
  ------------------
  |  Branch (282:16): [True: 429, False: 27]
  ------------------
  283|    429|		ext_block_start = be32_to_cpu(extents[ext].start_block);
  ------------------
  |  |  141|    429|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  284|    429|		ext_block_count = be32_to_cpu(extents[ext].block_count);
  ------------------
  |  |  141|    429|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  285|    429|		if (ext_block_count == 0)
  ------------------
  |  Branch (285:7): [True: 28, False: 401]
  ------------------
  286|     28|			return 0;
  287|       |
  288|       |		/* this is our extent */
  289|    401|		if (leaf_block < ext_block_count)
  ------------------
  |  Branch (289:7): [True: 61, False: 340]
  ------------------
  290|     61|			break;
  291|       |
  292|    340|		leaf_block -= ext_block_count;
  293|    340|	}
  294|     88|	if (ext == HFSPLUS_EXTENT_COUNT)
  ------------------
  |  |   94|     88|#define HFSPLUS_EXTENT_COUNT		8
  ------------------
  |  Branch (294:6): [True: 27, False: 61]
  ------------------
  295|     27|		return 0;
  296|       |
  297|     61|	leaf_off = ((uint64_t) ext_block_start + leaf_block) * blocksize;
  298|       |
  299|     61|	buf = blkid_probe_get_buffer(pr,
  300|     61|				(uint64_t) off + leaf_off,
  301|     61|				leaf_node_size);
  302|     61|	if (!buf)
  ------------------
  |  Branch (302:6): [True: 17, False: 44]
  ------------------
  303|     17|		return errno ? -errno : 0;
  ------------------
  |  Branch (303:10): [True: 0, False: 17]
  ------------------
  304|       |
  305|     44|	descr = (struct hfsplus_bnode_descriptor *) buf;
  306|     44|	record_count = be16_to_cpu(descr->num_recs);
  ------------------
  |  |  140|     44|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  307|     44|	if (record_count == 0)
  ------------------
  |  Branch (307:6): [True: 7, False: 37]
  ------------------
  308|      7|		return 0;
  309|       |
  310|     37|	if (descr->type != HFS_NODE_LEAF)
  ------------------
  |  |   61|     37|#define HFS_NODE_LEAF			0xff
  ------------------
  |  Branch (310:6): [True: 12, False: 25]
  ------------------
  311|     12|		return 0;
  312|       |
  313|     25|	key = (struct hfsplus_catalog_key *)
  314|     25|		&buf[sizeof(struct hfsplus_bnode_descriptor)];
  315|       |
  316|     25|	if (be32_to_cpu(key->parent_id) != HFSPLUS_POR_CNID ||
  ------------------
  |  |  141|     25|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
              	if (be32_to_cpu(key->parent_id) != HFSPLUS_POR_CNID ||
  ------------------
  |  |   62|     50|#define HFSPLUS_POR_CNID		1
  ------------------
  |  Branch (316:6): [True: 23, False: 2]
  ------------------
  317|      2|	    be16_to_cpu(key->unicode_len) > 255)
  ------------------
  |  |  140|      2|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  |  Branch (317:6): [True: 1, False: 1]
  ------------------
  318|     24|		return 0;
  319|       |
  320|      1|	blkid_probe_set_utf8label(pr, key->unicode,
  321|       |			be16_to_cpu(key->unicode_len) * 2,
  ------------------
  |  |  140|      1|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  322|      1|			UL_ENCODE_UTF16BE);
  323|      1|	return 0;
  324|     25|}

highpoint_raid.c:probe_highpoint45x:
   27|  5.99k|{
   28|  5.99k|	struct hpt45x_metadata *hpt;
   29|  5.99k|	uint64_t off;
   30|  5.99k|	uint32_t magic;
   31|       |
   32|  5.99k|	if (!S_ISREG(pr->mode) && !blkid_probe_is_wholedisk(pr))
  ------------------
  |  Branch (32:6): [True: 0, False: 5.99k]
  |  Branch (32:28): [True: 0, False: 0]
  ------------------
   33|      0|		return 1;
   34|       |
   35|  5.99k|	off = ((pr->size / 0x200) - 11) * 0x200;
   36|  5.99k|	hpt = (struct hpt45x_metadata *)
   37|  5.99k|			blkid_probe_get_buffer(pr,
   38|  5.99k|					off,
   39|  5.99k|					sizeof(struct hpt45x_metadata));
   40|  5.99k|	if (!hpt)
  ------------------
  |  Branch (40:6): [True: 0, False: 5.99k]
  ------------------
   41|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (41:10): [True: 0, False: 0]
  ------------------
   42|  5.99k|	magic = le32_to_cpu(hpt->magic);
  ------------------
  |  |  137|  5.99k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
   43|  5.99k|	if (magic != HPT45X_MAGIC_OK && magic != HPT45X_MAGIC_BAD)
  ------------------
  |  |   22|  11.9k|#define HPT45X_MAGIC_OK			0x5a7816f3
  ------------------
              	if (magic != HPT45X_MAGIC_OK && magic != HPT45X_MAGIC_BAD)
  ------------------
  |  |   23|  5.99k|#define HPT45X_MAGIC_BAD		0x5a7816fd
  ------------------
  |  Branch (43:6): [True: 5.99k, False: 0]
  |  Branch (43:34): [True: 5.99k, False: 0]
  ------------------
   44|  5.99k|		return 1;
   45|      0|	if (blkid_probe_set_magic(pr, off, sizeof(hpt->magic),
  ------------------
  |  Branch (45:6): [True: 0, False: 0]
  ------------------
   46|      0|				(unsigned char *) &hpt->magic))
   47|      0|		return 1;
   48|      0|	return 0;
   49|      0|}
highpoint_raid.c:probe_highpoint37x:
   53|      4|{
   54|      4|	if (!S_ISREG(pr->mode) && !blkid_probe_is_wholedisk(pr))
  ------------------
  |  Branch (54:6): [True: 0, False: 4]
  |  Branch (54:28): [True: 0, False: 0]
  ------------------
   55|      0|		return 1;
   56|      4|	return 0;
   57|      4|}

hpfs.c:probe_hpfs:
   62|    183|{
   63|    183|	const struct hpfs_super_block *hs;
   64|    183|	const struct hpfs_spare_super *hss;
   65|    183|	const struct hpfs_boot_block *hbb;
   66|    183|	uint8_t version;
   67|       |
   68|       |	/* super block */
   69|    183|	hs = blkid_probe_get_sb(pr, mag, struct hpfs_super_block);
  ------------------
  |  |  451|    183|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
   70|    183|	if (!hs)
  ------------------
  |  Branch (70:6): [True: 0, False: 183]
  ------------------
   71|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (71:10): [True: 0, False: 0]
  ------------------
   72|    183|	version = hs->version;
   73|       |
   74|       |	/* spare super block */
   75|    183|	hss = (struct hpfs_spare_super *)
   76|    183|			blkid_probe_get_buffer(pr,
   77|    183|				HPFS_SBSPARE_OFFSET,
  ------------------
  |  |   59|    183|#define HPFS_SBSPARE_OFFSET		0x2200
  ------------------
   78|    183|				sizeof(struct hpfs_spare_super));
   79|    183|	if (!hss)
  ------------------
  |  Branch (79:6): [True: 0, False: 183]
  ------------------
   80|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (80:10): [True: 0, False: 0]
  ------------------
   81|    183|	if (memcmp(hss->magic, "\x49\x18\x91\xf9", 4) != 0)
  ------------------
  |  Branch (81:6): [True: 171, False: 12]
  ------------------
   82|    171|		return 1;
   83|       |
   84|       |	/* boot block (with UUID and LABEL) */
   85|     12|	hbb = (struct hpfs_boot_block *)
   86|     12|			blkid_probe_get_buffer(pr,
   87|     12|				0,
   88|     12|				sizeof(struct hpfs_boot_block));
   89|     12|	if (!hbb)
  ------------------
  |  Branch (89:6): [True: 0, False: 12]
  ------------------
   90|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (90:10): [True: 0, False: 0]
  ------------------
   91|     12|	if (memcmp(hbb->magic, "\x55\xaa", 2) == 0 &&
  ------------------
  |  Branch (91:6): [True: 4, False: 8]
  ------------------
   92|      4|	    memcmp(hbb->sig_hpfs, "HPFS", 4) == 0 &&
  ------------------
  |  Branch (92:6): [True: 3, False: 1]
  ------------------
   93|      3|	    hbb->sig_28h == 0x28) {
  ------------------
  |  Branch (93:6): [True: 0, False: 3]
  ------------------
   94|      0|		blkid_probe_set_label(pr, hbb->vol_label, sizeof(hbb->vol_label));
   95|      0|		blkid_probe_sprintf_uuid(pr,
   96|      0|				hbb->vol_serno, sizeof(hbb->vol_serno),
   97|      0|				"%02X%02X-%02X%02X",
   98|      0|				hbb->vol_serno[3], hbb->vol_serno[2],
   99|      0|				hbb->vol_serno[1], hbb->vol_serno[0]);
  100|      0|	}
  101|     12|	blkid_probe_sprintf_version(pr, "%u", version);
  102|     12|	blkid_probe_set_fsblocksize(pr, 512);
  103|     12|	blkid_probe_set_block_size(pr, 512);
  104|       |
  105|     12|	return 0;
  106|     12|}

iso9660.c:probe_iso9660:
  230|    527|{
  231|    527|	struct boot_record *boot = NULL;
  232|    527|	struct iso_volume_descriptor *pvd = NULL;
  233|    527|	struct iso_volume_descriptor *joliet = NULL;
  234|       |	/* space for merge_utf16be_ascii(ISO_ID_BUFSIZ bytes) */
  235|    527|	unsigned char buf[ISO_MAX_FIELDSIZ * 5 / 2];
  236|    527|	const struct hs_date *modified;
  237|    527|	const struct hs_date *created;
  238|    527|	unsigned char modified_offset;
  239|    527|	unsigned char created_offset;
  240|    527|	size_t len;
  241|    527|	int is_hs;
  242|    527|	int is_unicode_empty;
  243|    527|	int is_ascii_hs_empty;
  244|    527|	int is_ascii_iso_empty;
  245|    527|	int i;
  246|    527|	uint64_t off;
  247|       |
  248|    527|	if (blkid_probe_get_hint(pr, mag->hoff, &off) < 0)
  ------------------
  |  Branch (248:6): [True: 527, False: 0]
  ------------------
  249|    527|		off = 0;
  250|       |
  251|    527|	if (off % ISO_SECTOR_SIZE)
  ------------------
  |  |  113|    527|#define ISO_SECTOR_SIZE			0x800
  ------------------
  |  Branch (251:6): [True: 0, False: 527]
  ------------------
  252|      0|		return 1;
  253|       |
  254|    527|	is_hs = (strcmp(mag->magic, "CDROM") == 0);
  255|       |
  256|  6.92k|	for (i = 0, off += ISO_SUPERBLOCK_OFFSET; i < ISO_VD_MAX && (!boot || !pvd || (!is_hs && !joliet)); i++, off += ISO_SECTOR_SIZE) {
  ------------------
  |  |  112|    527|#define ISO_SUPERBLOCK_OFFSET		0x8000
  ------------------
              	for (i = 0, off += ISO_SUPERBLOCK_OFFSET; i < ISO_VD_MAX && (!boot || !pvd || (!is_hs && !joliet)); i++, off += ISO_SECTOR_SIZE) {
  ------------------
  |  |  118|  13.8k|#define ISO_VD_MAX			16
  ------------------
              	for (i = 0, off += ISO_SUPERBLOCK_OFFSET; i < ISO_VD_MAX && (!boot || !pvd || (!is_hs && !joliet)); i++, off += ISO_SECTOR_SIZE) {
  ------------------
  |  |  113|  6.39k|#define ISO_SECTOR_SIZE			0x800
  ------------------
  |  Branch (256:44): [True: 6.67k, False: 248]
  |  Branch (256:63): [True: 2.68k, False: 3.99k]
  |  Branch (256:72): [True: 2.66k, False: 1.33k]
  |  Branch (256:81): [True: 1.20k, False: 128]
  |  Branch (256:91): [True: 1.16k, False: 44]
  ------------------
  257|  6.50k|		const unsigned char *desc =
  258|  6.50k|			blkid_probe_get_buffer(pr,
  259|  6.50k|					off + (is_hs ? 8 : 0), /* High Sierra has 8 bytes before descriptor with Volume Descriptor LBN value */
  ------------------
  |  Branch (259:13): [True: 1.52k, False: 4.98k]
  ------------------
  260|  6.50k|					max(sizeof(struct boot_record),
  ------------------
  |  |  214|  6.50k|# define max(x, y) __extension__ ({		\
  |  |  215|  6.50k|	__typeof__(x) _max1 = (x);		\
  |  |  216|  6.50k|	__typeof__(y) _max2 = (y);		\
  |  |  217|  6.50k|	(void) (&_max1 == &_max2);		\
  |  |  218|  6.50k|	_max1 > _max2 ? _max1 : _max2; })
  |  |  ------------------
  |  |  |  Branch (218:2): [True: 0, False: 6.50k]
  |  |  ------------------
  ------------------
  261|  6.50k|					    sizeof(struct iso_volume_descriptor)));
  262|       |
  263|  6.50k|		if (desc == NULL || desc[0] == ISO_VD_END)
  ------------------
  |  |  117|  6.50k|#define ISO_VD_END			0xff
  ------------------
  |  Branch (263:7): [True: 0, False: 6.50k]
  |  Branch (263:23): [True: 107, False: 6.39k]
  ------------------
  264|    107|			break;
  265|  6.39k|		else if (!boot && desc[0] == ISO_VD_BOOT_RECORD)
  ------------------
  |  |  114|  2.65k|#define ISO_VD_BOOT_RECORD		0x0
  ------------------
  |  Branch (265:12): [True: 2.65k, False: 3.74k]
  |  Branch (265:21): [True: 477, False: 2.17k]
  ------------------
  266|    477|			boot = (struct boot_record *)desc;
  267|  5.92k|		else if (!pvd && desc[0] == ISO_VD_PRIMARY)
  ------------------
  |  |  115|  4.53k|#define ISO_VD_PRIMARY			0x1
  ------------------
  |  Branch (267:12): [True: 4.53k, False: 1.39k]
  |  Branch (267:20): [True: 386, False: 4.14k]
  ------------------
  268|    386|			pvd = (struct iso_volume_descriptor *)desc;
  269|  5.53k|		else if (!is_hs && !joliet && desc[0] == ISO_VD_SUPPLEMENTARY) {
  ------------------
  |  |  116|  4.22k|#define ISO_VD_SUPPLEMENTARY		0x2
  ------------------
  |  Branch (269:12): [True: 4.32k, False: 1.21k]
  |  Branch (269:22): [True: 4.22k, False: 103]
  |  Branch (269:33): [True: 540, False: 3.68k]
  ------------------
  270|    540|			joliet = (struct iso_volume_descriptor *)desc;
  271|    540|			if (memcmp(joliet->escape_sequences, "%/@", 3) != 0 &&
  ------------------
  |  Branch (271:8): [True: 527, False: 13]
  ------------------
  272|    527|			    memcmp(joliet->escape_sequences, "%/C", 3) != 0 &&
  ------------------
  |  Branch (272:8): [True: 513, False: 14]
  ------------------
  273|    513|			    memcmp(joliet->escape_sequences, "%/E", 3) != 0)
  ------------------
  |  Branch (273:8): [True: 482, False: 31]
  ------------------
  274|    482|				joliet = NULL;
  275|    540|		}
  276|  6.50k|	}
  277|       |
  278|    527|	if (!pvd)
  ------------------
  |  Branch (278:6): [True: 141, False: 386]
  ------------------
  279|    141|		return errno ? -errno : 1;
  ------------------
  |  Branch (279:10): [True: 0, False: 141]
  ------------------
  280|       |
  281|    386|	uint16_t logical_block_size = isonum_723(pvd->logical_block_size, false);
  282|    386|	uint32_t space_size = isonum_733(pvd->space_size, false);
  283|       |
  284|    386|	if (logical_block_size == 0)
  ------------------
  |  Branch (284:6): [True: 64, False: 322]
  ------------------
  285|     64|		return 1;
  286|       |
  287|       |	/*
  288|       |	 * Verify the root directory record to reduce false positives.
  289|       |	 *
  290|       |	 * The CD001 magic at 32KB can match data content on other
  291|       |	 * filesystems (e.g. an .iso file stored on XFS). Validate that
  292|       |	 * the root directory extent actually contains a valid directory
  293|       |	 * entry -- the first entry must be the "." self-reference with
  294|       |	 * file_id = 0x00 pointing back to the same LBA.
  295|       |	 */
  296|    322|	{
  297|    322|		const unsigned char *rdr = is_hs ?
  ------------------
  |  Branch (297:30): [True: 127, False: 195]
  ------------------
  298|    195|			pvd->hs.root_dir_record : pvd->iso.root_dir_record;
  299|    322|		uint32_t root_lba = isonum_731(rdr + 2);
  300|    322|		uint32_t root_len = isonum_731(rdr + 10);
  301|    322|		uint64_t root_off = (uint64_t) root_lba * logical_block_size;
  302|    322|		const unsigned char *rootdata;
  303|       |
  304|       |		/*
  305|       |		 * A valid root directory holds at least the 34-byte "."
  306|       |		 * record inspected below (offsets up to 33). A shorter extent
  307|       |		 * cannot be valid and would under-map the buffer, so the fixed
  308|       |		 * offset reads must not run before this check.
  309|       |		 */
  310|    322|		if (root_len < 34)
  ------------------
  |  Branch (310:7): [True: 24, False: 298]
  ------------------
  311|     24|			return 1;
  312|       |
  313|    298|		rootdata = blkid_probe_get_buffer(pr, root_off,
  314|    298|				root_len < 2048 ? root_len : 2048);
  ------------------
  |  Branch (314:5): [True: 29, False: 269]
  ------------------
  315|    298|		if (!rootdata)
  ------------------
  |  Branch (315:7): [True: 109, False: 189]
  ------------------
  316|    109|			return errno ? -errno : 1;
  ------------------
  |  Branch (316:11): [True: 0, False: 109]
  ------------------
  317|       |
  318|       |		/* The first directory entry must be "." (self-reference):
  319|       |		 *   - dr_len >= 34 (minimum directory record size)
  320|       |		 *   - file_id_len == 1
  321|       |		 *   - file_id == 0x00 (the "." identifier)
  322|       |		 *   - extent location == root_lba (points to itself)
  323|       |		 */
  324|    189|		if (rootdata[0] < 34 ||
  ------------------
  |  Branch (324:7): [True: 16, False: 173]
  ------------------
  325|    173|		    rootdata[32] != 1 ||
  ------------------
  |  Branch (325:7): [True: 25, False: 148]
  ------------------
  326|    148|		    rootdata[33] != 0x00 ||
  ------------------
  |  Branch (326:7): [True: 3, False: 145]
  ------------------
  327|    145|		    isonum_731(rootdata + 2) != root_lba) {
  ------------------
  |  Branch (327:7): [True: 70, False: 75]
  ------------------
  328|    114|			DBG(LOWPROBE, ul_debug("ISO9660: root dir validation "
  ------------------
  |  |  358|    114|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|    114|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|    114|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|    114|	do { \
  |  |  |  |  |  |  |  |   76|    114|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|    114|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|    114|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 114]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|    114|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 114]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    114|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|    114|		x; \
  |  |  |  |  |  |   85|    114|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  329|    114|				"failed (false positive CD001 signature?)"));
  330|    114|			return 1;
  331|    114|		}
  332|    189|	}
  333|       |
  334|     75|	blkid_probe_set_fsblocksize(pr, logical_block_size);
  335|     75|	blkid_probe_set_block_size(pr, logical_block_size);
  336|     75|	blkid_probe_set_fssize(pr, (uint64_t) space_size * logical_block_size);
  337|       |
  338|     75|	if (joliet && (len = merge_utf16be_ascii(buf, sizeof(buf), joliet->system_id, pvd->system_id, sizeof(pvd->system_id))) != 0)
  ------------------
  |  Branch (338:6): [True: 19, False: 56]
  |  Branch (338:16): [True: 0, False: 19]
  ------------------
  339|      0|		blkid_probe_set_utf8_id_label(pr, "SYSTEM_ID", buf, len, UL_ENCODE_UTF16BE);
  340|     75|	else if (joliet)
  ------------------
  |  Branch (340:11): [True: 19, False: 56]
  ------------------
  341|     19|		blkid_probe_set_utf8_id_label(pr, "SYSTEM_ID", joliet->system_id, sizeof(joliet->system_id), UL_ENCODE_UTF16BE);
  342|     56|	else
  343|     56|		blkid_probe_set_id_label(pr, "SYSTEM_ID", pvd->system_id, sizeof(pvd->system_id));
  344|       |
  345|     75|	if (joliet && (len = merge_utf16be_ascii(buf, sizeof(buf), joliet->iso.volume_set_id, pvd->iso.volume_set_id, sizeof(pvd->iso.volume_set_id))) != 0)
  ------------------
  |  Branch (345:6): [True: 19, False: 56]
  |  Branch (345:16): [True: 0, False: 19]
  ------------------
  346|      0|		blkid_probe_set_utf8_id_label(pr, "VOLUME_SET_ID", buf, len, UL_ENCODE_UTF16BE);
  347|     75|	else if (joliet)
  ------------------
  |  Branch (347:11): [True: 19, False: 56]
  ------------------
  348|     19|		blkid_probe_set_utf8_id_label(pr, "VOLUME_SET_ID", joliet->iso.volume_set_id, sizeof(joliet->iso.volume_set_id), UL_ENCODE_UTF16BE);
  349|     56|	else if (is_hs)
  ------------------
  |  Branch (349:11): [True: 34, False: 22]
  ------------------
  350|     34|		blkid_probe_set_id_label(pr, "VOLUME_SET_ID", pvd->hs.volume_set_id, sizeof(pvd->hs.volume_set_id));
  351|     22|	else
  352|     22|		blkid_probe_set_id_label(pr, "VOLUME_SET_ID", pvd->iso.volume_set_id, sizeof(pvd->iso.volume_set_id));
  353|       |
  354|     75|	is_ascii_hs_empty = (!is_hs || is_str_empty(pvd->hs.publisher_id, sizeof(pvd->hs.publisher_id)) || pvd->hs.publisher_id[0] == '_');
  ------------------
  |  Branch (354:23): [True: 41, False: 34]
  |  Branch (354:33): [True: 18, False: 16]
  |  Branch (354:101): [True: 0, False: 16]
  ------------------
  355|     75|	is_ascii_iso_empty = (is_hs || is_str_empty(pvd->iso.publisher_id, sizeof(pvd->iso.publisher_id)) || pvd->iso.publisher_id[0] == '_');
  ------------------
  |  Branch (355:24): [True: 34, False: 41]
  |  Branch (355:33): [True: 10, False: 31]
  |  Branch (355:103): [True: 0, False: 31]
  ------------------
  356|     75|	is_unicode_empty = (!joliet || is_utf16be_str_empty(joliet->iso.publisher_id, sizeof(joliet->iso.publisher_id)) || (joliet->iso.publisher_id[0] == 0x00 && joliet->iso.publisher_id[1] == '_'));
  ------------------
  |  Branch (356:22): [True: 56, False: 19]
  |  Branch (356:33): [True: 0, False: 19]
  |  Branch (356:118): [True: 12, False: 7]
  |  Branch (356:157): [True: 0, False: 12]
  ------------------
  357|     75|	if (!is_unicode_empty && !is_ascii_iso_empty && (len = merge_utf16be_ascii(buf, sizeof(buf), joliet->iso.publisher_id, pvd->iso.publisher_id, sizeof(pvd->iso.publisher_id))) != 0)
  ------------------
  |  Branch (357:6): [True: 19, False: 56]
  |  Branch (357:27): [True: 13, False: 6]
  |  Branch (357:50): [True: 0, False: 13]
  ------------------
  358|      0|		blkid_probe_set_utf8_id_label(pr, "PUBLISHER_ID", buf, len, UL_ENCODE_UTF16BE);
  359|     75|	else if (!is_unicode_empty)
  ------------------
  |  Branch (359:11): [True: 19, False: 56]
  ------------------
  360|     19|		blkid_probe_set_utf8_id_label(pr, "PUBLISHER_ID", joliet->iso.publisher_id, sizeof(joliet->iso.publisher_id), UL_ENCODE_UTF16BE);
  361|     56|	else if (!is_ascii_hs_empty)
  ------------------
  |  Branch (361:11): [True: 16, False: 40]
  ------------------
  362|     16|		blkid_probe_set_id_label(pr, "PUBLISHER_ID", pvd->hs.publisher_id, sizeof(pvd->hs.publisher_id));
  363|     40|	else if (!is_ascii_iso_empty)
  ------------------
  |  Branch (363:11): [True: 18, False: 22]
  ------------------
  364|     18|		blkid_probe_set_id_label(pr, "PUBLISHER_ID", pvd->iso.publisher_id, sizeof(pvd->iso.publisher_id));
  365|       |
  366|     75|	is_ascii_hs_empty = (!is_hs || is_str_empty(pvd->hs.data_preparer_id, sizeof(pvd->hs.data_preparer_id)) || pvd->hs.data_preparer_id[0] == '_');
  ------------------
  |  Branch (366:23): [True: 41, False: 34]
  |  Branch (366:33): [True: 9, False: 25]
  |  Branch (366:109): [True: 0, False: 25]
  ------------------
  367|     75|	is_ascii_iso_empty = (is_hs || is_str_empty(pvd->iso.data_preparer_id, sizeof(pvd->iso.data_preparer_id)) || pvd->iso.data_preparer_id[0] == '_');
  ------------------
  |  Branch (367:24): [True: 34, False: 41]
  |  Branch (367:33): [True: 10, False: 31]
  |  Branch (367:111): [True: 0, False: 31]
  ------------------
  368|     75|	is_unicode_empty = (!joliet || is_utf16be_str_empty(joliet->iso.data_preparer_id, sizeof(joliet->iso.data_preparer_id)) || (joliet->iso.data_preparer_id[0] == 0x00 && joliet->iso.data_preparer_id[1] == '_'));
  ------------------
  |  Branch (368:22): [True: 56, False: 19]
  |  Branch (368:33): [True: 0, False: 19]
  |  Branch (368:126): [True: 12, False: 7]
  |  Branch (368:169): [True: 0, False: 12]
  ------------------
  369|     75|	if (!is_unicode_empty && !is_ascii_iso_empty && (len = merge_utf16be_ascii(buf, sizeof(buf), joliet->iso.data_preparer_id, pvd->iso.data_preparer_id, sizeof(pvd->iso.data_preparer_id))) != 0)
  ------------------
  |  Branch (369:6): [True: 19, False: 56]
  |  Branch (369:27): [True: 14, False: 5]
  |  Branch (369:50): [True: 0, False: 14]
  ------------------
  370|      0|		blkid_probe_set_utf8_id_label(pr, "DATA_PREPARER_ID", buf, len, UL_ENCODE_UTF16BE);
  371|     75|	else if (!is_unicode_empty)
  ------------------
  |  Branch (371:11): [True: 19, False: 56]
  ------------------
  372|     19|		blkid_probe_set_utf8_id_label(pr, "DATA_PREPARER_ID", joliet->iso.data_preparer_id, sizeof(joliet->iso.data_preparer_id), UL_ENCODE_UTF16BE);
  373|     56|	else if (!is_ascii_hs_empty)
  ------------------
  |  Branch (373:11): [True: 25, False: 31]
  ------------------
  374|     25|		blkid_probe_set_id_label(pr, "DATA_PREPARER_ID", pvd->hs.data_preparer_id, sizeof(pvd->hs.data_preparer_id));
  375|     31|	else if (!is_ascii_iso_empty)
  ------------------
  |  Branch (375:11): [True: 17, False: 14]
  ------------------
  376|     17|		blkid_probe_set_id_label(pr, "DATA_PREPARER_ID", pvd->iso.data_preparer_id, sizeof(pvd->iso.data_preparer_id));
  377|       |
  378|     75|	is_ascii_hs_empty = (!is_hs || is_str_empty(pvd->hs.application_id, sizeof(pvd->hs.application_id)) || pvd->hs.application_id[0] == '_');
  ------------------
  |  Branch (378:23): [True: 41, False: 34]
  |  Branch (378:33): [True: 12, False: 22]
  |  Branch (378:105): [True: 0, False: 22]
  ------------------
  379|     75|	is_ascii_iso_empty = (is_hs || is_str_empty(pvd->iso.application_id, sizeof(pvd->iso.application_id)) || pvd->iso.application_id[0] == '_');
  ------------------
  |  Branch (379:24): [True: 34, False: 41]
  |  Branch (379:33): [True: 12, False: 29]
  |  Branch (379:107): [True: 0, False: 29]
  ------------------
  380|     75|	is_unicode_empty = (!joliet || is_utf16be_str_empty(joliet->iso.application_id, sizeof(joliet->iso.application_id)) || (joliet->iso.application_id[0] == 0x00 && joliet->iso.application_id[1] == '_'));
  ------------------
  |  Branch (380:22): [True: 56, False: 19]
  |  Branch (380:33): [True: 0, False: 19]
  |  Branch (380:122): [True: 12, False: 7]
  |  Branch (380:163): [True: 0, False: 12]
  ------------------
  381|     75|	if (!is_unicode_empty && !is_ascii_iso_empty && (len = merge_utf16be_ascii(buf, sizeof(buf), joliet->iso.application_id, pvd->iso.application_id, sizeof(pvd->iso.application_id))) != 0)
  ------------------
  |  Branch (381:6): [True: 19, False: 56]
  |  Branch (381:27): [True: 14, False: 5]
  |  Branch (381:50): [True: 0, False: 14]
  ------------------
  382|      0|		blkid_probe_set_utf8_id_label(pr, "APPLICATION_ID", buf, len, UL_ENCODE_UTF16BE);
  383|     75|	else if (!is_unicode_empty)
  ------------------
  |  Branch (383:11): [True: 19, False: 56]
  ------------------
  384|     19|		blkid_probe_set_utf8_id_label(pr, "APPLICATION_ID", joliet->iso.application_id, sizeof(joliet->iso.application_id), UL_ENCODE_UTF16BE);
  385|     56|	else if (!is_ascii_hs_empty)
  ------------------
  |  Branch (385:11): [True: 22, False: 34]
  ------------------
  386|     22|		blkid_probe_set_id_label(pr, "APPLICATION_ID", pvd->hs.application_id, sizeof(pvd->hs.application_id));
  387|     34|	else if (!is_ascii_iso_empty)
  ------------------
  |  Branch (387:11): [True: 15, False: 19]
  ------------------
  388|     15|		blkid_probe_set_id_label(pr, "APPLICATION_ID", pvd->iso.application_id, sizeof(pvd->iso.application_id));
  389|       |
  390|     75|	if (is_hs) {
  ------------------
  |  Branch (390:6): [True: 34, False: 41]
  ------------------
  391|     34|		modified = &pvd->hs.modified;
  392|     34|		created = &pvd->hs.created;
  393|     34|		modified_offset = 0;
  394|     34|		created_offset = 0;
  395|     41|	} else {
  396|     41|		modified = &pvd->iso.modified.common;
  397|     41|		created = &pvd->iso.created.common;
  398|     41|		modified_offset = pvd->iso.modified.offset;
  399|     41|		created_offset = pvd->iso.created.offset;
  400|     41|	}
  401|       |
  402|       |	/* create an UUID using the modified/created date */
  403|     75|	if (! probe_iso9660_set_uuid(pr, modified, modified_offset))
  ------------------
  |  Branch (403:6): [True: 4, False: 71]
  ------------------
  404|      4|		probe_iso9660_set_uuid(pr, created, created_offset);
  405|       |
  406|     75|	if (boot)
  ------------------
  |  Branch (406:6): [True: 69, False: 6]
  ------------------
  407|     69|		blkid_probe_set_id_label(pr, "BOOT_SYSTEM_ID",
  408|     69|					boot->boot_system_id,
  409|     69|					sizeof(boot->boot_system_id));
  410|       |
  411|     75|	if (joliet)
  ------------------
  |  Branch (411:6): [True: 19, False: 56]
  ------------------
  412|     19|		blkid_probe_set_version(pr, "Joliet Extension");
  413|     56|	else if (is_hs)
  ------------------
  |  Branch (413:11): [True: 34, False: 22]
  ------------------
  414|     34|		blkid_probe_set_version(pr, "High Sierra");
  415|       |
  416|       |	/* Label in Joliet is UNICODE (UTF16BE) but can contain only 16 characters. Label in PVD is
  417|       |	 * subset of ASCII but can contain up to the 32 characters. Non-representable characters are
  418|       |	 * stored as replacement character '_'. Label in Joliet is in most cases trimmed but UNICODE
  419|       |	 * version of label in PVD. Based on these facts try to reconstruct original label if label
  420|       |	 * in Joliet is prefix of the label in PVD (ignoring non-representable characters).
  421|       |	 */
  422|     75|	if (joliet && (len = merge_utf16be_ascii(buf, sizeof(buf), joliet->volume_id, pvd->volume_id, sizeof(pvd->volume_id))) != 0)
  ------------------
  |  Branch (422:6): [True: 19, False: 56]
  |  Branch (422:16): [True: 0, False: 19]
  ------------------
  423|      0|		blkid_probe_set_utf8label(pr, buf, len, UL_ENCODE_UTF16BE);
  424|     75|	else if (joliet)
  ------------------
  |  Branch (424:11): [True: 19, False: 56]
  ------------------
  425|     19|		blkid_probe_set_utf8label(pr, joliet->volume_id, sizeof(joliet->volume_id), UL_ENCODE_UTF16BE);
  426|     56|	else
  427|     56|		blkid_probe_set_label(pr, pvd->volume_id, sizeof(pvd->volume_id));
  428|       |
  429|     75|	return 0;
  430|    189|}
iso9660.c:merge_utf16be_ascii:
  195|     98|{
  196|     98|	size_t o, a, u;
  197|       |
  198|    182|	for (o = 0, a = 0, u = 0; u + 1 < len && a < len && o + 1 < out_len; o += 2, a++, u += 2) {
  ------------------
  |  Branch (198:28): [True: 182, False: 0]
  |  Branch (198:43): [True: 182, False: 0]
  |  Branch (198:54): [True: 182, False: 0]
  ------------------
  199|       |		/* Surrogate pair with code point above U+FFFF */
  200|    182|		if (utf16[u] >= 0xD8 && utf16[u] <= 0xDB && u + 3 < len &&
  ------------------
  |  Branch (200:7): [True: 9, False: 173]
  |  Branch (200:27): [True: 1, False: 8]
  |  Branch (200:47): [True: 1, False: 0]
  ------------------
  201|      1|		    utf16[u + 2] >= 0xDC && utf16[u + 2] <= 0xDF) {
  ------------------
  |  Branch (201:7): [True: 0, False: 1]
  |  Branch (201:31): [True: 0, False: 0]
  ------------------
  202|      0|			out[o++] = utf16[u++];
  203|      0|			out[o++] = utf16[u++];
  204|      0|		}
  205|       |		/* Value '_' is replacement for non-representable character */
  206|    182|		if (ascii[a] == '_') {
  ------------------
  |  Branch (206:7): [True: 0, False: 182]
  ------------------
  207|      0|			out[o] = utf16[u];
  208|      0|			out[o + 1] = utf16[u + 1];
  209|    182|		} else if (utf16[u] == 0x00 && utf16[u + 1] == '_') {
  ------------------
  |  Branch (209:14): [True: 121, False: 61]
  |  Branch (209:34): [True: 0, False: 121]
  ------------------
  210|      0|			out[o] = 0x00;
  211|      0|			out[o + 1] = ascii[a];
  212|    182|		} else if (utf16[u] == 0x00 && c_toupper(ascii[a]) == c_toupper(utf16[u + 1])) {
  ------------------
  |  Branch (212:14): [True: 121, False: 61]
  |  Branch (212:34): [True: 84, False: 37]
  ------------------
  213|     84|			out[o] = 0x00;
  214|     84|			out[o + 1] = c_isupper(ascii[a]) ? utf16[u + 1] : ascii[a];
  ------------------
  |  Branch (214:17): [True: 0, False: 84]
  ------------------
  215|     98|		} else {
  216|     98|			return 0;
  217|     98|		}
  218|    182|	}
  219|       |
  220|      0|	for (; a < len && o + 1 < out_len; o += 2, a++) {
  ------------------
  |  Branch (220:9): [True: 0, False: 0]
  |  Branch (220:20): [True: 0, False: 0]
  ------------------
  221|      0|		out[o] = 0x00;
  222|      0|		out[o + 1] = ascii[a];
  223|      0|	}
  224|       |
  225|      0|	return o;
  226|     98|}
iso9660.c:is_str_empty:
  168|    225|{
  169|    225|	size_t i;
  170|       |
  171|    225|	if (!str || !*str)
  ------------------
  |  Branch (171:6): [True: 0, False: 225]
  |  Branch (171:14): [True: 63, False: 162]
  ------------------
  172|     63|		return 1;
  173|       |
  174|  2.87k|	for (i = 0; i < len; i++)
  ------------------
  |  Branch (174:14): [True: 2.86k, False: 8]
  ------------------
  175|  2.86k|		if (!isspace(str[i]))
  ------------------
  |  Branch (175:7): [True: 154, False: 2.71k]
  ------------------
  176|    154|			return 0;
  177|      8|	return 1;
  178|    162|}
iso9660.c:is_utf16be_str_empty:
  181|     57|{
  182|     57|	size_t i;
  183|       |
  184|     57|	for (i = 0; i < len; i += 2) {
  ------------------
  |  Branch (184:14): [True: 57, False: 0]
  ------------------
  185|     57|		if (utf16[i] != 0x0 || !isspace(utf16[i + 1]))
  ------------------
  |  Branch (185:7): [True: 21, False: 36]
  |  Branch (185:26): [True: 36, False: 0]
  ------------------
  186|     57|			return 0;
  187|     57|	}
  188|      0|	return 1;
  189|     57|}
iso9660.c:probe_iso9660_set_uuid:
  123|     79|{
  124|     79|	unsigned char buffer[16];
  125|     79|	unsigned int i, zeros = 0;
  126|       |
  127|     79|	buffer[0] = date->year[0];
  128|     79|	buffer[1] = date->year[1];
  129|     79|	buffer[2] = date->year[2];
  130|     79|	buffer[3] = date->year[3];
  131|     79|	buffer[4] = date->month[0];
  132|     79|	buffer[5] = date->month[1];
  133|     79|	buffer[6] = date->day[0];
  134|     79|	buffer[7] = date->day[1];
  135|     79|	buffer[8] = date->hour[0];
  136|     79|	buffer[9] = date->hour[1];
  137|     79|	buffer[10] = date->minute[0];
  138|     79|	buffer[11] = date->minute[1];
  139|     79|	buffer[12] = date->second[0];
  140|     79|	buffer[13] = date->second[1];
  141|     79|	buffer[14] = date->hundredth[0];
  142|     79|	buffer[15] = date->hundredth[1];
  143|       |
  144|       |	/* count the number of zeros ('0') in the date buffer */
  145|  1.34k|	for (i = 0, zeros = 0; i < sizeof(buffer); i++)
  ------------------
  |  Branch (145:25): [True: 1.26k, False: 79]
  ------------------
  146|  1.26k|		if (buffer[i] == '0')
  ------------------
  |  Branch (146:7): [True: 237, False: 1.02k]
  ------------------
  147|    237|			zeros++;
  148|       |
  149|       |	/* due to the iso9660 standard if all date fields are '0' and offset is 0, the date is unset */
  150|     79|	if (zeros == sizeof(buffer) && offset == 0)
  ------------------
  |  Branch (150:6): [True: 7, False: 72]
  |  Branch (150:33): [True: 5, False: 2]
  ------------------
  151|      5|		return 0;
  152|       |
  153|       |	/* generate an UUID using this date and return success */
  154|     74|	blkid_probe_sprintf_uuid (pr, buffer, sizeof(buffer),
  155|     74|		"%c%c%c%c-%c%c-%c%c-%c%c-%c%c-%c%c-%c%c",
  156|     74|		buffer[0], buffer[1], buffer[2], buffer[3],
  157|     74|		buffer[4], buffer[5],
  158|     74|		buffer[6], buffer[7],
  159|     74|		buffer[8], buffer[9],
  160|     74|		buffer[10], buffer[11],
  161|     74|		buffer[12], buffer[13],
  162|     74|		buffer[14], buffer[15]);
  163|       |
  164|     74|	return 1;
  165|     79|}

isw_raid.c:probe_iswraid:
   30|  5.99k|{
   31|  5.99k|	uint64_t off;
   32|  5.99k|	unsigned int sector_size;
   33|  5.99k|	struct isw_metadata *isw;
   34|       |
   35|  5.99k|	if (!S_ISREG(pr->mode) && !blkid_probe_is_wholedisk(pr))
  ------------------
  |  Branch (35:6): [True: 0, False: 5.99k]
  |  Branch (35:28): [True: 0, False: 0]
  ------------------
   36|      0|		return 1;
   37|       |
   38|  5.99k|	sector_size = blkid_probe_get_sectorsize(pr);
   39|  5.99k|	off = ((pr->size / sector_size) - 2) * sector_size;
   40|       |
   41|  5.99k|	isw = (struct isw_metadata *)blkid_probe_get_buffer(pr,
   42|  5.99k|			off, sizeof(struct isw_metadata));
   43|  5.99k|	if (!isw)
  ------------------
  |  Branch (43:6): [True: 0, False: 5.99k]
  ------------------
   44|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (44:10): [True: 0, False: 0]
  ------------------
   45|       |
   46|  5.99k|	if (memcmp(isw->sig, ISW_SIGNATURE, sizeof(ISW_SIGNATURE)-1) != 0)
  ------------------
  |  |   26|  5.99k|#define ISW_SIGNATURE		"Intel Raid ISM Cfg Sig. "
  ------------------
              	if (memcmp(isw->sig, ISW_SIGNATURE, sizeof(ISW_SIGNATURE)-1) != 0)
  ------------------
  |  |   26|  5.99k|#define ISW_SIGNATURE		"Intel Raid ISM Cfg Sig. "
  ------------------
  |  Branch (46:6): [True: 5.99k, False: 0]
  ------------------
   47|  5.99k|		return 1;
   48|       |
   49|      0|	if (blkid_probe_sprintf_version(pr, "%6s",
  ------------------
  |  Branch (49:6): [True: 0, False: 0]
  ------------------
   50|      0|			&isw->sig[sizeof(ISW_SIGNATURE)-1]) != 0)
  ------------------
  |  |   26|      0|#define ISW_SIGNATURE		"Intel Raid ISM Cfg Sig. "
  ------------------
   51|      0|		return 1;
   52|      0|	if (blkid_probe_set_magic(pr, off, sizeof(isw->sig),
  ------------------
  |  Branch (52:6): [True: 0, False: 0]
  ------------------
   53|      0|				(unsigned char *) isw->sig))
   54|      0|		return 1;
   55|      0|	return 0;
   56|      0|}

jfs.c:probe_jfs:
   38|    154|{
   39|    154|	const struct jfs_super_block *js;
   40|       |
   41|    154|	js = blkid_probe_get_sb(pr, mag, struct jfs_super_block);
  ------------------
  |  |  451|    154|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
   42|    154|	if (!js)
  ------------------
  |  Branch (42:6): [True: 0, False: 154]
  ------------------
   43|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (43:10): [True: 0, False: 0]
  ------------------
   44|    154|	if (le16_to_cpu(js->js_l2bsize) > 31 || le16_to_cpu(js->js_l2pbsize) > 31)
  ------------------
  |  |  136|    154|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
              	if (le16_to_cpu(js->js_l2bsize) > 31 || le16_to_cpu(js->js_l2pbsize) > 31)
  ------------------
  |  |  136|     46|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  |  Branch (44:6): [True: 108, False: 46]
  |  Branch (44:42): [True: 6, False: 40]
  ------------------
   45|    114|		return 1;
   46|     40|	if (le32_to_cpu(js->js_bsize) != (1U << le16_to_cpu(js->js_l2bsize)))
  ------------------
  |  |  137|     40|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              	if (le32_to_cpu(js->js_bsize) != (1U << le16_to_cpu(js->js_l2bsize)))
  ------------------
  |  |  136|     40|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  |  Branch (46:6): [True: 28, False: 12]
  ------------------
   47|     28|		return 1;
   48|     12|	if (le32_to_cpu(js->js_pbsize) != (1U << le16_to_cpu(js->js_l2pbsize)))
  ------------------
  |  |  137|     12|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              	if (le32_to_cpu(js->js_pbsize) != (1U << le16_to_cpu(js->js_l2pbsize)))
  ------------------
  |  |  136|     12|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  |  Branch (48:6): [True: 6, False: 6]
  ------------------
   49|      6|		return 1;
   50|      6|	if ((le16_to_cpu(js->js_l2bsize) - le16_to_cpu(js->js_l2pbsize)) !=
  ------------------
  |  |  136|      6|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
              	if ((le16_to_cpu(js->js_l2bsize) - le16_to_cpu(js->js_l2pbsize)) !=
  ------------------
  |  |  136|      6|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  |  Branch (50:6): [True: 3, False: 3]
  ------------------
   51|      6|	    le16_to_cpu(js->js_l2bfactor))
  ------------------
  |  |  136|      6|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
   52|      3|		return 1;
   53|       |
   54|      3|	if (*((char *) js->js_label) != '\0')
  ------------------
  |  Branch (54:6): [True: 1, False: 2]
  ------------------
   55|      1|		blkid_probe_set_label(pr, js->js_label, sizeof(js->js_label));
   56|      3|	blkid_probe_set_uuid(pr, js->js_uuid);
   57|      3|	blkid_probe_set_fsblocksize(pr, le32_to_cpu(js->js_bsize));
  ------------------
  |  |  137|      3|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
   58|       |	blkid_probe_set_block_size(pr, le32_to_cpu(js->js_bsize));
  ------------------
  |  |  137|      3|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
   59|      3|	return 0;
   60|      6|}

jmicron_raid.c:probe_jmraid:
   74|  5.98k|{
   75|  5.98k|	uint64_t off;
   76|  5.98k|	const struct jm_metadata *jm;
   77|       |
   78|  5.98k|	if (!S_ISREG(pr->mode) && !blkid_probe_is_wholedisk(pr))
  ------------------
  |  Branch (78:6): [True: 0, False: 5.98k]
  |  Branch (78:28): [True: 0, False: 0]
  ------------------
   79|      0|		return 1;
   80|       |
   81|  5.98k|	off = ((pr->size / 0x200) - 1) * 0x200;
   82|  5.98k|	jm = (struct jm_metadata *)
   83|  5.98k|		blkid_probe_get_buffer(pr,
   84|  5.98k|				off,
   85|  5.98k|				sizeof(struct jm_metadata));
   86|  5.98k|	if (!jm)
  ------------------
  |  Branch (86:6): [True: 0, False: 5.98k]
  ------------------
   87|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (87:10): [True: 0, False: 0]
  ------------------
   88|       |
   89|  5.98k|	if (memcmp(jm->signature, JM_SIGNATURE, sizeof(JM_SIGNATURE) - 1) != 0)
  ------------------
  |  |   19|  5.98k|#define JM_SIGNATURE		"JM"
  ------------------
              	if (memcmp(jm->signature, JM_SIGNATURE, sizeof(JM_SIGNATURE) - 1) != 0)
  ------------------
  |  |   19|  5.98k|#define JM_SIGNATURE		"JM"
  ------------------
  |  Branch (89:6): [True: 5.98k, False: 0]
  ------------------
   90|  5.98k|		return 1;
   91|       |
   92|      0|	if (!jm_checksum(pr, jm))
  ------------------
  |  Branch (92:6): [True: 0, False: 0]
  ------------------
   93|      0|		return 1;
   94|       |
   95|      0|	if (jm->mode > 5)
  ------------------
  |  Branch (95:6): [True: 0, False: 0]
  ------------------
   96|      0|		return 1;
   97|       |
   98|      0|	if (blkid_probe_sprintf_version(pr, "%hu.%hu",
  ------------------
  |  Branch (98:6): [True: 0, False: 0]
  ------------------
   99|      0|			JM_MAJOR_VERSION(jm), JM_MINOR_VERSION(jm)) != 0)
  ------------------
  |  |   21|      0|#define JM_MAJOR_VERSION(_x)	(le16_to_cpu((_x)->version) >> 8)
  |  |  ------------------
  |  |  |  |  136|      0|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  ------------------
              			JM_MAJOR_VERSION(jm), JM_MINOR_VERSION(jm)) != 0)
  ------------------
  |  |   20|      0|#define JM_MINOR_VERSION(_x)	(le16_to_cpu((_x)->version) & 0xFF)
  |  |  ------------------
  |  |  |  |  136|      0|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  ------------------
  100|      0|		return 1;
  101|      0|	if (blkid_probe_set_magic(pr, off, sizeof(jm->signature),
  ------------------
  |  Branch (101:6): [True: 0, False: 0]
  ------------------
  102|      0|				(unsigned char *) jm->signature))
  103|      0|		return 1;
  104|      0|	return 0;
  105|      0|}

linux_raid.c:probe_raid:
  244|  5.99k|{
  245|  5.99k|	const char *ver = NULL;
  246|  5.99k|	int ret = BLKID_PROBE_NONE;
  ------------------
  |  |  471|  5.99k|#define BLKID_PROBE_NONE	1
  ------------------
  247|       |
  248|  5.99k|	if (pr->size > MD_RESERVED_BYTES) {
  ------------------
  |  |   99|  5.99k|#define MD_RESERVED_BYTES		0x10000
  ------------------
  |  Branch (248:6): [True: 5.99k, False: 0]
  ------------------
  249|       |		/* version 0 at the end of the device */
  250|  5.99k|		uint64_t sboff = (pr->size & ~(MD_RESERVED_BYTES - 1))
  ------------------
  |  |   99|  5.99k|#define MD_RESERVED_BYTES		0x10000
  ------------------
  251|  5.99k|			- MD_RESERVED_BYTES;
  ------------------
  |  |   99|  5.99k|#define MD_RESERVED_BYTES		0x10000
  ------------------
  252|  5.99k|		ret = probe_raid0(pr, sboff);
  253|  5.99k|		if (ret < 1)
  ------------------
  |  Branch (253:7): [True: 0, False: 5.99k]
  ------------------
  254|      0|			return ret;	/* error */
  255|       |
  256|       |		/* version 1.0 at the end of the device */
  257|  5.99k|		sboff = (pr->size & ~(0x1000 - 1)) - 0x2000;
  258|  5.99k|		ret = probe_raid1(pr, sboff);
  259|  5.99k|		if (ret < 0)
  ------------------
  |  Branch (259:7): [True: 0, False: 5.99k]
  ------------------
  260|      0|			return ret;	/* error */
  261|  5.99k|		if (ret == 0)
  ------------------
  |  Branch (261:7): [True: 0, False: 5.99k]
  ------------------
  262|      0|			ver = "1.0";
  263|  5.99k|	}
  264|       |
  265|  5.99k|	if (!ver) {
  ------------------
  |  Branch (265:6): [True: 5.99k, False: 0]
  ------------------
  266|       |		/* version 1.1 at the start of the device */
  267|  5.99k|		ret = probe_raid1(pr, 0);
  268|  5.99k|		if (ret == 0)
  ------------------
  |  Branch (268:7): [True: 2, False: 5.99k]
  ------------------
  269|      2|			ver = "1.1";
  270|       |
  271|       |		/* version 1.2 at 4k offset from the start */
  272|  5.99k|		else if (ret == BLKID_PROBE_NONE) {
  ------------------
  |  |  471|  5.99k|#define BLKID_PROBE_NONE	1
  ------------------
  |  Branch (272:12): [True: 5.99k, False: 0]
  ------------------
  273|  5.99k|			ret = probe_raid1(pr, 0x1000);
  274|  5.99k|			if (ret == 0)
  ------------------
  |  Branch (274:8): [True: 0, False: 5.99k]
  ------------------
  275|      0|				ver = "1.2";
  276|  5.99k|		}
  277|  5.99k|	}
  278|       |
  279|  5.99k|	if (ver) {
  ------------------
  |  Branch (279:6): [True: 2, False: 5.99k]
  ------------------
  280|      2|		blkid_probe_set_version(pr, ver);
  281|      2|		return BLKID_PROBE_OK;
  ------------------
  |  |  465|      2|#define BLKID_PROBE_OK	0
  ------------------
  282|      2|	}
  283|  5.99k|	return ret;
  284|  5.99k|}
linux_raid.c:probe_raid0:
  103|  5.99k|{
  104|  5.99k|	struct mdp0_super_block *mdp0;
  105|  5.99k|	union {
  106|  5.99k|		uint32_t ints[4];
  107|  5.99k|		uint8_t bytes[16];
  108|  5.99k|	} uuid;
  109|  5.99k|	uint32_t ma, mi, pa;
  110|  5.99k|	uint64_t size;
  111|       |
  112|  5.99k|	if (pr->size < MD_RESERVED_BYTES)
  ------------------
  |  |   99|  5.99k|#define MD_RESERVED_BYTES		0x10000
  ------------------
  |  Branch (112:6): [True: 0, False: 5.99k]
  ------------------
  113|      0|		return 1;
  114|  5.99k|	mdp0 = (struct mdp0_super_block *)
  115|  5.99k|			blkid_probe_get_buffer(pr,
  116|  5.99k|				off,
  117|  5.99k|				sizeof(struct mdp0_super_block));
  118|  5.99k|	if (!mdp0)
  ------------------
  |  Branch (118:6): [True: 0, False: 5.99k]
  ------------------
  119|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (119:10): [True: 0, False: 0]
  ------------------
  120|       |
  121|  5.99k|	memset(uuid.ints, 0, sizeof(uuid.ints));
  122|       |
  123|  5.99k|	if (le32_to_cpu(mdp0->md_magic) == MD_SB_MAGIC) {
  ------------------
  |  |  137|  5.99k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              	if (le32_to_cpu(mdp0->md_magic) == MD_SB_MAGIC) {
  ------------------
  |  |  100|  5.99k|#define MD_SB_MAGIC			0xa92b4efc
  ------------------
  |  Branch (123:6): [True: 0, False: 5.99k]
  ------------------
  124|      0|		uuid.ints[0] = swab32(mdp0->set_uuid0);
  ------------------
  |  |  125|      0|#define swab32(x) bswap_32(x)
  ------------------
  125|      0|		if (le32_to_cpu(mdp0->minor_version) >= 90) {
  ------------------
  |  |  137|      0|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (125:7): [True: 0, False: 0]
  ------------------
  126|      0|			uuid.ints[1] = swab32(mdp0->set_uuid1);
  ------------------
  |  |  125|      0|#define swab32(x) bswap_32(x)
  ------------------
  127|      0|			uuid.ints[2] = swab32(mdp0->set_uuid2);
  ------------------
  |  |  125|      0|#define swab32(x) bswap_32(x)
  ------------------
  128|      0|			uuid.ints[3] = swab32(mdp0->set_uuid3);
  ------------------
  |  |  125|      0|#define swab32(x) bswap_32(x)
  ------------------
  129|      0|		}
  130|      0|		ma = le32_to_cpu(mdp0->major_version);
  ------------------
  |  |  137|      0|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  131|      0|		mi = le32_to_cpu(mdp0->minor_version);
  ------------------
  |  |  137|      0|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  132|      0|		pa = le32_to_cpu(mdp0->patch_version);
  ------------------
  |  |  137|      0|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  133|      0|		size = le32_to_cpu(mdp0->size);
  ------------------
  |  |  137|      0|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  134|       |
  135|  5.99k|	} else if (be32_to_cpu(mdp0->md_magic) == MD_SB_MAGIC) {
  ------------------
  |  |  141|  5.99k|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
              	} else if (be32_to_cpu(mdp0->md_magic) == MD_SB_MAGIC) {
  ------------------
  |  |  100|  5.99k|#define MD_SB_MAGIC			0xa92b4efc
  ------------------
  |  Branch (135:13): [True: 0, False: 5.99k]
  ------------------
  136|      0|		uuid.ints[0] = mdp0->set_uuid0;
  137|      0|		if (be32_to_cpu(mdp0->minor_version) >= 90) {
  ------------------
  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  |  Branch (137:7): [True: 0, False: 0]
  ------------------
  138|      0|			uuid.ints[1] = mdp0->set_uuid1;
  139|      0|			uuid.ints[2] = mdp0->set_uuid2;
  140|      0|			uuid.ints[3] = mdp0->set_uuid3;
  141|      0|		}
  142|      0|		ma = be32_to_cpu(mdp0->major_version);
  ------------------
  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  143|      0|		mi = be32_to_cpu(mdp0->minor_version);
  ------------------
  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  144|      0|		pa = be32_to_cpu(mdp0->patch_version);
  ------------------
  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  145|      0|		size = be32_to_cpu(mdp0->size);
  ------------------
  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  146|      0|	} else
  147|  5.99k|		return 1;
  148|       |
  149|      0|	size <<= 10;	/* convert KiB to bytes */
  150|       |
  151|      0|	if (pr->size < size + MD_RESERVED_BYTES)
  ------------------
  |  |   99|      0|#define MD_RESERVED_BYTES		0x10000
  ------------------
  |  Branch (151:6): [True: 0, False: 0]
  ------------------
  152|       |		/* device is too small */
  153|      0|		return 1;
  154|       |
  155|      0|	if (off < size)
  ------------------
  |  Branch (155:6): [True: 0, False: 0]
  ------------------
  156|       |		/* no space before superblock */
  157|      0|		return 1;
  158|       |
  159|       |	/*
  160|       |	 * Check for collisions between RAID and partition table
  161|       |	 *
  162|       |	 * For example the superblock is at the end of the last partition, it's
  163|       |	 * the same position as at the end of the disk...
  164|       |	 */
  165|      0|	if ((S_ISREG(pr->mode) || blkid_probe_is_wholedisk(pr)) &&
  ------------------
  |  Branch (165:7): [True: 0, False: 0]
  |  Branch (165:28): [True: 0, False: 0]
  ------------------
  166|      0|	    blkid_probe_is_covered_by_pt(pr,
  ------------------
  |  Branch (166:6): [True: 0, False: 0]
  ------------------
  167|      0|			off - size,				/* min. start  */
  168|      0|			size + MD_RESERVED_BYTES)) {		/* min. length */
  ------------------
  |  |   99|      0|#define MD_RESERVED_BYTES		0x10000
  ------------------
  169|       |
  170|       |		/* ignore this superblock, it's within any partition and
  171|       |		 * we are working with whole-disk now */
  172|      0|		return 1;
  173|      0|	}
  174|       |
  175|      0|	if (blkid_probe_sprintf_version(pr, "%u.%u.%u", ma, mi, pa) != 0)
  ------------------
  |  Branch (175:6): [True: 0, False: 0]
  ------------------
  176|      0|		return 1;
  177|      0|	if (blkid_probe_set_uuid(pr, (unsigned char *) uuid.bytes) != 0)
  ------------------
  |  Branch (177:6): [True: 0, False: 0]
  ------------------
  178|      0|		return 1;
  179|      0|	if (blkid_probe_set_magic(pr, off, sizeof(mdp0->md_magic),
  ------------------
  |  Branch (179:6): [True: 0, False: 0]
  ------------------
  180|      0|				(unsigned char *) &mdp0->md_magic))
  181|      0|		return 1;
  182|      0|	return 0;
  183|      0|}
linux_raid.c:probe_raid1:
  211|  17.9k|{
  212|  17.9k|	struct mdp1_super_block *mdp1;
  213|       |
  214|  17.9k|	mdp1 = (struct mdp1_super_block *)
  215|  17.9k|			blkid_probe_get_buffer(pr,
  216|  17.9k|				off,
  217|  17.9k|				sizeof(struct mdp1_super_block));
  218|  17.9k|	if (!mdp1)
  ------------------
  |  Branch (218:6): [True: 0, False: 17.9k]
  ------------------
  219|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (219:10): [True: 0, False: 0]
  ------------------
  220|  17.9k|	if (le32_to_cpu(mdp1->magic) != MD_SB_MAGIC)
  ------------------
  |  |  137|  17.9k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              	if (le32_to_cpu(mdp1->magic) != MD_SB_MAGIC)
  ------------------
  |  |  100|  17.9k|#define MD_SB_MAGIC			0xa92b4efc
  ------------------
  |  Branch (220:6): [True: 17.8k, False: 101]
  ------------------
  221|  17.8k|		return 1;
  222|    101|	if (le32_to_cpu(mdp1->major_version) != 1U)
  ------------------
  |  |  137|    101|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (222:6): [True: 18, False: 83]
  ------------------
  223|     18|		return 1;
  224|     83|	if (le64_to_cpu(mdp1->super_offset) != (uint64_t) off >> 9)
  ------------------
  |  |  138|     83|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  |  Branch (224:6): [True: 66, False: 17]
  ------------------
  225|     66|		return 1;
  226|     17|	if (!raid1_verify_csum(pr, off, mdp1))
  ------------------
  |  Branch (226:6): [True: 15, False: 2]
  ------------------
  227|     15|		return 1;
  228|      2|	if (blkid_probe_set_uuid(pr, (unsigned char *) mdp1->set_uuid) != 0)
  ------------------
  |  Branch (228:6): [True: 0, False: 2]
  ------------------
  229|      0|		return 1;
  230|      2|	if (blkid_probe_set_uuid_as(pr,
  ------------------
  |  Branch (230:6): [True: 0, False: 2]
  ------------------
  231|      2|			(unsigned char *) mdp1->device_uuid, "UUID_SUB") != 0)
  232|      0|		return 1;
  233|      2|	if (blkid_probe_set_label(pr, mdp1->set_name,
  ------------------
  |  Branch (233:6): [True: 0, False: 2]
  ------------------
  234|      2|				sizeof(mdp1->set_name)) != 0)
  235|      0|		return 1;
  236|      2|	if (blkid_probe_set_magic(pr, off, sizeof(mdp1->magic),
  ------------------
  |  Branch (236:6): [True: 0, False: 2]
  ------------------
  237|      2|				(unsigned char *) &mdp1->magic))
  238|      0|		return 1;
  239|      2|	return 0;
  240|      2|}
linux_raid.c:raid1_verify_csum:
  187|     17|{
  188|     17|	uint64_t csummed_size = sizeof(struct mdp1_super_block)
  189|     17|		+ (uint64_t) le32_to_cpu(mdp1->max_dev) * sizeof(mdp1->dev_roles[0]);
  ------------------
  |  |  137|     17|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  190|     17|	const unsigned char *csummed = blkid_probe_get_buffer(pr, off, csummed_size);
  191|     17|	if (!csummed)
  ------------------
  |  Branch (191:6): [True: 2, False: 15]
  ------------------
  192|      2|		return 1;
  193|       |
  194|     15|	uint64_t csum = 0;
  195|       |
  196|     15|	csum -= le32_to_cpu(*(uint32_t *) (csummed + offsetof(struct mdp1_super_block, sb_csum)));
  ------------------
  |  |  137|     15|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  197|       |
  198|  18.0M|	while (csummed_size >= 4) {
  ------------------
  |  Branch (198:9): [True: 18.0M, False: 15]
  ------------------
  199|  18.0M|		csum += le32_to_cpu(*(uint32_t *) csummed);
  ------------------
  |  |  137|  18.0M|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  200|  18.0M|		csummed_size -= 4;
  201|  18.0M|		csummed += 4;
  202|  18.0M|	}
  203|     15|	if (csummed_size == 2)
  ------------------
  |  Branch (203:6): [True: 3, False: 12]
  ------------------
  204|      3|		csum += le16_to_cpu(*(uint16_t *) csummed);
  ------------------
  |  |  136|      3|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  205|       |
  206|     15|	csum = (csum >> 32) + (uint32_t) csum;
  207|       |	return blkid_probe_verify_csum(pr, csum, le32_to_cpu(mdp1->sb_csum));
  ------------------
  |  |  137|     15|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  208|     17|}

lsi_raid.c:probe_lsiraid:
   28|  5.99k|{
   29|  5.99k|	uint64_t off;
   30|  5.99k|	struct lsi_metadata *lsi;
   31|       |
   32|  5.99k|	if (!S_ISREG(pr->mode) && !blkid_probe_is_wholedisk(pr))
  ------------------
  |  Branch (32:6): [True: 0, False: 5.99k]
  |  Branch (32:28): [True: 0, False: 0]
  ------------------
   33|      0|		return 1;
   34|       |
   35|  5.99k|	off = ((pr->size / 0x200) - 1) * 0x200;
   36|  5.99k|	lsi = (struct lsi_metadata *)
   37|  5.99k|		blkid_probe_get_buffer(pr,
   38|  5.99k|				off,
   39|  5.99k|				sizeof(struct lsi_metadata));
   40|  5.99k|	if (!lsi)
  ------------------
  |  Branch (40:6): [True: 0, False: 5.99k]
  ------------------
   41|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (41:10): [True: 0, False: 0]
  ------------------
   42|       |
   43|  5.99k|	if (memcmp(lsi->sig, LSI_SIGNATURE, sizeof(LSI_SIGNATURE)-1) != 0)
  ------------------
  |  |   24|  5.99k|#define LSI_SIGNATURE		"$XIDE$"
  ------------------
              	if (memcmp(lsi->sig, LSI_SIGNATURE, sizeof(LSI_SIGNATURE)-1) != 0)
  ------------------
  |  |   24|  5.99k|#define LSI_SIGNATURE		"$XIDE$"
  ------------------
  |  Branch (43:6): [True: 5.99k, False: 0]
  ------------------
   44|  5.99k|		return 1;
   45|      0|	if (blkid_probe_set_magic(pr, off, sizeof(lsi->sig),
  ------------------
  |  Branch (45:6): [True: 0, False: 0]
  ------------------
   46|      0|				(unsigned char *) lsi->sig))
   47|      0|		return 1;
   48|      0|	return 0;
   49|      0|}

lvm.c:probe_lvm2:
   75|    729|{
   76|    729|	int sector = mag->kboff << 1;
   77|    729|	struct lvm2_pv_label_header *label;
   78|    729|	char uuid[LVM2_ID_LEN + 7];
   79|    729|	const unsigned char *buf;
   80|       |
   81|    729|	buf = blkid_probe_get_buffer(pr,
   82|    729|			mag->kboff << 10,
   83|    729|			512 + LVM2_LABEL_SIZE);
  ------------------
  |  |   41|    729|#define LVM2_LABEL_SIZE 512
  ------------------
   84|    729|	if (!buf)
  ------------------
  |  Branch (84:6): [True: 0, False: 729]
  ------------------
   85|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (85:10): [True: 0, False: 0]
  ------------------
   86|       |
   87|       |	/* buf is at 0k or 1k offset; find label inside */
   88|    729|	if (memcmp(buf, "LABELONE", 8) == 0) {
  ------------------
  |  Branch (88:6): [True: 110, False: 619]
  ------------------
   89|    110|		label = (struct lvm2_pv_label_header *) buf;
   90|    619|	} else if (memcmp(buf + 512, "LABELONE", 8) == 0) {
  ------------------
  |  Branch (90:13): [True: 92, False: 527]
  ------------------
   91|     92|		label = (struct lvm2_pv_label_header *)(buf + 512);
   92|     92|		sector++;
   93|    527|	} else {
   94|    527|		return 1;
   95|    527|	}
   96|       |
   97|    202|	if (le64_to_cpu(label->sector_xl) != (unsigned) sector)
  ------------------
  |  |  138|    202|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  |  Branch (97:6): [True: 198, False: 4]
  ------------------
   98|    198|		return 1;
   99|       |
  100|      4|	if (!blkid_probe_verify_csum(
  ------------------
  |  Branch (100:6): [True: 3, False: 1]
  ------------------
  101|      4|		pr, lvm2_calc_crc(
  102|      4|			&label->offset_xl, LVM2_LABEL_SIZE -
  ------------------
  |  |   41|      4|#define LVM2_LABEL_SIZE 512
  ------------------
  103|      4|			((char *) &label->offset_xl - (char *) label)),
  104|      4|			le32_to_cpu(label->crc_xl)))
  ------------------
  |  |  137|      4|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  105|      3|		return 1;
  106|       |
  107|      1|	format_lvm_uuid(uuid, (char *) label->pv_uuid);
  108|      1|	blkid_probe_sprintf_uuid(pr, label->pv_uuid, sizeof(label->pv_uuid),
  109|      1|			"%s", uuid);
  110|       |
  111|       |	/* the mag->magic is the same string as label->type,
  112|       |	 * but zero terminated */
  113|      1|	blkid_probe_set_version(pr, mag->magic);
  114|       |
  115|       |	/* LVM (pvcreate) wipes begin of the device -- let's remember this
  116|       |	 * to resolve conflicts between LVM and partition tables, ...
  117|       |	 */
  118|      1|	blkid_probe_set_wiper(pr, 0, 8 * 1024);
  119|       |
  120|      1|	return 0;
  121|      4|}
lvm.c:lvm2_calc_crc:
   43|      4|{
   44|      4|	static const unsigned int crctab[] = {
   45|      4|		0x00000000, 0x1db71064, 0x3b6e20c8, 0x26d930ac,
   46|      4|		0x76dc4190, 0x6b6b51f4, 0x4db26158, 0x5005713c,
   47|      4|		0xedb88320, 0xf00f9344, 0xd6d6a3e8, 0xcb61b38c,
   48|      4|		0x9b64c2b0, 0x86d3d2d4, 0xa00ae278, 0xbdbdf21c
   49|      4|	};
   50|      4|	unsigned int i, crc = 0xf597a6cf;
   51|      4|	const uint8_t *data = (const uint8_t *) buf;
   52|       |
   53|  1.97k|	for (i = 0; i < size; i++) {
  ------------------
  |  Branch (53:14): [True: 1.96k, False: 4]
  ------------------
   54|  1.96k|		crc ^= *data++;
   55|  1.96k|		crc = (crc >> 4) ^ crctab[crc & 0xf];
   56|  1.96k|		crc = (crc >> 4) ^ crctab[crc & 0xf];
   57|  1.96k|	}
   58|      4|	return crc;
   59|      4|}
lvm.c:format_lvm_uuid:
   63|      4|{
   64|      4|	unsigned int i, b;
   65|       |
   66|    132|	for (i = 0, b = 1; i < LVM2_ID_LEN; i++, b <<= 1) {
  ------------------
  |  |   21|    132|#define LVM2_ID_LEN 32
  ------------------
  |  Branch (66:21): [True: 128, False: 4]
  ------------------
   67|    128|		if (b & 0x4444440)
  ------------------
  |  Branch (67:7): [True: 24, False: 104]
  ------------------
   68|     24|			*dst_uuid++ = '-';
   69|    128|		*dst_uuid++ = *src_uuid++;
   70|    128|	}
   71|      4|	*dst_uuid = '\0';
   72|      4|}
lvm.c:probe_lvm1:
  124|    109|{
  125|    109|	const struct lvm1_pv_label_header *label;
  126|    109|	char uuid[LVM2_ID_LEN + 7];
  127|    109|	unsigned int version;
  128|       |
  129|    109|	label = blkid_probe_get_sb(pr, mag, struct lvm1_pv_label_header);
  ------------------
  |  |  451|    109|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
  130|    109|	if (!label)
  ------------------
  |  Branch (130:6): [True: 0, False: 109]
  ------------------
  131|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (131:10): [True: 0, False: 0]
  ------------------
  132|       |
  133|    109|	version = le16_to_cpu(label->version);
  ------------------
  |  |  136|    109|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  134|    109|	if (version != 1 && version != 2)
  ------------------
  |  Branch (134:6): [True: 108, False: 1]
  |  Branch (134:22): [True: 106, False: 2]
  ------------------
  135|    106|		return 1;
  136|       |
  137|      3|	format_lvm_uuid(uuid, (char *) label->pv_uuid);
  138|      3|	blkid_probe_sprintf_uuid(pr, label->pv_uuid, sizeof(label->pv_uuid),
  139|      3|			"%s", uuid);
  140|       |
  141|      3|	return 0;
  142|    109|}
lvm.c:probe_verity:
  160|     62|{
  161|     62|	const struct verity_sb *sb;
  162|     62|	unsigned int version;
  163|       |
  164|     62|	sb = blkid_probe_get_sb(pr, mag, struct verity_sb);
  ------------------
  |  |  451|     62|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
  165|     62|	if (sb == NULL)
  ------------------
  |  Branch (165:6): [True: 0, False: 62]
  ------------------
  166|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (166:10): [True: 0, False: 0]
  ------------------
  167|       |
  168|     62|	version = le32_to_cpu(sb->version);
  ------------------
  |  |  137|     62|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  169|     62|	if (version != 1)
  ------------------
  |  Branch (169:6): [True: 61, False: 1]
  ------------------
  170|     61|		return 1;
  171|       |
  172|      1|	blkid_probe_set_uuid(pr, sb->uuid);
  173|      1|	blkid_probe_sprintf_version(pr, "%u", version);
  174|      1|	return 0;
  175|     62|}
lvm.c:probe_integrity:
  189|     13|{
  190|     13|	const struct integrity_sb *sb;
  191|       |
  192|     13|	sb = blkid_probe_get_sb(pr, mag, struct integrity_sb);
  ------------------
  |  |  451|     13|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
  193|     13|	if (sb == NULL)
  ------------------
  |  Branch (193:6): [True: 0, False: 13]
  ------------------
  194|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (194:10): [True: 0, False: 0]
  ------------------
  195|       |
  196|     13|	if (!sb->version)
  ------------------
  |  Branch (196:6): [True: 11, False: 2]
  ------------------
  197|     11|		return 1;
  198|       |
  199|      2|	blkid_probe_sprintf_version(pr, "%u", sb->version);
  200|      2|	return 0;
  201|     13|}

minix.c:probe_minix:
   76|  2.50k|{
   77|  2.50k|	const unsigned char *ext;
   78|  2.50k|	const unsigned char *data;
   79|  2.50k|	int version = 0, swabme = 0;
   80|  2.50k|	unsigned long zones, ninodes, imaps, zmaps;
   81|  2.50k|	off_t firstz;
   82|  2.50k|	size_t zone_size;
   83|  2.50k|	unsigned block_size;
   84|       |
   85|  2.50k|	data = blkid_probe_get_buffer(pr, 1024,
   86|  2.50k|			max(sizeof(struct minix_super_block),
  ------------------
  |  |  214|  2.50k|# define max(x, y) __extension__ ({		\
  |  |  215|  2.50k|	__typeof__(x) _max1 = (x);		\
  |  |  216|  2.50k|	__typeof__(y) _max2 = (y);		\
  |  |  217|  2.50k|	(void) (&_max1 == &_max2);		\
  |  |  218|  2.50k|	_max1 > _max2 ? _max1 : _max2; })
  |  |  ------------------
  |  |  |  Branch (218:2): [True: 0, False: 2.50k]
  |  |  ------------------
  ------------------
   87|  2.50k|			    sizeof(struct minix3_super_block)));
   88|  2.50k|	if (!data)
  ------------------
  |  Branch (88:6): [True: 0, False: 2.50k]
  ------------------
   89|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (89:10): [True: 0, False: 0]
  ------------------
   90|  2.50k|	version = get_minix_version(data, &swabme);
   91|  2.50k|	switch (version) {
   92|  1.73k|	case 1:
  ------------------
  |  Branch (92:2): [True: 1.73k, False: 771]
  ------------------
   93|  2.25k|	case 2: {
  ------------------
  |  Branch (93:2): [True: 516, False: 1.99k]
  ------------------
   94|  2.25k|		const struct minix_super_block *sb = (const struct minix_super_block *) data;
   95|       |
   96|  2.25k|		uint16_t state = minix_swab16(swabme, sb->s_state);
  ------------------
  |  |   16|  2.25k|#define minix_swab16(doit, num)	((uint16_t) (doit ? swab16(num) : num))
  |  |  ------------------
  |  |  |  |  124|  2.25k|#define swab16(x) bswap_16(x)
  |  |  ------------------
  |  |  |  Branch (16:46): [True: 854, False: 1.40k]
  |  |  ------------------
  ------------------
   97|  2.25k|		if ((state & (MINIX_VALID_FS | MINIX_ERROR_FS)) != state)
  ------------------
  |  |   77|  2.25k|#define MINIX_VALID_FS       0x0001          /* Clean fs. */
  ------------------
              		if ((state & (MINIX_VALID_FS | MINIX_ERROR_FS)) != state)
  ------------------
  |  |   78|  2.25k|#define MINIX_ERROR_FS       0x0002          /* fs has errors. */
  ------------------
  |  Branch (97:7): [True: 1.81k, False: 443]
  ------------------
   98|  1.81k|			return 1;
   99|       |
  100|    443|		zones = version == 2 ? minix_swab32(swabme, sb->s_zones) :
  ------------------
  |  |   17|    139|#define minix_swab32(doit, num)	((uint32_t) (doit ? swab32(num) : num))
  |  |  ------------------
  |  |  |  |  125|    139|#define swab32(x) bswap_32(x)
  |  |  ------------------
  |  |  |  Branch (17:46): [True: 33, False: 106]
  |  |  ------------------
  ------------------
  |  Branch (100:11): [True: 139, False: 304]
  ------------------
  101|    443|				       minix_swab16(swabme, sb->s_nzones);
  ------------------
  |  |   16|    747|#define minix_swab16(doit, num)	((uint16_t) (doit ? swab16(num) : num))
  |  |  ------------------
  |  |  |  |  124|    304|#define swab16(x) bswap_16(x)
  |  |  ------------------
  |  |  |  Branch (16:46): [True: 129, False: 175]
  |  |  ------------------
  ------------------
  102|    443|		ninodes = minix_swab16(swabme, sb->s_ninodes);
  ------------------
  |  |   16|    443|#define minix_swab16(doit, num)	((uint16_t) (doit ? swab16(num) : num))
  |  |  ------------------
  |  |  |  |  124|    443|#define swab16(x) bswap_16(x)
  |  |  ------------------
  |  |  |  Branch (16:46): [True: 162, False: 281]
  |  |  ------------------
  ------------------
  103|    443|		imaps   = minix_swab16(swabme, sb->s_imap_blocks);
  ------------------
  |  |   16|    443|#define minix_swab16(doit, num)	((uint16_t) (doit ? swab16(num) : num))
  |  |  ------------------
  |  |  |  |  124|    443|#define swab16(x) bswap_16(x)
  |  |  ------------------
  |  |  |  Branch (16:46): [True: 162, False: 281]
  |  |  ------------------
  ------------------
  104|    443|		zmaps   = minix_swab16(swabme, sb->s_zmap_blocks);
  ------------------
  |  |   16|    443|#define minix_swab16(doit, num)	((uint16_t) (doit ? swab16(num) : num))
  |  |  ------------------
  |  |  |  |  124|    443|#define swab16(x) bswap_16(x)
  |  |  ------------------
  |  |  |  Branch (16:46): [True: 162, False: 281]
  |  |  ------------------
  ------------------
  105|    443|		firstz  = minix_swab16(swabme, sb->s_firstdatazone);
  ------------------
  |  |   16|    443|#define minix_swab16(doit, num)	((uint16_t) (doit ? swab16(num) : num))
  |  |  ------------------
  |  |  |  |  124|    443|#define swab16(x) bswap_16(x)
  |  |  ------------------
  |  |  |  Branch (16:46): [True: 162, False: 281]
  |  |  ------------------
  ------------------
  106|    443|		zone_size = sb->s_log_zone_size;
  107|    443|		block_size = 1024;
  108|    443|		break;
  109|  2.25k|	}
  110|    131|	case 3: {
  ------------------
  |  Branch (110:2): [True: 131, False: 2.37k]
  ------------------
  111|    131|		const struct minix3_super_block *sb = (const struct minix3_super_block *) data;
  112|       |
  113|    131|		zones = minix_swab32(swabme, sb->s_zones);
  ------------------
  |  |   17|    131|#define minix_swab32(doit, num)	((uint32_t) (doit ? swab32(num) : num))
  |  |  ------------------
  |  |  |  |  125|    131|#define swab32(x) bswap_32(x)
  |  |  ------------------
  |  |  |  Branch (17:46): [True: 0, False: 131]
  |  |  ------------------
  ------------------
  114|    131|		ninodes = minix_swab32(swabme, sb->s_ninodes);
  ------------------
  |  |   17|    131|#define minix_swab32(doit, num)	((uint32_t) (doit ? swab32(num) : num))
  |  |  ------------------
  |  |  |  |  125|    131|#define swab32(x) bswap_32(x)
  |  |  ------------------
  |  |  |  Branch (17:46): [True: 0, False: 131]
  |  |  ------------------
  ------------------
  115|    131|		imaps   = minix_swab16(swabme, sb->s_imap_blocks);
  ------------------
  |  |   16|    131|#define minix_swab16(doit, num)	((uint16_t) (doit ? swab16(num) : num))
  |  |  ------------------
  |  |  |  |  124|    131|#define swab16(x) bswap_16(x)
  |  |  ------------------
  |  |  |  Branch (16:46): [True: 0, False: 131]
  |  |  ------------------
  ------------------
  116|    131|		zmaps   = minix_swab16(swabme, sb->s_zmap_blocks);
  ------------------
  |  |   16|    131|#define minix_swab16(doit, num)	((uint16_t) (doit ? swab16(num) : num))
  |  |  ------------------
  |  |  |  |  124|    131|#define swab16(x) bswap_16(x)
  |  |  ------------------
  |  |  |  Branch (16:46): [True: 0, False: 131]
  |  |  ------------------
  ------------------
  117|    131|		firstz  = minix_swab16(swabme, sb->s_firstdatazone);
  ------------------
  |  |   16|    131|#define minix_swab16(doit, num)	((uint16_t) (doit ? swab16(num) : num))
  |  |  ------------------
  |  |  |  |  124|    131|#define swab16(x) bswap_16(x)
  |  |  ------------------
  |  |  |  Branch (16:46): [True: 0, False: 131]
  |  |  ------------------
  ------------------
  118|    131|		zone_size = sb->s_log_zone_size;
  119|    131|		block_size = minix_swab16(swabme, sb->s_blocksize);
  ------------------
  |  |   16|    131|#define minix_swab16(doit, num)	((uint16_t) (doit ? swab16(num) : num))
  |  |  ------------------
  |  |  |  |  124|    131|#define swab16(x) bswap_16(x)
  |  |  ------------------
  |  |  |  Branch (16:46): [True: 0, False: 131]
  |  |  ------------------
  ------------------
  120|       |
  121|    131|		break;
  122|  2.25k|	}
  123|    124|	default:
  ------------------
  |  Branch (123:2): [True: 124, False: 2.38k]
  ------------------
  124|    124|		return 1;
  125|  2.50k|	}
  126|       |
  127|       |	/* sanity checks to be sure that the FS is really minix.
  128|       |	 * see disk-utils/fsck.minix.c read_superblock
  129|       |	 */
  130|    574|	if (zone_size != 0 || ninodes == 0 || ninodes == UINT32_MAX)
  ------------------
  |  Branch (130:6): [True: 151, False: 423]
  |  Branch (130:24): [True: 79, False: 344]
  |  Branch (130:40): [True: 5, False: 339]
  ------------------
  131|    235|		return 1;
  132|    339|	if (imaps * MINIX_BLOCK_SIZE * 8 < ninodes + 1)
  ------------------
  |  |   68|    339|#define MINIX_BLOCK_SIZE     (1 << MINIX_BLOCK_SIZE_BITS)
  |  |  ------------------
  |  |  |  |   67|    339|#define MINIX_BLOCK_SIZE_BITS 10
  |  |  ------------------
  ------------------
  |  Branch (132:6): [True: 195, False: 144]
  ------------------
  133|    195|		return 1;
  134|    144|	if (firstz > (off_t) zones)
  ------------------
  |  Branch (134:6): [True: 27, False: 117]
  ------------------
  135|     27|		return 1;
  136|    117|	if (zmaps * MINIX_BLOCK_SIZE * 8 < zones - firstz + 1)
  ------------------
  |  |   68|    117|#define MINIX_BLOCK_SIZE     (1 << MINIX_BLOCK_SIZE_BITS)
  |  |  ------------------
  |  |  |  |   67|    117|#define MINIX_BLOCK_SIZE_BITS 10
  |  |  ------------------
  ------------------
  |  Branch (136:6): [True: 66, False: 51]
  ------------------
  137|     66|		return 1;
  138|       |
  139|       |	/* unfortunately, some parts of ext3 is sometimes possible to
  140|       |	 * interpreted as minix superblock. So check for extN magic
  141|       |	 * string. (For extN magic string and offsets see ext.c.)
  142|       |	 */
  143|     51|	ext = blkid_probe_get_buffer(pr, 0x400 + 0x38, 2);
  144|     51|	if (!ext)
  ------------------
  |  Branch (144:6): [True: 0, False: 51]
  ------------------
  145|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (145:10): [True: 0, False: 0]
  ------------------
  146|       |
  147|     51|	if (memcmp(ext, "\123\357", 2) == 0)
  ------------------
  |  Branch (147:6): [True: 35, False: 16]
  ------------------
  148|     35|		return 1;
  149|       |
  150|     16|	blkid_probe_sprintf_version(pr, "%d", version);
  151|     16|	blkid_probe_set_fsblocksize(pr, block_size);
  152|     16|	blkid_probe_set_block_size(pr, block_size);
  153|     16|	blkid_probe_set_fsendianness(pr, !swabme ?
  ------------------
  |  Branch (153:35): [True: 9, False: 7]
  ------------------
  154|      9|			BLKID_ENDIANNESS_NATIVE : BLKID_ENDIANNESS_OTHER);
  ------------------
  |  |   17|      9|#define BLKID_ENDIANNESS_NATIVE BLKID_ENDIANNESS_LITTLE
  ------------------
              			BLKID_ENDIANNESS_NATIVE : BLKID_ENDIANNESS_OTHER);
  ------------------
  |  |   18|     23|#define BLKID_ENDIANNESS_OTHER BLKID_ENDIANNESS_BIG
  ------------------
  155|     16|	return 0;
  156|     51|}
minix.c:get_minix_version:
   20|  2.50k|{
   21|  2.50k|	const struct minix_super_block *sb = (const struct minix_super_block *) data;
   22|  2.50k|	const struct minix3_super_block *sb3 = (const struct minix3_super_block *) data;
   23|  2.50k|	int version = 0;
   24|  2.50k|	char *endian;
   25|       |
   26|  2.50k|	*other_endian = 0;
   27|       |
   28|  2.50k|	switch (sb->s_magic) {
   29|    816|	case MINIX_SUPER_MAGIC:
  ------------------
  |  |   81|    816|#define MINIX_SUPER_MAGIC    0x137F          /* minix V1 fs, 14 char names */
  ------------------
  |  Branch (29:2): [True: 816, False: 1.69k]
  ------------------
   30|    989|	case MINIX_SUPER_MAGIC2:
  ------------------
  |  |   82|    989|#define MINIX_SUPER_MAGIC2   0x138F          /* minix V1 fs, 30 char names */
  ------------------
  |  Branch (30:2): [True: 173, False: 2.33k]
  ------------------
   31|    989|		version = 1;
   32|    989|		break;
   33|    144|	case MINIX2_SUPER_MAGIC:
  ------------------
  |  |   84|    144|#define MINIX2_SUPER_MAGIC   0x2468	     /* minix V2 fs, 14 char names */
  ------------------
  |  Branch (33:2): [True: 144, False: 2.36k]
  ------------------
   34|    411|	case MINIX2_SUPER_MAGIC2:
  ------------------
  |  |   85|    411|#define MINIX2_SUPER_MAGIC2  0x2478	     /* minix V2 fs, 30 char names */
  ------------------
  |  Branch (34:2): [True: 267, False: 2.24k]
  ------------------
   35|    411|		version = 2;
   36|    411|		break;
   37|  1.10k|	default:
  ------------------
  |  Branch (37:2): [True: 1.10k, False: 1.40k]
  ------------------
   38|  1.10k|		if (sb3->s_magic == MINIX3_SUPER_MAGIC)
  ------------------
  |  |   87|  1.10k|#define MINIX3_SUPER_MAGIC   0x4d5a          /* minix V3 fs (60 char names) */
  ------------------
  |  Branch (38:7): [True: 131, False: 978]
  ------------------
   39|    131|			version = 3;
   40|  1.10k|		break;
   41|  2.50k|	}
   42|       |
   43|  2.50k|	if (!version) {
  ------------------
  |  Branch (43:6): [True: 978, False: 1.53k]
  ------------------
   44|    978|		*other_endian = 1;
   45|       |
   46|    978|		switch (swab16(sb->s_magic)) {
  ------------------
  |  |  124|    978|#define swab16(x) bswap_16(x)
  ------------------
   47|    127|		case MINIX_SUPER_MAGIC:
  ------------------
  |  |   81|    127|#define MINIX_SUPER_MAGIC    0x137F          /* minix V1 fs, 14 char names */
  ------------------
  |  Branch (47:3): [True: 127, False: 851]
  ------------------
   48|    749|		case MINIX_SUPER_MAGIC2:
  ------------------
  |  |   82|    749|#define MINIX_SUPER_MAGIC2   0x138F          /* minix V1 fs, 30 char names */
  ------------------
  |  Branch (48:3): [True: 622, False: 356]
  ------------------
   49|    749|			version = 1;
   50|    749|			break;
   51|      4|		case MINIX2_SUPER_MAGIC:
  ------------------
  |  |   84|      4|#define MINIX2_SUPER_MAGIC   0x2468	     /* minix V2 fs, 14 char names */
  ------------------
  |  Branch (51:3): [True: 4, False: 974]
  ------------------
   52|    105|		case MINIX2_SUPER_MAGIC2:
  ------------------
  |  |   85|    105|#define MINIX2_SUPER_MAGIC2  0x2478	     /* minix V2 fs, 30 char names */
  ------------------
  |  Branch (52:3): [True: 101, False: 877]
  ------------------
   53|    105|			version = 2;
   54|    105|			break;
   55|    124|		default:
  ------------------
  |  Branch (55:3): [True: 124, False: 854]
  ------------------
   56|    124|			if (sb3->s_magic == MINIX3_SUPER_MAGIC)
  ------------------
  |  |   87|    124|#define MINIX3_SUPER_MAGIC   0x4d5a          /* minix V3 fs (60 char names) */
  ------------------
  |  Branch (56:8): [True: 0, False: 124]
  ------------------
   57|      0|				version = 3;
   58|    124|			break;
   59|    978|		}
   60|    978|	}
   61|  2.50k|	if (!version)
  ------------------
  |  Branch (61:6): [True: 124, False: 2.38k]
  ------------------
   62|    124|		return -1;
   63|       |
   64|       |#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
   65|       |	endian = *other_endian ? "LE" : "BE";
   66|       |#else
   67|  2.38k|	endian = *other_endian ? "BE" : "LE";
  ------------------
  |  Branch (67:11): [True: 854, False: 1.53k]
  ------------------
   68|  2.38k|#endif
   69|  2.38k|	DBG(LOWPROBE, ul_debug("minix version %d detected [%s]", version,
  ------------------
  |  |  358|  2.38k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  2.38k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  2.38k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  2.38k|	do { \
  |  |  |  |  |  |  |  |   76|  2.38k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  2.38k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  2.38k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 2.38k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  2.38k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 2.38k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  2.38k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  2.38k|		x; \
  |  |  |  |  |  |   85|  2.38k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   70|  2.38k|			       endian));
   71|  2.38k|	return version;
   72|  2.50k|}

mpool.c:probe_mpool:
   28|     86|{
   29|     86|	const struct omf_sb_descriptor *osd;
   30|     86|	uint32_t sb_crc;
   31|       |
   32|     86|	osd = blkid_probe_get_sb(pr, mag, struct omf_sb_descriptor);
  ------------------
  |  |  451|     86|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
   33|     86|	if (!osd)
  ------------------
  |  Branch (33:6): [True: 0, False: 86]
  ------------------
   34|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (34:10): [True: 0, False: 0]
  ------------------
   35|       |
   36|     86|	sb_crc = crc32c(~0L, (const void *)osd,
   37|     86|			offsetof(struct omf_sb_descriptor, osb_cksum1));
   38|     86|	sb_crc ^= ~0L;
   39|       |
   40|     86|	if (!blkid_probe_verify_csum(pr, sb_crc, le32_to_cpu(osd->osb_cksum1)))
  ------------------
  |  |  137|     86|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (40:6): [True: 85, False: 1]
  ------------------
   41|     85|		return 1;
   42|       |
   43|      1|	blkid_probe_set_label(pr, osd->osb_name, sizeof(osd->osb_name));
   44|      1|	blkid_probe_set_uuid(pr, osd->osb_poolid);
   45|       |
   46|      1|	return 0;
   47|     86|}

netware.c:probe_netware:
   69|     75|{
   70|     75|	const struct netware_super_block *nw;
   71|       |
   72|     75|	nw = blkid_probe_get_sb(pr, mag, struct netware_super_block);
  ------------------
  |  |  451|     75|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
   73|     75|	if (!nw)
  ------------------
  |  Branch (73:6): [True: 0, False: 75]
  ------------------
   74|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (74:10): [True: 0, False: 0]
  ------------------
   75|       |
   76|     75|	blkid_probe_set_uuid(pr, nw->SBH_PoolID);
   77|       |
   78|     75|	blkid_probe_sprintf_version(pr, "%u.%02u",
   79|     75|		 le16_to_cpu(nw->SBH_VersionMediaMajor),
  ------------------
  |  |  136|     75|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
   80|     75|		 le16_to_cpu(nw->SBH_VersionMediaMinor));
  ------------------
  |  |  136|     75|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
   81|       |
   82|     75|	return 0;
   83|     75|}

nilfs.c:probe_nilfs2:
  101|  5.94k|{
  102|  5.94k|	struct nilfs_super_block *sb, *sbp, *sbb;
  103|  5.94k|	int valid[2], swp = 0;
  104|  5.94k|	uint64_t magoff;
  105|       |
  106|       |	/* primary */
  107|  5.94k|	sbp = (struct nilfs_super_block *) blkid_probe_get_buffer(
  108|  5.94k|			pr, NILFS_SB_OFFSET, sizeof(struct nilfs_super_block));
  ------------------
  |  |   67|  5.94k|#define NILFS_SB_OFFSET		0x400
  ------------------
  109|  5.94k|	if (!sbp)
  ------------------
  |  Branch (109:6): [True: 0, False: 5.94k]
  ------------------
  110|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (110:10): [True: 0, False: 0]
  ------------------
  111|       |
  112|  5.94k|	valid[0] = nilfs_valid_sb(pr, sbp, 0);
  113|       |
  114|       |
  115|       |	/* backup */
  116|  5.94k|	sbb = (struct nilfs_super_block *) blkid_probe_get_buffer(
  117|  5.94k|			pr, NILFS_SBB_OFFSET(pr->size), sizeof(struct nilfs_super_block));
  ------------------
  |  |   68|  5.94k|#define NILFS_SBB_OFFSET(_sz)	((((_sz) / 0x200) - 8) * 0x200)
  ------------------
  118|  5.94k|	if (!sbb) {
  ------------------
  |  Branch (118:6): [True: 0, False: 5.94k]
  ------------------
  119|      0|		valid[1] = 0;
  120|       |
  121|       |		/* If the primary block is valid then continue and ignore also
  122|       |		 * I/O errors for backup block. Note the this is probably CD
  123|       |		 * where I/O errors and the end of the disk/session are "normal".
  124|       |		 */
  125|      0|		if (!valid[0])
  ------------------
  |  Branch (125:7): [True: 0, False: 0]
  ------------------
  126|      0|			return errno ? -errno : 1;
  ------------------
  |  Branch (126:11): [True: 0, False: 0]
  ------------------
  127|      0|	} else
  128|  5.94k|		valid[1] = nilfs_valid_sb(pr, sbb, 1);
  129|       |
  130|       |
  131|       |	/*
  132|       |	 * Compare two super blocks and set 1 in swp if the secondary
  133|       |	 * super block is valid and newer.  Otherwise, set 0 in swp.
  134|       |	 */
  135|  5.94k|	if (!valid[0] && !valid[1])
  ------------------
  |  Branch (135:6): [True: 5.93k, False: 2]
  |  Branch (135:19): [True: 5.93k, False: 0]
  ------------------
  136|  5.93k|		return 1;
  137|       |
  138|      2|	swp = valid[1] && (!valid[0] ||
  ------------------
  |  Branch (138:8): [True: 0, False: 2]
  |  Branch (138:21): [True: 0, False: 0]
  ------------------
  139|      0|			   le64_to_cpu(sbp->s_last_cno) >
  ------------------
  |  |  138|      0|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  |  Branch (139:7): [True: 0, False: 0]
  ------------------
  140|      0|			   le64_to_cpu(sbb->s_last_cno));
  ------------------
  |  |  138|      0|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  141|      2|	sb = swp ? sbb : sbp;
  ------------------
  |  Branch (141:7): [True: 0, False: 2]
  ------------------
  142|       |
  143|      2|	DBG(LOWPROBE, ul_debug("nilfs2: primary=%d, backup=%d, swap=%d",
  ------------------
  |  |  358|      2|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      2|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      2|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      2|	do { \
  |  |  |  |  |  |  |  |   76|      2|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      2|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      2|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      2|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      2|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      2|		x; \
  |  |  |  |  |  |   85|      2|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  144|      2|				valid[0], valid[1], swp));
  145|       |
  146|      2|	if (*(sb->s_volume_name) != '\0')
  ------------------
  |  Branch (146:6): [True: 1, False: 1]
  ------------------
  147|      1|		blkid_probe_set_label(pr, (unsigned char *) sb->s_volume_name,
  148|      1|				      sizeof(sb->s_volume_name));
  149|       |
  150|      2|	blkid_probe_set_uuid(pr, sb->s_uuid);
  151|      2|	blkid_probe_sprintf_version(pr, "%u", le32_to_cpu(sb->s_rev_level));
  ------------------
  |  |  137|      2|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  152|       |
  153|      2|	magoff = swp ? NILFS_SBB_OFFSET(pr->size) : NILFS_SB_OFFSET;
  ------------------
  |  |   68|      0|#define NILFS_SBB_OFFSET(_sz)	((((_sz) / 0x200) - 8) * 0x200)
  ------------------
              	magoff = swp ? NILFS_SBB_OFFSET(pr->size) : NILFS_SB_OFFSET;
  ------------------
  |  |   67|      4|#define NILFS_SB_OFFSET		0x400
  ------------------
  |  Branch (153:11): [True: 0, False: 2]
  ------------------
  154|      2|	magoff += offsetof(struct nilfs_super_block, s_magic);
  155|       |
  156|      2|	if (blkid_probe_set_magic(pr, magoff, sizeof(sb->s_magic),
  ------------------
  |  Branch (156:6): [True: 0, False: 2]
  ------------------
  157|      2|				(unsigned char *) &sb->s_magic))
  158|      0|		return 1;
  159|       |
  160|       |	/* kernel limits s_log_block_size to ilog2(NILFS_MAX_BLOCK_SIZE=65536) - 10 = 6,
  161|       |	 * values above 6 would overflow 1024U << shift */
  162|      2|	if (le32_to_cpu(sb->s_log_block_size) <= 6){
  ------------------
  |  |  137|      2|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (162:6): [True: 2, False: 0]
  ------------------
  163|      2|		blkid_probe_set_fsblocksize(pr, 1024U << le32_to_cpu(sb->s_log_block_size));
  ------------------
  |  |  137|      2|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  164|      2|		blkid_probe_set_block_size(pr, 1024U << le32_to_cpu(sb->s_log_block_size));
  ------------------
  |  |  137|      2|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  165|      2|	}
  166|       |
  167|      2|	return 0;
  168|      2|}
nilfs.c:nilfs_valid_sb:
   71|  11.8k|{
   72|  11.8k|	static unsigned char sum[4];
   73|  11.8k|	const int sumoff = offsetof(struct nilfs_super_block, s_sum);
   74|  11.8k|	size_t bytes;
   75|  11.8k|	const size_t crc_start = sumoff + 4;
   76|  11.8k|	uint32_t crc;
   77|       |
   78|  11.8k|	if (!sb || le16_to_cpu(sb->s_magic) != NILFS_SB_MAGIC)
  ------------------
  |  |  136|  11.8k|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
              	if (!sb || le16_to_cpu(sb->s_magic) != NILFS_SB_MAGIC)
  ------------------
  |  |   66|  11.8k|#define NILFS_SB_MAGIC		0x3434
  ------------------
  |  Branch (78:6): [True: 0, False: 11.8k]
  |  Branch (78:13): [True: 11.8k, False: 22]
  ------------------
   79|  11.8k|		return 0;
   80|       |
   81|     22|	if (is_bak && blkid_probe_is_wholedisk(pr) &&
  ------------------
  |  Branch (81:6): [True: 0, False: 22]
  |  Branch (81:16): [True: 0, False: 0]
  ------------------
   82|      0|	    le64_to_cpu(sb->s_dev_size) != (uint64_t) pr->size)
  ------------------
  |  |  138|      0|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  |  Branch (82:6): [True: 0, False: 0]
  ------------------
   83|      0|		return 0;
   84|       |
   85|     22|	bytes = le16_to_cpu(sb->s_bytes);
  ------------------
  |  |  136|     22|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
   86|       |	/* ensure that no underrun can happen in the length parameter
   87|       |	 * of the crc32 call or more data are processed than read into
   88|       |	 * sb */
   89|     22|	if (bytes < crc_start || bytes > sizeof(struct nilfs_super_block))
  ------------------
  |  Branch (89:6): [True: 4, False: 18]
  |  Branch (89:27): [True: 5, False: 13]
  ------------------
   90|      9|		return 0;
   91|       |
   92|     13|	crc = ul_crc32(le32_to_cpu(sb->s_crc_seed), (unsigned char *)sb, sumoff);
  ------------------
  |  |  137|     13|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
   93|     13|	crc = ul_crc32(crc, sum, 4);
   94|     13|	crc = ul_crc32(crc, (unsigned char *)sb + crc_start, bytes - crc_start);
   95|       |
   96|       |	return blkid_probe_verify_csum(pr, crc, le32_to_cpu(sb->s_sum));
  ------------------
  |  |  137|     13|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
   97|     22|}

blkid_probe_is_ntfs:
  237|    121|{
  238|    121|	const struct blkid_idmag *mag = NULL;
  239|    121|	int rc;
  240|       |
  241|    121|	rc = blkid_probe_get_idmag(pr, &ntfs_idinfo, NULL, &mag);
  242|    121|	if (rc < 0)
  ------------------
  |  Branch (242:6): [True: 0, False: 121]
  ------------------
  243|      0|		return rc;	/* error */
  244|    121|	if (rc != BLKID_PROBE_OK || !mag)
  ------------------
  |  |  465|    242|#define BLKID_PROBE_OK	0
  ------------------
  |  Branch (244:6): [True: 72, False: 49]
  |  Branch (244:30): [True: 0, False: 49]
  ------------------
  245|     72|		return 0;
  246|       |
  247|     49|	return __probe_ntfs(pr, mag, 0) == 0 ? 1 : 0;
  ------------------
  |  Branch (247:9): [True: 18, False: 31]
  ------------------
  248|    121|}
ntfs.c:__probe_ntfs:
   82|    609|{
   83|    609|	const struct ntfs_super_block *ns;
   84|    609|	const struct master_file_table_record *mft;
   85|       |
   86|    609|	uint32_t sectors_per_cluster, mft_record_size;
   87|    609|	uint16_t sector_size;
   88|    609|	uint64_t nr_clusters, off, attr_off;
   89|    609|	const unsigned char *buf_mft;
   90|       |
   91|    609|	ns = blkid_probe_get_sb(pr, mag, struct ntfs_super_block);
  ------------------
  |  |  451|    609|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
   92|    609|	if (!ns)
  ------------------
  |  Branch (92:6): [True: 0, False: 609]
  ------------------
   93|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (93:10): [True: 0, False: 0]
  ------------------
   94|       |
   95|       |	/*
   96|       |	 * Check bios parameters block
   97|       |	 */
   98|    609|	sector_size = le16_to_cpu(ns->bpb.sector_size);
  ------------------
  |  |  136|    609|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
   99|       |
  100|    609|	if (sector_size < 256 || sector_size > 4096 || !is_power_of_2(sector_size))
  ------------------
  |  Branch (100:6): [True: 18, False: 591]
  |  Branch (100:27): [True: 39, False: 552]
  |  Branch (100:49): [True: 33, False: 519]
  ------------------
  101|     90|		return 1;
  102|       |
  103|    519|	switch (ns->bpb.sectors_per_cluster) {
  104|    479|	case 1: case 2: case 4: case 8: case 16: case 32: case 64: case 128:
  ------------------
  |  Branch (104:2): [True: 308, False: 211]
  |  Branch (104:10): [True: 19, False: 500]
  |  Branch (104:18): [True: 57, False: 462]
  |  Branch (104:26): [True: 5, False: 514]
  |  Branch (104:34): [True: 30, False: 489]
  |  Branch (104:43): [True: 48, False: 471]
  |  Branch (104:52): [True: 7, False: 512]
  |  Branch (104:61): [True: 5, False: 514]
  ------------------
  105|    479|		sectors_per_cluster = ns->bpb.sectors_per_cluster;
  106|    479|		break;
  107|     40|	default:
  ------------------
  |  Branch (107:2): [True: 40, False: 479]
  ------------------
  108|     40|		if ((ns->bpb.sectors_per_cluster < 240)
  ------------------
  |  Branch (108:7): [True: 18, False: 22]
  ------------------
  109|     22|		    || (ns->bpb.sectors_per_cluster > 249))
  ------------------
  |  Branch (109:10): [True: 4, False: 18]
  ------------------
  110|     22|			return 1;
  111|     18|		sectors_per_cluster = 1 << (256 - ns->bpb.sectors_per_cluster);
  112|    519|	}
  113|       |
  114|    497|	if ((uint16_t) le16_to_cpu(ns->bpb.sector_size) *
  ------------------
  |  |  136|    497|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  |  Branch (114:6): [True: 5, False: 492]
  ------------------
  115|    497|			sectors_per_cluster > NTFS_MAX_CLUSTER_SIZE)
  ------------------
  |  |   76|    497|#define NTFS_MAX_CLUSTER_SIZE	(2 * 1024 * 1024)
  ------------------
  116|      5|		return 1;
  117|       |
  118|       |	/* Unused fields must be zero */
  119|    492|	if (le16_to_cpu(ns->bpb.reserved_sectors)
  ------------------
  |  |  136|    984|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (136:24): [True: 94, False: 398]
  |  |  ------------------
  ------------------
  120|    398|	    || le16_to_cpu(ns->bpb.root_entries)
  ------------------
  |  |  136|    890|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (136:24): [True: 25, False: 373]
  |  |  ------------------
  ------------------
  121|    373|	    || le16_to_cpu(ns->bpb.sectors)
  ------------------
  |  |  136|    865|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (136:24): [True: 12, False: 361]
  |  |  ------------------
  ------------------
  122|    361|	    || le16_to_cpu(ns->bpb.sectors_per_fat)
  ------------------
  |  |  136|    853|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (136:24): [True: 7, False: 354]
  |  |  ------------------
  ------------------
  123|    354|	    || le32_to_cpu(ns->bpb.large_sectors)
  ------------------
  |  |  137|    846|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (137:24): [True: 37, False: 317]
  |  |  ------------------
  ------------------
  124|    317|	    || ns->bpb.fats)
  ------------------
  |  Branch (124:9): [True: 11, False: 306]
  ------------------
  125|    186|		return 1;
  126|       |
  127|    306|	if ((uint8_t) ns->clusters_per_mft_record < 0xe1
  ------------------
  |  Branch (127:6): [True: 270, False: 36]
  ------------------
  128|    273|	    || (uint8_t) ns->clusters_per_mft_record > 0xf7) {
  ------------------
  |  Branch (128:9): [True: 3, False: 33]
  ------------------
  129|       |
  130|    273|		switch (ns->clusters_per_mft_record) {
  131|    262|		case 1: case 2: case 4: case 8: case 16: case 32: case 64:
  ------------------
  |  Branch (131:3): [True: 11, False: 262]
  |  Branch (131:11): [True: 6, False: 267]
  |  Branch (131:19): [True: 23, False: 250]
  |  Branch (131:27): [True: 6, False: 267]
  |  Branch (131:35): [True: 9, False: 264]
  |  Branch (131:44): [True: 11, False: 262]
  |  Branch (131:53): [True: 196, False: 77]
  ------------------
  132|    262|			break;
  133|     11|		default:
  ------------------
  |  Branch (133:3): [True: 11, False: 262]
  ------------------
  134|     11|			return 1;
  135|    273|		}
  136|    273|	}
  137|       |
  138|    295|	if (ns->clusters_per_mft_record > 0) {
  ------------------
  |  Branch (138:6): [True: 262, False: 33]
  ------------------
  139|    262|		mft_record_size = ns->clusters_per_mft_record *
  140|    262|				  sectors_per_cluster * sector_size;
  141|    262|	} else {
  142|     33|		int8_t mft_record_size_shift = 0 - ns->clusters_per_mft_record;
  143|     33|		if (mft_record_size_shift < 0 || mft_record_size_shift >= 31)
  ------------------
  |  Branch (143:7): [True: 0, False: 33]
  |  Branch (143:36): [True: 3, False: 30]
  ------------------
  144|      3|			return 1;
  145|     30|		mft_record_size = 1 << mft_record_size_shift;
  146|     30|	}
  147|       |
  148|    292|	nr_clusters = le64_to_cpu(ns->number_of_sectors) / sectors_per_cluster;
  ------------------
  |  |  138|    292|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  149|       |
  150|    292|	if ((le64_to_cpu(ns->mft_cluster_location) > nr_clusters) ||
  ------------------
  |  |  138|    292|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  |  Branch (150:6): [True: 58, False: 234]
  ------------------
  151|    234|	    (le64_to_cpu(ns->mft_mirror_cluster_location) > nr_clusters))
  ------------------
  |  |  138|    234|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  |  Branch (151:6): [True: 23, False: 211]
  ------------------
  152|     81|		return 1;
  153|       |
  154|       |
  155|    211|	off = le64_to_cpu(ns->mft_cluster_location) * sector_size *
  ------------------
  |  |  138|    211|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  156|    211|		sectors_per_cluster;
  157|       |
  158|    211|	DBG(LOWPROBE, ul_debug("NTFS: sector_size=%"PRIu16", mft_record_size=%"PRIu32", "
  ------------------
  |  |  358|    211|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|    211|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|    211|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|    211|	do { \
  |  |  |  |  |  |  |  |   76|    211|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|    211|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|    211|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 211]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|    211|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 211]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    211|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|    211|		x; \
  |  |  |  |  |  |   85|    211|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  159|    211|			"sectors_per_cluster=%"PRIu32", nr_clusters=%"PRIu64" "
  160|    211|			"cluster_offset=%"PRIu64"",
  161|    211|			sector_size, mft_record_size,
  162|    211|			sectors_per_cluster, nr_clusters,
  163|    211|			off));
  164|       |
  165|    211|	if (mft_record_size < 4)
  ------------------
  |  Branch (165:6): [True: 0, False: 211]
  ------------------
  166|      0|		return 1;
  167|       |
  168|    211|	buf_mft = blkid_probe_get_buffer(pr, off, mft_record_size);
  169|    211|	if (!buf_mft)
  ------------------
  |  Branch (169:6): [True: 91, False: 120]
  ------------------
  170|     91|		return errno ? -errno : 1;
  ------------------
  |  Branch (170:10): [True: 0, False: 91]
  ------------------
  171|       |
  172|    120|	if (memcmp(buf_mft, "FILE", 4) != 0)
  ------------------
  |  Branch (172:6): [True: 28, False: 92]
  ------------------
  173|     28|		return 1;
  174|       |
  175|     92|	off += MFT_RECORD_VOLUME * mft_record_size;
  ------------------
  |  |   74|     92|#define MFT_RECORD_VOLUME	3
  ------------------
  176|       |
  177|     92|	buf_mft = blkid_probe_get_buffer(pr, off, mft_record_size);
  178|     92|	if (!buf_mft)
  ------------------
  |  Branch (178:6): [True: 3, False: 89]
  ------------------
  179|      3|		return errno ? -errno : 1;
  ------------------
  |  Branch (179:10): [True: 0, False: 3]
  ------------------
  180|       |
  181|     89|	if (memcmp(buf_mft, "FILE", 4) != 0)
  ------------------
  |  Branch (181:6): [True: 16, False: 73]
  ------------------
  182|     16|		return 1;
  183|       |
  184|       |	/* return if caller does not care about UUID and LABEL */
  185|     73|	if (!save_info)
  ------------------
  |  Branch (185:6): [True: 18, False: 55]
  ------------------
  186|     18|		return 0;
  187|       |
  188|     55|	mft = (struct master_file_table_record *) buf_mft;
  189|     55|	attr_off = le16_to_cpu(mft->attrs_offset);
  ------------------
  |  |  136|     55|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  190|       |
  191|    134|	while (attr_off + sizeof(struct file_attribute) <= mft_record_size &&
  ------------------
  |  Branch (191:9): [True: 93, False: 41]
  ------------------
  192|     93|	       attr_off <= le32_to_cpu(mft->bytes_allocated)) {
  ------------------
  |  |  137|     93|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (192:9): [True: 90, False: 3]
  ------------------
  193|       |
  194|     90|		uint32_t attr_len;
  195|     90|		struct file_attribute *attr;
  196|       |
  197|     90|		attr = (struct file_attribute *) (buf_mft + attr_off);
  198|     90|		attr_len = le32_to_cpu(attr->len);
  ------------------
  |  |  137|     90|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  199|     90|		if (!attr_len)
  ------------------
  |  Branch (199:7): [True: 2, False: 88]
  ------------------
  200|      2|			break;
  201|       |
  202|     88|		if (le32_to_cpu(attr->type) == (uint32_t) MFT_RECORD_ATTR_END)
  ------------------
  |  |  137|     88|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              		if (le32_to_cpu(attr->type) == (uint32_t) MFT_RECORD_ATTR_END)
  ------------------
  |  |   79|     88|#define	MFT_RECORD_ATTR_END		0xffffffff
  ------------------
  |  Branch (202:7): [True: 3, False: 85]
  ------------------
  203|      3|			break;
  204|     85|		if (le32_to_cpu(attr->type) == (uint32_t) MFT_RECORD_ATTR_VOLUME_NAME) {
  ------------------
  |  |  137|     85|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              		if (le32_to_cpu(attr->type) == (uint32_t) MFT_RECORD_ATTR_VOLUME_NAME) {
  ------------------
  |  |   78|     85|#define	MFT_RECORD_ATTR_VOLUME_NAME	0x60
  ------------------
  |  Branch (204:7): [True: 6, False: 79]
  ------------------
  205|      6|			unsigned int val_off = le16_to_cpu(attr->value_offset);
  ------------------
  |  |  136|      6|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  206|      6|			unsigned int val_len = le32_to_cpu(attr->value_len);
  ------------------
  |  |  137|      6|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  207|      6|			unsigned char *val = ((uint8_t *) attr) + val_off;
  208|       |
  209|      6|			if (val_off <= mft_record_size - attr_off &&
  ------------------
  |  Branch (209:8): [True: 3, False: 3]
  ------------------
  210|      3|			    val_len <= mft_record_size - attr_off - val_off)
  ------------------
  |  Branch (210:8): [True: 2, False: 1]
  ------------------
  211|      2|				blkid_probe_set_utf8label(pr, val, val_len,
  212|      2|							  UL_ENCODE_UTF16LE);
  213|      6|			break;
  214|      6|		}
  215|       |
  216|     79|		attr_off += attr_len;
  217|     79|	}
  218|       |
  219|       |
  220|     55|	blkid_probe_set_fsblocksize(pr, sector_size * sectors_per_cluster);
  221|     55|	blkid_probe_set_block_size(pr, sector_size);
  222|     55|	blkid_probe_set_fssize(pr, le64_to_cpu(ns->number_of_sectors) * sector_size);
  ------------------
  |  |  138|     55|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  223|       |
  224|     55|	blkid_probe_sprintf_uuid(pr,
  225|     55|			(unsigned char *) &ns->volume_serial,
  226|     55|			sizeof(ns->volume_serial),
  227|     55|			"%016" PRIX64, le64_to_cpu(ns->volume_serial));
  ------------------
  |  |  138|     55|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  228|     55|	return 0;
  229|     73|}
ntfs.c:probe_ntfs:
  232|    560|{
  233|    560|	return __probe_ntfs(pr, mag, 1);
  234|    560|}

nvidia_raid.c:probe_nvraid:
   46|  5.99k|{
   47|  5.99k|	uint64_t off;
   48|  5.99k|	struct nv_metadata *nv;
   49|       |
   50|  5.99k|	if (!S_ISREG(pr->mode) && !blkid_probe_is_wholedisk(pr))
  ------------------
  |  Branch (50:6): [True: 0, False: 5.99k]
  |  Branch (50:28): [True: 0, False: 0]
  ------------------
   51|      0|		return 1;
   52|       |
   53|  5.99k|	off = ((pr->size / 0x200) - 2) * 0x200;
   54|  5.99k|	nv = (struct nv_metadata *)
   55|  5.99k|		blkid_probe_get_buffer(pr,
   56|  5.99k|				off,
   57|  5.99k|				NVIDIA_SUPERBLOCK_SIZE);
  ------------------
  |  |   27|  5.99k|#define NVIDIA_SUPERBLOCK_SIZE		120
  ------------------
   58|  5.99k|	if (!nv)
  ------------------
  |  Branch (58:6): [True: 0, False: 5.99k]
  ------------------
   59|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (59:10): [True: 0, False: 0]
  ------------------
   60|       |
   61|  5.99k|	if (memcmp(nv->vendor, NVIDIA_SIGNATURE, sizeof(NVIDIA_SIGNATURE)-1) != 0)
  ------------------
  |  |   26|  5.99k|#define NVIDIA_SIGNATURE		"NVIDIA  "
  ------------------
              	if (memcmp(nv->vendor, NVIDIA_SIGNATURE, sizeof(NVIDIA_SIGNATURE)-1) != 0)
  ------------------
  |  |   26|  5.99k|#define NVIDIA_SIGNATURE		"NVIDIA  "
  ------------------
  |  Branch (61:6): [True: 5.99k, False: 0]
  ------------------
   62|  5.99k|		return 1;
   63|      0|	if (le32_to_cpu(nv->size) != NVIDIA_SUPERBLOCK_SIZE / 4)
  ------------------
  |  |  137|      0|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              	if (le32_to_cpu(nv->size) != NVIDIA_SUPERBLOCK_SIZE / 4)
  ------------------
  |  |   27|      0|#define NVIDIA_SUPERBLOCK_SIZE		120
  ------------------
  |  Branch (63:6): [True: 0, False: 0]
  ------------------
   64|      0|		return 1;
   65|      0|	if (!nvraid_verify_checksum(pr, nv, NVIDIA_SUPERBLOCK_SIZE))
  ------------------
  |  |   27|      0|#define NVIDIA_SUPERBLOCK_SIZE		120
  ------------------
  |  Branch (65:6): [True: 0, False: 0]
  ------------------
   66|      0|		return 1;
   67|      0|	if (blkid_probe_sprintf_version(pr, "%u", le16_to_cpu(nv->version)) != 0)
  ------------------
  |  |  136|      0|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  |  Branch (67:6): [True: 0, False: 0]
  ------------------
   68|      0|		return 1;
   69|      0|	if (blkid_probe_set_magic(pr, off, sizeof(nv->vendor),
  ------------------
  |  Branch (69:6): [True: 0, False: 0]
  ------------------
   70|      0|				(unsigned char *) nv->vendor))
   71|      0|		return 1;
   72|      0|	return 0;
   73|      0|}

ocfs.c:probe_ocfs:
  102|     55|{
  103|     55|	const unsigned char *buf;
  104|     55|	struct ocfs_volume_header ovh;
  105|     55|	struct ocfs_volume_label ovl;
  106|     55|	uint32_t maj, min;
  107|       |
  108|       |	/* header */
  109|     55|	buf = blkid_probe_get_buffer(pr, mag->kboff << 10,
  110|     55|			sizeof(struct ocfs_volume_header));
  111|     55|	if (!buf)
  ------------------
  |  Branch (111:6): [True: 0, False: 55]
  ------------------
  112|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (112:10): [True: 0, False: 0]
  ------------------
  113|     55|	memcpy(&ovh, buf, sizeof(ovh));
  114|       |
  115|       |	/* label */
  116|     55|	buf = blkid_probe_get_buffer(pr, (mag->kboff << 10) + 512,
  117|     55|			sizeof(struct ocfs_volume_label));
  118|     55|	if (!buf)
  ------------------
  |  Branch (118:6): [True: 0, False: 55]
  ------------------
  119|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (119:10): [True: 0, False: 0]
  ------------------
  120|     55|	memcpy(&ovl, buf, sizeof(ovl));
  121|       |
  122|     55|	maj = ocfsmajor(ovh);
  ------------------
  |  |   33|     55|#define ocfsmajor(o) ( (uint32_t) o.major_version[0] \
  |  |   34|     55|                   + (((uint32_t) o.major_version[1]) << 8) \
  |  |   35|     55|                   + (((uint32_t) o.major_version[2]) << 16) \
  |  |   36|     55|                   + (((uint32_t) o.major_version[3]) << 24))
  ------------------
  123|     55|	min = ocfsminor(ovh);
  ------------------
  |  |   38|     55|#define ocfsminor(o) ( (uint32_t) o.minor_version[0] \
  |  |   39|     55|                   + (((uint32_t) o.minor_version[1]) << 8) \
  |  |   40|     55|                   + (((uint32_t) o.minor_version[2]) << 16) \
  |  |   41|     55|                   + (((uint32_t) o.minor_version[3]) << 24))
  ------------------
  124|       |
  125|     55|	if (maj == 1)
  ------------------
  |  Branch (125:6): [True: 0, False: 55]
  ------------------
  126|      0|		blkid_probe_set_value(pr, "SEC_TYPE",
  127|      0|				(unsigned char *) "ocfs1", sizeof("ocfs1"));
  128|     55|	else if (maj >= 9)
  ------------------
  |  Branch (128:11): [True: 55, False: 0]
  ------------------
  129|     55|		blkid_probe_set_value(pr, "SEC_TYPE",
  130|     55|				(unsigned char *) "ntocfs", sizeof("ntocfs"));
  131|       |
  132|     55|	if (ocfslabellen(ovl) < sizeof(ovl.label))
  ------------------
  |  |   43|     55|#define ocfslabellen(o)	((uint32_t)o.label_len[0] + (((uint32_t) o.label_len[1]) << 8))
  ------------------
  |  Branch (132:6): [True: 24, False: 31]
  ------------------
  133|     24|		blkid_probe_set_label(pr, (unsigned char *) ovl.label,
  134|     24|					ocfslabellen(ovl));
  ------------------
  |  |   43|     24|#define ocfslabellen(o)	((uint32_t)o.label_len[0] + (((uint32_t) o.label_len[1]) << 8))
  ------------------
  135|     55|	if (ocfsmountlen(ovh) < sizeof(ovh.mount))
  ------------------
  |  |   44|     55|#define ocfsmountlen(o)	((uint32_t)o.mount_len[0] + (((uint32_t) o.mount_len[1]) << 8))
  ------------------
  |  Branch (135:6): [True: 32, False: 23]
  ------------------
  136|     32|		blkid_probe_set_value(pr, "MOUNT", (unsigned char *) ovh.mount,
  137|     32|					ocfsmountlen(ovh));
  ------------------
  |  |   44|     32|#define ocfsmountlen(o)	((uint32_t)o.mount_len[0] + (((uint32_t) o.mount_len[1]) << 8))
  ------------------
  138|     55|	blkid_probe_set_uuid(pr, ovl.vol_id);
  139|     55|	blkid_probe_sprintf_version(pr, "%u.%u", maj, min);
  140|     55|	return 0;
  141|     55|}
ocfs.c:probe_ocfs2:
  144|    198|{
  145|    198|	const struct ocfs2_super_block *osb;
  146|       |
  147|    198|	osb = blkid_probe_get_sb(pr, mag, struct ocfs2_super_block);
  ------------------
  |  |  451|    198|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
  148|    198|	if (!osb)
  ------------------
  |  Branch (148:6): [True: 0, False: 198]
  ------------------
  149|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (149:10): [True: 0, False: 0]
  ------------------
  150|       |
  151|    198|	blkid_probe_set_label(pr, (unsigned char *) osb->s_label, sizeof(osb->s_label));
  152|    198|	blkid_probe_set_uuid(pr, osb->s_uuid);
  153|       |
  154|    198|	blkid_probe_sprintf_version(pr, "%u.%u",
  155|    198|		le16_to_cpu(osb->s_major_rev_level),
  ------------------
  |  |  136|    198|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  156|    198|		le16_to_cpu(osb->s_minor_rev_level));
  ------------------
  |  |  136|    198|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  157|       |
  158|    198|	if (le32_to_cpu(osb->s_blocksize_bits) < 32){
  ------------------
  |  |  137|    198|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (158:6): [True: 61, False: 137]
  ------------------
  159|     61|		blkid_probe_set_fsblocksize(pr, 1U << le32_to_cpu(osb->s_blocksize_bits));
  ------------------
  |  |  137|     61|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  160|     61|		blkid_probe_set_block_size(pr, 1U << le32_to_cpu(osb->s_blocksize_bits));
  ------------------
  |  |  137|     61|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  161|     61|	}
  162|       |
  163|    198|	return 0;
  164|    198|}
ocfs.c:probe_oracleasm:
  167|    138|{
  168|    138|	const struct oracle_asm_disk_label *dl;
  169|       |
  170|    138|	dl = blkid_probe_get_sb(pr, mag, struct oracle_asm_disk_label);
  ------------------
  |  |  451|    138|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
  171|    138|	if (!dl)
  ------------------
  |  Branch (171:6): [True: 0, False: 138]
  ------------------
  172|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (172:10): [True: 0, False: 0]
  ------------------
  173|       |
  174|    138|	blkid_probe_set_label(pr, (unsigned char *) dl->dl_id, sizeof(dl->dl_id));
  175|    138|	return 0;
  176|    138|}

promise_raid.c:probe_pdcraid:
   29|  5.99k|{
   30|  5.99k|	size_t i;
   31|  5.99k|	static unsigned int sectors[] = {
   32|  5.99k|	  63, 255, 256, 16, 399, 591, 675, 735, 911, 974, 991, 951, 3087
   33|  5.99k|	};
   34|  5.99k|	uint64_t nsectors;
   35|       |
   36|  5.99k|	if (!S_ISREG(pr->mode) && !blkid_probe_is_wholedisk(pr))
  ------------------
  |  Branch (36:6): [True: 0, False: 5.99k]
  |  Branch (36:28): [True: 0, False: 0]
  ------------------
   37|      0|		return 1;
   38|       |
   39|  5.99k|	nsectors = pr->size >> 9;
   40|       |
   41|  83.8k|	for (i = 0; i < ARRAY_SIZE(sectors); i++) {
  ------------------
  |  |  182|  83.8k|#define ARRAY_SIZE(arr) countof(arr)
  ------------------
  |  Branch (41:14): [True: 77.8k, False: 5.99k]
  ------------------
   42|  77.8k|		uint64_t off;
   43|  77.8k|		struct promise_metadata *pdc;
   44|       |
   45|  77.8k|		if (nsectors < sectors[i])
  ------------------
  |  Branch (45:7): [True: 0, False: 77.8k]
  ------------------
   46|      0|			return 1;
   47|       |
   48|  77.8k|		off = (nsectors - sectors[i]) << 9;
   49|  77.8k|		pdc = (struct promise_metadata *)
   50|  77.8k|				blkid_probe_get_buffer(pr,
   51|  77.8k|					off,
   52|  77.8k|					sizeof(struct promise_metadata));
   53|  77.8k|		if (!pdc)
  ------------------
  |  Branch (53:7): [True: 0, False: 77.8k]
  ------------------
   54|      0|			return errno ? -errno : 1;
  ------------------
  |  Branch (54:11): [True: 0, False: 0]
  ------------------
   55|       |
   56|  77.8k|		if (memcmp(pdc->sig, PDC_SIGNATURE,
  ------------------
  |  |   25|  77.8k|#define PDC_SIGNATURE		"Promise Technology, Inc."
  ------------------
  |  Branch (56:7): [True: 0, False: 77.8k]
  ------------------
   57|  77.8k|				sizeof(PDC_SIGNATURE) - 1) == 0) {
  ------------------
  |  |   25|  77.8k|#define PDC_SIGNATURE		"Promise Technology, Inc."
  ------------------
   58|       |
   59|      0|			if (blkid_probe_set_magic(pr, off, sizeof(pdc->sig),
  ------------------
  |  Branch (59:8): [True: 0, False: 0]
  ------------------
   60|      0|						(unsigned char *) pdc->sig))
   61|      0|				return 1;
   62|      0|			return 0;
   63|      0|		}
   64|  77.8k|	}
   65|  5.99k|	return 1;
   66|  5.99k|}

reiserfs.c:probe_reiser:
   43|     90|{
   44|     90|	const struct reiserfs_super_block *rs;
   45|     90|	unsigned int blocksize;
   46|       |
   47|     90|	rs = blkid_probe_get_sb(pr, mag, struct reiserfs_super_block);
  ------------------
  |  |  451|     90|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
   48|     90|	if (!rs)
  ------------------
  |  Branch (48:6): [True: 0, False: 90]
  ------------------
   49|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (49:10): [True: 0, False: 0]
  ------------------
   50|       |
   51|     90|	blocksize = le16_to_cpu(rs->rs_blocksize);
  ------------------
  |  |  136|     90|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
   52|       |
   53|       |	/* The blocksize must be at least 512B */
   54|     90|	if ((blocksize >> 9) == 0)
  ------------------
  |  Branch (54:6): [True: 37, False: 53]
  ------------------
   55|     37|		return 1;
   56|       |
   57|       |	/* If the superblock is inside the journal, we have the wrong one */
   58|     53|	if (mag->kboff / (blocksize >> 9) > le32_to_cpu(rs->rs_journal_block) / 2)
  ------------------
  |  |  137|     53|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (58:6): [True: 9, False: 44]
  ------------------
   59|      9|		return 1;
   60|       |
   61|       |	/* LABEL/UUID are only valid for later versions of Reiserfs v3.6. */
   62|     44|	if (mag->magic[6] == '2' || mag->magic[6] == '3') {
  ------------------
  |  Branch (62:6): [True: 0, False: 44]
  |  Branch (62:30): [True: 0, False: 44]
  ------------------
   63|      0|		if (*rs->rs_label)
  ------------------
  |  Branch (63:7): [True: 0, False: 0]
  ------------------
   64|      0|			blkid_probe_set_label(pr,
   65|      0|					(unsigned char *) rs->rs_label,
   66|      0|					sizeof(rs->rs_label));
   67|      0|		blkid_probe_set_uuid(pr, rs->rs_uuid);
   68|      0|	}
   69|       |
   70|     44|	if (mag->magic[6] == '3')
  ------------------
  |  Branch (70:6): [True: 0, False: 44]
  ------------------
   71|      0|		blkid_probe_set_version(pr, "JR");
   72|     44|	else if (mag->magic[6] == '2')
  ------------------
  |  Branch (72:11): [True: 0, False: 44]
  ------------------
   73|      0|		blkid_probe_set_version(pr, "3.6");
   74|     44|	else
   75|     44|		blkid_probe_set_version(pr, "3.5");
   76|       |
   77|     44|	blkid_probe_set_fsblocksize(pr, blocksize);
   78|     44|	blkid_probe_set_block_size(pr, blocksize);
   79|       |
   80|     44|	return 0;
   81|     53|}

romfs.c:probe_romfs:
   52|    112|{
   53|    112|	const struct romfs_super_block *ros;
   54|       |
   55|    112|	ros = blkid_probe_get_sb(pr, mag, struct romfs_super_block);
  ------------------
  |  |  451|    112|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
   56|    112|	if (!ros)
  ------------------
  |  Branch (56:6): [True: 0, False: 112]
  ------------------
   57|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (57:10): [True: 0, False: 0]
  ------------------
   58|       |
   59|    112|	if (!romfs_verify_csum(pr, mag, ros))
  ------------------
  |  Branch (59:6): [True: 112, False: 0]
  ------------------
   60|    112|		return 1;
   61|       |
   62|      0|	if (*((char *) ros->ros_volume) != '\0')
  ------------------
  |  Branch (62:6): [True: 0, False: 0]
  ------------------
   63|      0|		blkid_probe_set_label(pr, ros->ros_volume,
   64|      0|				sizeof(ros->ros_volume));
   65|       |
   66|      0|	blkid_probe_set_fsblocksize(pr, 1024);
   67|      0|	blkid_probe_set_fssize(pr, be32_to_cpu(ros->ros_full_size));
  ------------------
  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
   68|      0|	blkid_probe_set_block_size(pr, 1024);
   69|       |
   70|      0|	return 0;
   71|    112|}
romfs.c:romfs_verify_csum:
   29|    112|{
   30|    112|	uint32_t csummed_size = min((uint32_t) 512,
  ------------------
  |  |  206|    112|# define min(x, y) __extension__ ({		\
  |  |  207|    112|	__typeof__(x) _min1 = (x);		\
  |  |  208|    112|	__typeof__(y) _min2 = (y);		\
  |  |  209|    112|	(void) (&_min1 == &_min2);		\
  |  |  210|    112|	_min1 < _min2 ? _min1 : _min2; })
  |  |  ------------------
  |  |  |  Branch (210:2): [True: 86, False: 26]
  |  |  ------------------
  ------------------
   31|    112|			be32_to_cpu(ros->ros_full_size));
   32|    112|	const unsigned char *csummed;
   33|    112|	uint32_t csum;
   34|       |
   35|    112|	if (csummed_size % sizeof(uint32_t) != 0)
  ------------------
  |  Branch (35:6): [True: 6, False: 106]
  ------------------
   36|      6|		return 0;
   37|       |
   38|    106|	csummed = blkid_probe_get_sb_buffer(pr, mag, csummed_size);
   39|    106|	if (!csummed)
  ------------------
  |  Branch (39:6): [True: 8, False: 98]
  ------------------
   40|      8|		return 0;
   41|       |
   42|     98|	csum = 0;
   43|  11.4k|	while (csummed_size) {
  ------------------
  |  Branch (43:9): [True: 11.3k, False: 98]
  ------------------
   44|       |		csum += be32_to_cpu(*(uint32_t *) csummed);
  ------------------
  |  |  141|  11.3k|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
   45|  11.3k|		csummed_size -= sizeof(uint32_t);
   46|  11.3k|		csummed += sizeof(uint32_t);
   47|  11.3k|	}
   48|     98|	return blkid_probe_verify_csum(pr, csum, 0);
   49|    106|}

silicon_raid.c:probe_silraid:
   90|  5.99k|{
   91|  5.99k|	uint64_t off;
   92|  5.99k|	struct silicon_metadata *sil;
   93|       |
   94|  5.99k|	if (!S_ISREG(pr->mode) && !blkid_probe_is_wholedisk(pr))
  ------------------
  |  Branch (94:6): [True: 0, False: 5.99k]
  |  Branch (94:28): [True: 0, False: 0]
  ------------------
   95|      0|		return 1;
   96|       |
   97|  5.99k|	off = ((pr->size / 0x200) - 1) * 0x200;
   98|       |
   99|  5.99k|	sil = (struct silicon_metadata *)
  100|  5.99k|			blkid_probe_get_buffer(pr, off,
  101|  5.99k|				sizeof(struct silicon_metadata));
  102|  5.99k|	if (!sil)
  ------------------
  |  Branch (102:6): [True: 0, False: 5.99k]
  ------------------
  103|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (103:10): [True: 0, False: 0]
  ------------------
  104|       |
  105|  5.99k|	if (le32_to_cpu(sil->magic) != SILICON_MAGIC)
  ------------------
  |  |  137|  5.99k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              	if (le32_to_cpu(sil->magic) != SILICON_MAGIC)
  ------------------
  |  |   68|  5.99k|#define SILICON_MAGIC		0x2F000000
  ------------------
  |  Branch (105:6): [True: 5.99k, False: 0]
  ------------------
  106|  5.99k|		return 1;
  107|      0|	if (sil->disk_number >= 8)
  ------------------
  |  Branch (107:6): [True: 0, False: 0]
  ------------------
  108|      0|		return 1;
  109|      0|	if (!blkid_probe_verify_csum(pr, silraid_checksum(sil), le16_to_cpu(sil->checksum1)))
  ------------------
  |  |  136|      0|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  |  Branch (109:6): [True: 0, False: 0]
  ------------------
  110|      0|		return 1;
  111|       |
  112|      0|	if (blkid_probe_sprintf_version(pr, "%u.%u",
  ------------------
  |  Branch (112:6): [True: 0, False: 0]
  ------------------
  113|      0|				le16_to_cpu(sil->major_ver),
  ------------------
  |  |  136|      0|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  114|      0|				le16_to_cpu(sil->minor_ver)) != 0)
  ------------------
  |  |  136|      0|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  115|      0|		return 1;
  116|       |
  117|      0|	if (blkid_probe_set_magic(pr,
  ------------------
  |  Branch (117:6): [True: 0, False: 0]
  ------------------
  118|      0|			off + offsetof(struct silicon_metadata, magic),
  119|      0|			sizeof(sil->magic),
  120|      0|			(unsigned char *) &sil->magic))
  121|      0|		return 1;
  122|      0|	return 0;
  123|      0|}

squashfs.c:probe_squashfs:
   42|     48|{
   43|     48|	const struct sqsh_super_block *sq;
   44|     48|	uint16_t vermaj;
   45|     48|	uint16_t vermin;
   46|       |
   47|     48|	sq = blkid_probe_get_sb(pr, mag, struct sqsh_super_block);
  ------------------
  |  |  451|     48|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
   48|     48|	if (!sq)
  ------------------
  |  Branch (48:6): [True: 0, False: 48]
  ------------------
   49|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (49:10): [True: 0, False: 0]
  ------------------
   50|       |
   51|     48|	vermaj = le16_to_cpu(sq->version_major);
  ------------------
  |  |  136|     48|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
   52|     48|	vermin = le16_to_cpu(sq->version_minor);
  ------------------
  |  |  136|     48|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
   53|     48|	if (vermaj < 4)
  ------------------
  |  Branch (53:6): [True: 10, False: 38]
  ------------------
   54|     10|		return 1;
   55|       |
   56|     38|	blkid_probe_sprintf_version(pr, "%u.%u", vermaj, vermin);
   57|     38|	blkid_probe_set_fsblocksize(pr, le32_to_cpu(sq->block_size));
  ------------------
  |  |  137|     38|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
   58|     38|	blkid_probe_set_block_size(pr, le32_to_cpu(sq->block_size));
  ------------------
  |  |  137|     38|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
   59|     38|	blkid_probe_set_fssize(pr, le64_to_cpu(sq->bytes_used));
  ------------------
  |  |  138|     38|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
   60|       |
   61|     38|	return 0;
   62|     48|}
squashfs.c:probe_squashfs3:
   65|     88|{
   66|     88|	const struct sqsh_super_block *sq;
   67|     88|	uint16_t vermaj;
   68|     88|	uint16_t vermin;
   69|     88|	enum blkid_endianness endianness;
   70|       |
   71|     88|	sq = blkid_probe_get_sb(pr, mag, struct sqsh_super_block);
  ------------------
  |  |  451|     88|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
   72|     88|	if (!sq)
  ------------------
  |  Branch (72:6): [True: 0, False: 88]
  ------------------
   73|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (73:10): [True: 0, False: 0]
  ------------------
   74|       |
   75|     88|	if (strcmp(mag->magic, "sqsh") == 0) {
  ------------------
  |  Branch (75:6): [True: 40, False: 48]
  ------------------
   76|     40|		vermaj = be16_to_cpu(sq->version_major);
  ------------------
  |  |  140|     40|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
   77|     40|		vermin = be16_to_cpu(sq->version_minor);
  ------------------
  |  |  140|     40|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
   78|     40|		endianness = BLKID_ENDIANNESS_BIG;
   79|     48|	} else {
   80|     48|		vermaj = le16_to_cpu(sq->version_major);
  ------------------
  |  |  136|     48|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
   81|     48|		vermin = le16_to_cpu(sq->version_minor);
  ------------------
  |  |  136|     48|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
   82|     48|		endianness = BLKID_ENDIANNESS_LITTLE;
   83|     48|	}
   84|       |
   85|     88|	if (vermaj > 3)
  ------------------
  |  Branch (85:6): [True: 61, False: 27]
  ------------------
   86|     61|		return 1;
   87|       |
   88|     27|	blkid_probe_sprintf_version(pr, "%u.%u", vermaj, vermin);
   89|       |
   90|     27|	blkid_probe_set_fsblocksize(pr, 1024);
   91|     27|	blkid_probe_set_block_size(pr, 1024);
   92|     27|	blkid_probe_set_fsendianness(pr, endianness);
   93|       |
   94|     27|	return 0;
   95|     88|}

stratis.c:probe_stratis:
   84|    783|{
   85|    783|	const struct stratis_sb *stratis = NULL;
   86|    783|	const uint8_t *buf = blkid_probe_get_buffer(pr, 0, SB_AREA_SIZE);
  ------------------
  |  |   43|    783|#define SB_AREA_SIZE (BS * 16)
  |  |  ------------------
  |  |  |  |   40|    783|#define BS 512
  |  |  ------------------
  ------------------
   87|    783|	unsigned char uuid[STRATIS_UUID_STR_LEN];
   88|       |
   89|    783|	if (!buf)
  ------------------
  |  Branch (89:6): [True: 0, False: 783]
  ------------------
   90|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (90:10): [True: 0, False: 0]
  ------------------
   91|       |
   92|    783|	if (stratis_valid_sb(buf + FIRST_COPY_OFFSET)) {
  ------------------
  |  |   41|    783|#define FIRST_COPY_OFFSET BS
  |  |  ------------------
  |  |  |  |   40|    783|#define BS 512
  |  |  ------------------
  ------------------
  |  Branch (92:6): [True: 0, False: 783]
  ------------------
   93|      0|		stratis = (const struct stratis_sb *)(buf + FIRST_COPY_OFFSET);
  ------------------
  |  |   41|      0|#define FIRST_COPY_OFFSET BS
  |  |  ------------------
  |  |  |  |   40|      0|#define BS 512
  |  |  ------------------
  ------------------
   94|    783|	} else {
   95|    783|		if (!stratis_valid_sb(buf + SECOND_COPY_OFFSET))
  ------------------
  |  |   42|    783|#define SECOND_COPY_OFFSET (BS * 9)
  |  |  ------------------
  |  |  |  |   40|    783|#define BS 512
  |  |  ------------------
  ------------------
  |  Branch (95:7): [True: 782, False: 1]
  ------------------
   96|    782|			return 1;
   97|       |
   98|      1|		stratis = (const struct stratis_sb *)
   99|      1|				(buf + SECOND_COPY_OFFSET);
  ------------------
  |  |   42|      1|#define SECOND_COPY_OFFSET (BS * 9)
  |  |  ------------------
  |  |  |  |   40|      1|#define BS 512
  |  |  ------------------
  ------------------
  100|      1|	}
  101|       |
  102|      1|	stratis_format_uuid(stratis->dev_uuid, uuid);
  103|      1|	blkid_probe_strncpy_uuid(pr, uuid, sizeof(uuid));
  104|       |
  105|      1|	stratis_format_uuid(stratis->pool_uuid, uuid);
  106|      1|	blkid_probe_set_value(pr, "POOL_UUID", uuid, sizeof(uuid));
  107|       |
  108|      1|	blkid_probe_sprintf_value(pr, "BLOCKDEV_SECTORS", "%" PRIu64,
  109|      1|				le64_to_cpu(stratis->sectors));
  ------------------
  |  |  138|      1|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  110|      1|	blkid_probe_sprintf_value(pr, "BLOCKDEV_INITTIME", "%" PRIu64,
  111|       |				le64_to_cpu(stratis->initialization_time));
  ------------------
  |  |  138|      1|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  112|      1|	return 0;
  113|    783|}
stratis.c:stratis_valid_sb:
   53|  1.56k|{
   54|  1.56k|	const struct stratis_sb *stratis = (const struct stratis_sb *)p;
   55|  1.56k|	uint32_t crc = 0;
   56|       |
   57|       |	/* generate CRC from byte position 4 for length 508 == 512 byte sector */
   58|  1.56k|	crc = crc32c(~0L, p + sizeof(stratis->crc32),
   59|  1.56k|			BS - sizeof(stratis->crc32));
  ------------------
  |  |   40|  1.56k|#define BS 512
  ------------------
   60|  1.56k|	crc ^= ~0L;
   61|       |
   62|       |	return crc == le32_to_cpu(stratis->crc32);
  ------------------
  |  |  137|  1.56k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
   63|  1.56k|}
stratis.c:stratis_format_uuid:
   71|      2|{
   72|      2|	int i;
   73|       |
   74|     66|	for (i = 0; i < STRATIS_UUID_LEN; i++) {
  ------------------
  |  |   23|     66|#define STRATIS_UUID_LEN 32
  ------------------
  |  Branch (74:14): [True: 64, False: 2]
  ------------------
   75|     64|		*dst_uuid++ = *src_uuid++;
   76|     64|		if (i == 7 || i == 11 || i == 15 || i == 19)
  ------------------
  |  Branch (76:7): [True: 2, False: 62]
  |  Branch (76:17): [True: 2, False: 60]
  |  Branch (76:28): [True: 2, False: 58]
  |  Branch (76:39): [True: 2, False: 56]
  ------------------
   77|      8|			*dst_uuid ++ = '-';
   78|     64|	}
   79|      2|	*dst_uuid = '\0';
   80|      2|}

blkid_probe_enable_superblocks:
  212|  5.99k|{
  213|  5.99k|	pr->chains[BLKID_CHAIN_SUBLKS].enabled = enable;
  214|  5.99k|	return 0;
  215|  5.99k|}
blkid_probe_set_superblocks_flags:
  228|  5.99k|{
  229|  5.99k|	pr->chains[BLKID_CHAIN_SUBLKS].flags = flags;
  230|  5.99k|	return 0;
  231|  5.99k|}
blkid_probe_filter_superblocks_type:
  272|  5.99k|{
  273|  5.99k|	return __blkid_probe_filter_types(pr, BLKID_CHAIN_SUBLKS, flag, names);
  274|  5.99k|}
blkid_probe_set_version:
  548|    711|{
  549|    711|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
  550|       |
  551|    711|	if (chn->flags & BLKID_SUBLKS_VERSION)
  ------------------
  |  |  318|    711|#define BLKID_SUBLKS_VERSION	(1 << 8) /* read FS type from superblock */
  ------------------
  |  Branch (551:6): [True: 0, False: 711]
  ------------------
  552|      0|		return blkid_probe_set_value(pr, "VERSION",
  553|      0|				(const unsigned char *) version,
  554|      0|				strlen(version) + 1);
  555|    711|	return 0;
  556|    711|}
blkid_probe_sprintf_version:
  560|    936|{
  561|    936|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
  562|    936|	int rc = 0;
  563|       |
  564|    936|	if (chn->flags & BLKID_SUBLKS_VERSION) {
  ------------------
  |  |  318|    936|#define BLKID_SUBLKS_VERSION	(1 << 8) /* read FS type from superblock */
  ------------------
  |  Branch (564:6): [True: 0, False: 936]
  ------------------
  565|      0|		va_list ap;
  566|       |
  567|      0|		va_start(ap, fmt);
  568|      0|		rc = blkid_probe_vsprintf_value(pr, "VERSION", fmt, ap);
  569|       |		va_end(ap);
  570|      0|	}
  571|    936|	return rc;
  572|    936|}
blkid_probe_set_block_size:
  575|  1.22k|{
  576|  1.22k|	return blkid_probe_sprintf_value(pr, "BLOCK_SIZE", "%u", block_size);
  577|  1.22k|}
blkid_probe_set_fssize:
  604|    645|{
  605|    645|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
  606|       |
  607|    645|	if (!(chn->flags & BLKID_SUBLKS_FSINFO))
  ------------------
  |  |  321|    645|#define BLKID_SUBLKS_FSINFO	(1 << 11) /* read and define fs properties from superblock */
  ------------------
  |  Branch (607:6): [True: 645, False: 0]
  ------------------
  608|    645|		return 0;
  609|       |
  610|      0|	return blkid_probe_sprintf_value(pr, "FSSIZE", "%" PRIu64, size);
  611|    645|}
blkid_probe_set_fslastblock:
  614|    205|{
  615|    205|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
  616|       |
  617|    205|	if (!(chn->flags & BLKID_SUBLKS_FSINFO))
  ------------------
  |  |  321|    205|#define BLKID_SUBLKS_FSINFO	(1 << 11) /* read and define fs properties from superblock */
  ------------------
  |  Branch (617:6): [True: 205, False: 0]
  ------------------
  618|    205|		return 0;
  619|       |
  620|      0|	return blkid_probe_sprintf_value(pr, "FSLASTBLOCK", "%" PRIu64,
  621|      0|			lastblock);
  622|    205|}
blkid_probe_set_fsblocksize:
  625|  1.23k|{
  626|  1.23k|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
  627|       |
  628|  1.23k|	if (!(chn->flags & BLKID_SUBLKS_FSINFO))
  ------------------
  |  |  321|  1.23k|#define BLKID_SUBLKS_FSINFO	(1 << 11) /* read and define fs properties from superblock */
  ------------------
  |  Branch (628:6): [True: 1.23k, False: 0]
  ------------------
  629|  1.23k|		return 0;
  630|       |
  631|      0|	return blkid_probe_sprintf_value(pr, "FSBLOCKSIZE", "%" PRIu32,
  632|      0|			block_size);
  633|  1.23k|}
blkid_probe_set_fsendianness:
  636|    371|{
  637|    371|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
  638|    371|	const char *value;
  639|       |
  640|    371|	if (!(chn->flags & BLKID_SUBLKS_FSINFO))
  ------------------
  |  |  321|    371|#define BLKID_SUBLKS_FSINFO	(1 << 11) /* read and define fs properties from superblock */
  ------------------
  |  Branch (640:6): [True: 371, False: 0]
  ------------------
  641|    371|		return 0;
  642|       |
  643|      0|	switch (endianness) {
  644|      0|		case BLKID_ENDIANNESS_LITTLE:
  ------------------
  |  Branch (644:3): [True: 0, False: 0]
  ------------------
  645|      0|			value = "LITTLE";
  646|      0|			break;
  647|      0|		case BLKID_ENDIANNESS_BIG:
  ------------------
  |  Branch (647:3): [True: 0, False: 0]
  ------------------
  648|      0|			value = "BIG";
  649|      0|			break;
  650|      0|		default:
  ------------------
  |  Branch (650:3): [True: 0, False: 0]
  ------------------
  651|      0|			return -EINVAL;
  652|      0|	}
  653|       |
  654|      0|	return blkid_probe_set_value(pr, "ENDIANNESS",
  655|      0|			(const unsigned char *) value, strlen(value) + 1);
  656|       |
  657|      0|}
blkid_probe_set_id_label:
  661|    327|{
  662|    327|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
  663|    327|	struct blkid_prval *v;
  664|    327|	int rc = 0;
  665|       |
  666|    327|	if (!(chn->flags & BLKID_SUBLKS_LABEL))
  ------------------
  |  |  311|    327|#define BLKID_SUBLKS_LABEL	(1 << 1) /* read LABEL from superblock */
  ------------------
  |  Branch (666:6): [True: 327, False: 0]
  ------------------
  667|    327|		return 0;
  668|       |
  669|      0|	v = blkid_probe_assign_value(pr, name);
  670|      0|	if (!v)
  ------------------
  |  Branch (670:6): [True: 0, False: 0]
  ------------------
  671|      0|		return -ENOMEM;
  672|       |
  673|      0|	rc = blkid_probe_value_set_data(v, data, len);
  674|      0|	if (!rc) {
  ------------------
  |  Branch (674:6): [True: 0, False: 0]
  ------------------
  675|       |		/* remove white spaces */
  676|      0|		v->len = blkid_rtrim_whitespace(v->data) + 1;
  677|      0|		if (v->len > 1)
  ------------------
  |  Branch (677:7): [True: 0, False: 0]
  ------------------
  678|      0|			v->len = blkid_ltrim_whitespace(v->data) + 1;
  679|      0|		if (v->len > 1)
  ------------------
  |  Branch (679:7): [True: 0, False: 0]
  ------------------
  680|      0|			return 0;
  681|      0|	}
  682|       |
  683|      0|	blkid_probe_free_value(v);
  684|      0|	return rc;
  685|       |
  686|      0|}
blkid_probe_set_utf8_id_label:
  690|     95|{
  691|     95|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
  692|     95|	struct blkid_prval *v;
  693|     95|	int rc = 0;
  694|       |
  695|     95|	if (!(chn->flags & BLKID_SUBLKS_LABEL))
  ------------------
  |  |  311|     95|#define BLKID_SUBLKS_LABEL	(1 << 1) /* read LABEL from superblock */
  ------------------
  |  Branch (695:6): [True: 95, False: 0]
  ------------------
  696|     95|		return 0;
  697|       |
  698|      0|	v = blkid_probe_assign_value(pr, name);
  699|      0|	if (!v)
  ------------------
  |  Branch (699:6): [True: 0, False: 0]
  ------------------
  700|      0|		return -ENOMEM;
  701|       |
  702|      0|	v->len = (len * 3) + 1;
  703|      0|	v->data = calloc(1, v->len);
  704|      0|	if (!v->data)
  ------------------
  |  Branch (704:6): [True: 0, False: 0]
  ------------------
  705|      0|		rc = -ENOMEM;
  706|       |
  707|      0|	if (!rc) {
  ------------------
  |  Branch (707:6): [True: 0, False: 0]
  ------------------
  708|      0|		ul_encode_to_utf8(enc, v->data, v->len, data, len);
  709|      0|		v->len = blkid_rtrim_whitespace(v->data) + 1;
  710|      0|		if (v->len > 1)
  ------------------
  |  Branch (710:7): [True: 0, False: 0]
  ------------------
  711|      0|			v->len = blkid_ltrim_whitespace(v->data) + 1;
  712|      0|		if (v->len > 1)
  ------------------
  |  Branch (712:7): [True: 0, False: 0]
  ------------------
  713|      0|			return 0;
  714|      0|	}
  715|       |
  716|      0|	blkid_probe_free_value(v);
  717|      0|	return rc;
  718|      0|}
blkid_probe_set_label:
  721|    880|{
  722|    880|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
  723|    880|	struct blkid_prval *v;
  724|    880|	int rc = 0;
  725|       |
  726|    880|	if ((chn->flags & BLKID_SUBLKS_LABELRAW) &&
  ------------------
  |  |  312|    880|#define BLKID_SUBLKS_LABELRAW	(1 << 2) /* read and define LABEL_RAW result value*/
  ------------------
  |  Branch (726:6): [True: 0, False: 880]
  ------------------
  727|      0|	    (rc = blkid_probe_set_value(pr, "LABEL_RAW", label, len)) < 0)
  ------------------
  |  Branch (727:6): [True: 0, False: 0]
  ------------------
  728|      0|		return rc;
  729|       |
  730|    880|	if (!(chn->flags & BLKID_SUBLKS_LABEL))
  ------------------
  |  |  311|    880|#define BLKID_SUBLKS_LABEL	(1 << 1) /* read LABEL from superblock */
  ------------------
  |  Branch (730:6): [True: 880, False: 0]
  ------------------
  731|    880|		return 0;
  732|       |
  733|      0|	v = blkid_probe_assign_value(pr, "LABEL");
  734|      0|	if (!v)
  ------------------
  |  Branch (734:6): [True: 0, False: 0]
  ------------------
  735|      0|		return -ENOMEM;
  736|       |
  737|      0|	rc = blkid_probe_value_set_data(v, label, len);
  738|      0|	if (!rc) {
  ------------------
  |  Branch (738:6): [True: 0, False: 0]
  ------------------
  739|      0|		v->len = blkid_rtrim_whitespace(v->data) + 1;
  740|      0|		if (v->len > 1)
  ------------------
  |  Branch (740:7): [True: 0, False: 0]
  ------------------
  741|      0|			return 0;
  742|      0|	}
  743|       |
  744|      0|	blkid_probe_free_value(v);
  745|      0|	return rc;
  746|      0|}
blkid_probe_set_utf8label:
  750|     57|{
  751|     57|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
  752|     57|	struct blkid_prval *v;
  753|     57|	int rc = 0;
  754|       |
  755|     57|	if ((chn->flags & BLKID_SUBLKS_LABELRAW) &&
  ------------------
  |  |  312|     57|#define BLKID_SUBLKS_LABELRAW	(1 << 2) /* read and define LABEL_RAW result value*/
  ------------------
  |  Branch (755:6): [True: 0, False: 57]
  ------------------
  756|      0|	    (rc = blkid_probe_set_value(pr, "LABEL_RAW", label, len)) < 0)
  ------------------
  |  Branch (756:6): [True: 0, False: 0]
  ------------------
  757|      0|		return rc;
  758|       |
  759|     57|	if (!(chn->flags & BLKID_SUBLKS_LABEL))
  ------------------
  |  |  311|     57|#define BLKID_SUBLKS_LABEL	(1 << 1) /* read LABEL from superblock */
  ------------------
  |  Branch (759:6): [True: 57, False: 0]
  ------------------
  760|     57|		return 0;
  761|       |
  762|      0|	v = blkid_probe_assign_value(pr, "LABEL");
  763|      0|	if (!v)
  ------------------
  |  Branch (763:6): [True: 0, False: 0]
  ------------------
  764|      0|		return -ENOMEM;
  765|       |
  766|      0|	v->len = (len * 3) + 1;
  767|      0|	v->data = calloc(1, v->len);
  768|      0|	if (!v->data)
  ------------------
  |  Branch (768:6): [True: 0, False: 0]
  ------------------
  769|      0|		rc = -ENOMEM;
  770|      0|	if (!rc) {
  ------------------
  |  Branch (770:6): [True: 0, False: 0]
  ------------------
  771|      0|		ul_encode_to_utf8(enc, v->data, v->len, label, len);
  772|      0|		v->len = blkid_rtrim_whitespace(v->data) + 1;
  773|      0|		if (v->len > 1)
  ------------------
  |  Branch (773:7): [True: 0, False: 0]
  ------------------
  774|      0|			return 0;
  775|      0|	}
  776|       |
  777|      0|	blkid_probe_free_value(v);
  778|      0|	return rc;
  779|      0|}
blkid_probe_sprintf_uuid:
  783|    360|{
  784|    360|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
  785|    360|	va_list ap;
  786|    360|	int rc = 0;
  787|       |
  788|    360|	if (blkid_uuid_is_empty(uuid, len))
  ------------------
  |  Branch (788:6): [True: 13, False: 347]
  ------------------
  789|     13|		return 0;
  790|       |
  791|    347|	if ((chn->flags & BLKID_SUBLKS_UUIDRAW) &&
  ------------------
  |  |  314|    347|#define BLKID_SUBLKS_UUIDRAW	(1 << 4) /* read and define UUID_RAW result value */
  ------------------
  |  Branch (791:6): [True: 0, False: 347]
  ------------------
  792|      0|	    (rc = blkid_probe_set_value(pr, "UUID_RAW", uuid, len)) < 0)
  ------------------
  |  Branch (792:6): [True: 0, False: 0]
  ------------------
  793|      0|		return rc;
  794|       |
  795|    347|	if (!(chn->flags & BLKID_SUBLKS_UUID))
  ------------------
  |  |  313|    347|#define BLKID_SUBLKS_UUID	(1 << 3) /* read UUID from superblock */
  ------------------
  |  Branch (795:6): [True: 347, False: 0]
  ------------------
  796|    347|		return 0;
  797|       |
  798|    347|	va_start(ap, fmt);
  799|      0|	rc = blkid_probe_vsprintf_value(pr, "UUID", fmt, ap);
  800|      0|	va_end(ap);
  801|       |
  802|      0|	return rc;
  803|    347|}
blkid_probe_strncpy_uuid:
  807|      2|{
  808|      2|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
  809|      2|	struct blkid_prval *v;
  810|      2|	int rc = 0;
  811|       |
  812|      2|	if (str == NULL || *str == '\0')
  ------------------
  |  Branch (812:6): [True: 0, False: 2]
  |  Branch (812:21): [True: 1, False: 1]
  ------------------
  813|      1|		return -EINVAL;
  814|       |
  815|      1|	if (!len)
  ------------------
  |  Branch (815:6): [True: 0, False: 1]
  ------------------
  816|      0|		len = strlen((const char *) str);
  817|       |
  818|      1|	if ((chn->flags & BLKID_SUBLKS_UUIDRAW) &&
  ------------------
  |  |  314|      1|#define BLKID_SUBLKS_UUIDRAW	(1 << 4) /* read and define UUID_RAW result value */
  ------------------
  |  Branch (818:6): [True: 0, False: 1]
  ------------------
  819|      0|	    (rc = blkid_probe_set_value(pr, "UUID_RAW", str, len)) < 0)
  ------------------
  |  Branch (819:6): [True: 0, False: 0]
  ------------------
  820|      0|		return rc;
  821|       |
  822|      1|	if (!(chn->flags & BLKID_SUBLKS_UUID))
  ------------------
  |  |  313|      1|#define BLKID_SUBLKS_UUID	(1 << 3) /* read UUID from superblock */
  ------------------
  |  Branch (822:6): [True: 1, False: 0]
  ------------------
  823|      1|		return 0;
  824|       |
  825|      0|	v = blkid_probe_assign_value(pr, "UUID");
  826|      0|	if (!v)
  ------------------
  |  Branch (826:6): [True: 0, False: 0]
  ------------------
  827|      0|		rc= -ENOMEM;
  828|      0|	if (!rc)
  ------------------
  |  Branch (828:6): [True: 0, False: 0]
  ------------------
  829|      0|		rc = blkid_probe_value_set_data(v, str, len);
  830|      0|	if (!rc) {
  ------------------
  |  Branch (830:6): [True: 0, False: 0]
  ------------------
  831|      0|		v->len = blkid_rtrim_whitespace(v->data) + 1;
  832|      0|		if (v->len > 1)
  ------------------
  |  Branch (832:7): [True: 0, False: 0]
  ------------------
  833|      0|			return 0;
  834|      0|	}
  835|       |
  836|      0|	blkid_probe_free_value(v);
  837|      0|	return rc;
  838|      0|}
blkid_probe_set_uuid_as:
  842|  1.06k|{
  843|  1.06k|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
  844|  1.06k|	struct blkid_prval *v;
  845|  1.06k|	int rc = 0;
  846|       |
  847|  1.06k|	if (blkid_uuid_is_empty(uuid, 16))
  ------------------
  |  Branch (847:6): [True: 175, False: 886]
  ------------------
  848|    175|		return 0;
  849|       |
  850|    886|	if (!name) {
  ------------------
  |  Branch (850:6): [True: 783, False: 103]
  ------------------
  851|    783|		if ((chn->flags & BLKID_SUBLKS_UUIDRAW) &&
  ------------------
  |  |  314|    783|#define BLKID_SUBLKS_UUIDRAW	(1 << 4) /* read and define UUID_RAW result value */
  ------------------
  |  Branch (851:7): [True: 0, False: 783]
  ------------------
  852|      0|		    (rc = blkid_probe_set_value(pr, "UUID_RAW", uuid, 16)) < 0)
  ------------------
  |  Branch (852:7): [True: 0, False: 0]
  ------------------
  853|      0|			return rc;
  854|       |
  855|    783|		if (!(chn->flags & BLKID_SUBLKS_UUID))
  ------------------
  |  |  313|    783|#define BLKID_SUBLKS_UUID	(1 << 3) /* read UUID from superblock */
  ------------------
  |  Branch (855:7): [True: 783, False: 0]
  ------------------
  856|    783|			return 0;
  857|       |
  858|      0|		v = blkid_probe_assign_value(pr, "UUID");
  859|      0|	} else
  860|    103|		v = blkid_probe_assign_value(pr, name);
  861|       |
  862|    103|	if (!v)
  ------------------
  |  Branch (862:6): [True: 0, False: 103]
  ------------------
  863|      0|		return -ENOMEM;
  864|       |
  865|    103|	v->len = UUID_STR_LEN;
  ------------------
  |  |   27|    103|# define UUID_STR_LEN   37
  ------------------
  866|    103|	v->data = calloc(1, v->len);
  867|    103|	if (!v->data)
  ------------------
  |  Branch (867:6): [True: 0, False: 103]
  ------------------
  868|      0|		rc = -ENOMEM;
  869|       |
  870|    103|	if (!rc) {
  ------------------
  |  Branch (870:6): [True: 103, False: 0]
  ------------------
  871|    103|		blkid_unparse_uuid(uuid, (char *) v->data, v->len);
  872|    103|		return 0;
  873|    103|	}
  874|       |
  875|      0|	blkid_probe_free_value(v);
  876|      0|	return rc;
  877|    103|}
blkid_probe_set_uuid:
  880|    939|{
  881|       |	return blkid_probe_set_uuid_as(pr, uuid, NULL);
  882|    939|}
superblocks.c:superblocks_probe:
  355|  8.23k|{
  356|  8.23k|	size_t i;
  357|  8.23k|	int rc = BLKID_PROBE_NONE;
  ------------------
  |  |  471|  8.23k|#define BLKID_PROBE_NONE	1
  ------------------
  358|       |
  359|  8.23k|	if (chn->idx < -1)
  ------------------
  |  Branch (359:6): [True: 0, False: 8.23k]
  ------------------
  360|      0|		return -EINVAL;
  361|       |
  362|  8.23k|	blkid_probe_chain_reset_values(pr, chn);
  363|       |
  364|  8.23k|	if (pr->flags & BLKID_FL_NOSCAN_DEV) {
  ------------------
  |  |  244|  8.23k|#define BLKID_FL_NOSCAN_DEV	(1 << 4)	/* do not scan this device */
  ------------------
  |  Branch (364:6): [True: 0, False: 8.23k]
  ------------------
  365|      0|		DBG(LOWPROBE, ul_debug("*** ignore (noscan flag)"));
  ------------------
  |  |  358|      0|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      0|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      0|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      0|		x; \
  |  |  |  |  |  |   85|      0|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  366|      0|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  367|      0|	}
  368|       |
  369|  8.23k|	if (pr->size <= 0 || (pr->size <= 1024 && !S_ISCHR(pr->mode))) {
  ------------------
  |  Branch (369:6): [True: 0, False: 8.23k]
  |  Branch (369:24): [True: 0, False: 8.23k]
  |  Branch (369:44): [True: 0, False: 0]
  ------------------
  370|       |		/* Ignore very very small block devices or regular files (e.g.
  371|       |		 * extended partitions). Note that size of the UBI char devices
  372|       |		 * is 1 byte */
  373|      0|		DBG(LOWPROBE, ul_debug("*** ignore (size <= 1024)"));
  ------------------
  |  |  358|      0|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      0|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      0|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      0|		x; \
  |  |  |  |  |  |   85|      0|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  374|      0|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  375|      0|	}
  376|       |
  377|  8.23k|	DBG(LOWPROBE, ul_debug("--> starting probing loop [SUBLKS idx=%d]",
  ------------------
  |  |  358|  8.23k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  8.23k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  8.23k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  8.23k|	do { \
  |  |  |  |  |  |  |  |   76|  8.23k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  8.23k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  8.23k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 8.23k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  8.23k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 8.23k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  8.23k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  8.23k|		x; \
  |  |  |  |  |  |   85|  8.23k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  378|  8.23k|		chn->idx));
  379|       |
  380|  8.23k|	i = chn->idx < 0 ? 0 : chn->idx + 1U;
  ------------------
  |  Branch (380:6): [True: 5.99k, False: 2.24k]
  ------------------
  381|       |
  382|   494k|	for ( ; i < ARRAY_SIZE(idinfos); i++) {
  ------------------
  |  |  182|   494k|#define ARRAY_SIZE(arr) countof(arr)
  ------------------
  |  Branch (382:10): [True: 488k, False: 5.94k]
  ------------------
  383|   488k|		const struct blkid_idinfo *id;
  384|   488k|		const struct blkid_idmag *mag = NULL;
  385|   488k|		uint64_t off = 0;
  386|       |
  387|   488k|		chn->idx = i;
  388|   488k|		id = idinfos[i];
  389|       |
  390|   488k|		if (chn->fltr && blkid_bmp_get_item(chn->fltr, i)) {
  ------------------
  |  |  577|   488k|		((bmp)[ blkid_bmp_idx_byte(item) ] & blkid_bmp_idx_bit(item))
  |  |  ------------------
  |  |  |  |  568|   488k|#define blkid_bmp_idx_byte(item)	((item) / blkid_bmp_wordsize)
  |  |  |  |  ------------------
  |  |  |  |  |  |  566|   488k|#define blkid_bmp_wordsize		(8 * sizeof(unsigned long))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		((bmp)[ blkid_bmp_idx_byte(item) ] & blkid_bmp_idx_bit(item))
  |  |  ------------------
  |  |  |  |  567|   488k|#define blkid_bmp_idx_bit(item)		(1UL << ((item) % blkid_bmp_wordsize))
  |  |  |  |  ------------------
  |  |  |  |  |  |  566|   488k|#define blkid_bmp_wordsize		(8 * sizeof(unsigned long))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (577:3): [True: 11.9k, False: 476k]
  |  |  ------------------
  ------------------
  |  Branch (390:7): [True: 488k, False: 0]
  ------------------
  391|  11.9k|			DBG(LOWPROBE, ul_debug("filter out: %s", id->name));
  ------------------
  |  |  358|  11.9k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  11.9k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  11.9k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  11.9k|	do { \
  |  |  |  |  |  |  |  |   76|  11.9k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  11.9k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  11.9k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 11.9k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  11.9k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 11.9k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  11.9k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  11.9k|		x; \
  |  |  |  |  |  |   85|  11.9k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  392|  11.9k|			rc = BLKID_PROBE_NONE;
  ------------------
  |  |  471|  11.9k|#define BLKID_PROBE_NONE	1
  ------------------
  393|  11.9k|			continue;
  394|  11.9k|		}
  395|       |
  396|   476k|		if (id->minsz && (unsigned)id->minsz > pr->size) {
  ------------------
  |  Branch (396:7): [True: 190k, False: 285k]
  |  Branch (396:20): [True: 17.8k, False: 173k]
  ------------------
  397|  17.8k|			rc = BLKID_PROBE_NONE;
  ------------------
  |  |  471|  17.8k|#define BLKID_PROBE_NONE	1
  ------------------
  398|  17.8k|			continue;	/* the device is too small */
  399|  17.8k|		}
  400|       |
  401|       |		/* don't probe for RAIDs, swap or journal on CD/DVDs */
  402|   458k|		if ((id->usage & (BLKID_USAGE_RAID | BLKID_USAGE_OTHER)) &&
  ------------------
  |  |  345|   458k|#define BLKID_USAGE_RAID		(1 << 2)
  ------------------
              		if ((id->usage & (BLKID_USAGE_RAID | BLKID_USAGE_OTHER)) &&
  ------------------
  |  |  347|   458k|#define BLKID_USAGE_OTHER		(1 << 4)
  ------------------
  |  Branch (402:7): [True: 161k, False: 297k]
  ------------------
  403|   161k|		    blkid_probe_is_cdrom(pr)) {
  ------------------
  |  Branch (403:7): [True: 0, False: 161k]
  ------------------
  404|      0|			rc = BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  405|      0|			continue;
  406|      0|		}
  407|       |
  408|       |		/* don't probe for RAIDs on floppies */
  409|   458k|		if ((id->usage & BLKID_USAGE_RAID) && blkid_probe_is_tiny(pr)) {
  ------------------
  |  |  345|   458k|#define BLKID_USAGE_RAID		(1 << 2)
  ------------------
  |  Branch (409:7): [True: 107k, False: 350k]
  |  Branch (409:41): [True: 0, False: 107k]
  ------------------
  410|      0|			rc = BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  411|      0|			continue;
  412|      0|		}
  413|       |
  414|   458k|		DBG(LOWPROBE, ul_debug("[%zu] %s:", i, id->name));
  ------------------
  |  |  358|   458k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|   458k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|   458k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|   458k|	do { \
  |  |  |  |  |  |  |  |   76|   458k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|   458k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|   458k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 458k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|   458k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 458k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|   458k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|   458k|		x; \
  |  |  |  |  |  |   85|   458k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  415|       |
  416|   458k|		rc = blkid_probe_get_idmag(pr, id, &off, &mag);
  417|   458k|		if (rc < 0)
  ------------------
  |  Branch (417:7): [True: 0, False: 458k]
  ------------------
  418|      0|			break;
  419|   458k|		if (rc != BLKID_PROBE_OK)
  ------------------
  |  |  465|   458k|#define BLKID_PROBE_OK	0
  ------------------
  |  Branch (419:7): [True: 344k, False: 114k]
  ------------------
  420|   344k|			continue;
  421|       |
  422|       |		/* final check by probing function */
  423|   114k|		if (id->probefunc) {
  ------------------
  |  Branch (423:7): [True: 114k, False: 52]
  ------------------
  424|   114k|			DBG(LOWPROBE, ul_debug("\tcall probefunc()"));
  ------------------
  |  |  358|   114k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|   114k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|   114k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|   114k|	do { \
  |  |  |  |  |  |  |  |   76|   114k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|   114k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|   114k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 114k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|   114k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 114k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|   114k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|   114k|		x; \
  |  |  |  |  |  |   85|   114k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  425|   114k|			errno = 0;
  426|   114k|			rc = id->probefunc(pr, mag);
  427|   114k|			blkid_probe_prune_buffers(pr);
  428|   114k|			if (rc != BLKID_PROBE_OK) {
  ------------------
  |  |  465|   114k|#define BLKID_PROBE_OK	0
  ------------------
  |  Branch (428:8): [True: 112k, False: 2.21k]
  ------------------
  429|   112k|				blkid_probe_chain_reset_values(pr, chn);
  430|   112k|				if (rc < 0)
  ------------------
  |  Branch (430:9): [True: 32, False: 112k]
  ------------------
  431|     32|					break;
  432|   112k|				continue;
  433|   112k|			}
  434|   114k|		}
  435|       |
  436|       |		/* all checks passed */
  437|  2.26k|		if (chn->flags & BLKID_SUBLKS_TYPE)
  ------------------
  |  |  315|  2.26k|#define BLKID_SUBLKS_TYPE	(1 << 5) /* define TYPE result value */
  ------------------
  |  Branch (437:7): [True: 2.26k, False: 0]
  ------------------
  438|  2.26k|			rc = blkid_probe_set_value(pr, "TYPE",
  439|  2.26k|				(const unsigned char *) id->name,
  440|  2.26k|				strlen(id->name) + 1);
  441|       |
  442|  2.26k|		if (!rc)
  ------------------
  |  Branch (442:7): [True: 2.26k, False: 0]
  ------------------
  443|  2.26k|			rc = blkid_probe_set_usage(pr, id->usage);
  444|       |
  445|  2.26k|		if (!rc && mag)
  ------------------
  |  Branch (445:7): [True: 2.26k, False: 0]
  |  Branch (445:14): [True: 2.05k, False: 204]
  ------------------
  446|  2.05k|			rc = blkid_probe_set_magic(pr, off, mag->len,
  447|  2.05k|					(const unsigned char *) mag->magic);
  448|  2.26k|		if (rc) {
  ------------------
  |  Branch (448:7): [True: 0, False: 2.26k]
  ------------------
  449|      0|			blkid_probe_chain_reset_values(pr, chn);
  450|      0|			DBG(LOWPROBE, ul_debug("failed to set result -- ignore"));
  ------------------
  |  |  358|      0|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      0|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      0|	do { \
  |  |  |  |  |  |  |  |   76|      0|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      0|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      0|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      0|		x; \
  |  |  |  |  |  |   85|      0|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  451|      0|			continue;
  452|      0|		}
  453|       |
  454|  2.26k|		DBG(LOWPROBE, ul_debug("<-- leaving probing loop (type=%s) [SUBLKS idx=%d]",
  ------------------
  |  |  358|  2.26k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  2.26k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  2.26k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  2.26k|	do { \
  |  |  |  |  |  |  |  |   76|  2.26k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  2.26k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  2.26k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 2.26k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  2.26k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 2.26k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  2.26k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  2.26k|		x; \
  |  |  |  |  |  |   85|  2.26k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  455|  2.26k|			id->name, chn->idx));
  456|  2.26k|		return BLKID_PROBE_OK;
  ------------------
  |  |  465|  2.26k|#define BLKID_PROBE_OK	0
  ------------------
  457|  2.26k|	}
  458|       |
  459|  5.97k|	DBG(LOWPROBE, ul_debug("<-- leaving probing loop (failed=%d) [SUBLKS idx=%d]",
  ------------------
  |  |  358|  5.97k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  5.97k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  5.97k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  5.97k|	do { \
  |  |  |  |  |  |  |  |   76|  5.97k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  5.97k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  5.97k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 5.97k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  5.97k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 5.97k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  5.97k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  5.97k|		x; \
  |  |  |  |  |  |   85|  5.97k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  460|  5.97k|			rc, chn->idx));
  461|  5.97k|	return rc;
  462|  8.23k|}
superblocks.c:blkid_probe_set_usage:
  580|  2.26k|{
  581|  2.26k|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
  582|  2.26k|	const char *u = NULL;
  583|       |
  584|  2.26k|	if (!(chn->flags & BLKID_SUBLKS_USAGE))
  ------------------
  |  |  317|  2.26k|#define BLKID_SUBLKS_USAGE	(1 << 7) /* define USAGE result value */
  ------------------
  |  Branch (584:6): [True: 2.26k, False: 0]
  ------------------
  585|  2.26k|		return 0;
  586|       |
  587|      0|	if (usage & BLKID_USAGE_FILESYSTEM)
  ------------------
  |  |  344|      0|#define BLKID_USAGE_FILESYSTEM		(1 << 1)
  ------------------
  |  Branch (587:6): [True: 0, False: 0]
  ------------------
  588|      0|		u = "filesystem";
  589|      0|	else if (usage & BLKID_USAGE_RAID)
  ------------------
  |  |  345|      0|#define BLKID_USAGE_RAID		(1 << 2)
  ------------------
  |  Branch (589:11): [True: 0, False: 0]
  ------------------
  590|      0|		u = "raid";
  591|      0|	else if (usage & BLKID_USAGE_CRYPTO)
  ------------------
  |  |  346|      0|#define BLKID_USAGE_CRYPTO		(1 << 3)
  ------------------
  |  Branch (591:11): [True: 0, False: 0]
  ------------------
  592|      0|		u = "crypto";
  593|      0|	else if (usage & BLKID_USAGE_OTHER)
  ------------------
  |  |  347|      0|#define BLKID_USAGE_OTHER		(1 << 4)
  ------------------
  |  Branch (593:11): [True: 0, False: 0]
  ------------------
  594|      0|		u = "other";
  595|      0|	else
  596|      0|		u = "unknown";
  597|       |
  598|      0|	return blkid_probe_set_value(pr, "USAGE",
  599|      0|			(const unsigned char *) u, strlen(u) + 1);
  600|  2.26k|}
superblocks.c:superblocks_safeprobe:
  477|  5.99k|{
  478|  5.99k|	struct list_head vals;
  479|  5.99k|	int idx = -1;
  480|  5.99k|	int count = 0;
  481|  5.99k|	int intol = 0;
  482|  5.99k|	int rc;
  483|       |
  484|  5.99k|	INIT_LIST_HEAD(&vals);
  ------------------
  |  |   38|  5.99k|#define INIT_LIST_HEAD(ptr) do { \
  |  |   39|  5.99k|	(ptr)->next = (ptr); (ptr)->prev = (ptr); \
  |  |   40|  5.99k|} while (0)
  |  |  ------------------
  |  |  |  Branch (40:10): [Folded, False: 5.99k]
  |  |  ------------------
  ------------------
  485|       |
  486|  5.99k|	if (pr->flags & BLKID_FL_NOSCAN_DEV)
  ------------------
  |  |  244|  5.99k|#define BLKID_FL_NOSCAN_DEV	(1 << 4)	/* do not scan this device */
  ------------------
  |  Branch (486:6): [True: 0, False: 5.99k]
  ------------------
  487|      0|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  488|       |
  489|  8.23k|	while ((rc = superblocks_probe(pr, chn)) == 0) {
  ------------------
  |  Branch (489:9): [True: 2.26k, False: 5.97k]
  ------------------
  490|       |
  491|  2.26k|		if (blkid_probe_is_tiny(pr) && !count)
  ------------------
  |  Branch (491:7): [True: 0, False: 2.26k]
  |  Branch (491:34): [True: 0, False: 0]
  ------------------
  492|      0|			return BLKID_PROBE_OK;	/* floppy or so -- returns the first result. */
  ------------------
  |  |  465|      0|#define BLKID_PROBE_OK	0
  ------------------
  493|       |
  494|  2.26k|		count++;
  495|       |
  496|  2.26k|		if (chn->idx >= 0 &&
  ------------------
  |  Branch (496:7): [True: 2.26k, False: 0]
  ------------------
  497|  2.26k|		    idinfos[chn->idx]->usage & (BLKID_USAGE_RAID | BLKID_USAGE_CRYPTO))
  ------------------
  |  |  345|  2.26k|#define BLKID_USAGE_RAID		(1 << 2)
  ------------------
              		    idinfos[chn->idx]->usage & (BLKID_USAGE_RAID | BLKID_USAGE_CRYPTO))
  ------------------
  |  |  346|  2.26k|#define BLKID_USAGE_CRYPTO		(1 << 3)
  ------------------
  |  Branch (497:7): [True: 22, False: 2.24k]
  ------------------
  498|     22|			break;
  499|       |
  500|  2.24k|		if (chn->idx >= 0 &&
  ------------------
  |  Branch (500:7): [True: 2.24k, False: 0]
  ------------------
  501|  2.24k|		    !(idinfos[chn->idx]->flags & BLKID_IDINFO_TOLERANT))
  ------------------
  |  |  184|  2.24k|#define BLKID_IDINFO_TOLERANT	(1 << 1)
  ------------------
  |  Branch (501:7): [True: 2.14k, False: 93]
  ------------------
  502|  2.14k|			intol++;
  503|       |
  504|  2.24k|		if (count == 1) {
  ------------------
  |  Branch (504:7): [True: 1.39k, False: 848]
  ------------------
  505|       |			/* save the first result */
  506|  1.39k|			blkid_probe_chain_save_values(pr, chn, &vals);
  507|  1.39k|			idx = chn->idx;
  508|  1.39k|		}
  509|  2.24k|	}
  510|       |
  511|  5.99k|	if (rc < 0)
  ------------------
  |  Branch (511:6): [True: 32, False: 5.96k]
  ------------------
  512|     32|		goto done;		/* error */
  513|       |
  514|  5.96k|	if (count > 1 && intol) {
  ------------------
  |  Branch (514:6): [True: 423, False: 5.53k]
  |  Branch (514:19): [True: 423, False: 0]
  ------------------
  515|    423|		DBG(LOWPROBE, ul_debug("ERROR: superblocks chain: "
  ------------------
  |  |  358|    423|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|    423|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|    423|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|    423|	do { \
  |  |  |  |  |  |  |  |   76|    423|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|    423|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|    423|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 423]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|    423|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 423]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    423|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|    423|		x; \
  |  |  |  |  |  |   85|    423|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  516|    423|			       "ambivalent result detected (%d filesystems)!",
  517|    423|			       count));
  518|    423|		rc = BLKID_PROBE_AMBIGUOUS;	/* error, ambivalent result (more FS) */
  ------------------
  |  |  484|    423|#define BLKID_PROBE_AMBIGUOUS	-2
  ------------------
  519|    423|		goto done;
  520|    423|	}
  521|  5.53k|	if (!count) {
  ------------------
  |  Branch (521:6): [True: 4.54k, False: 991]
  ------------------
  522|  4.54k|		rc = BLKID_PROBE_NONE;
  ------------------
  |  |  471|  4.54k|#define BLKID_PROBE_NONE	1
  ------------------
  523|  4.54k|		goto done;
  524|  4.54k|	}
  525|       |
  526|    991|	if (idx != -1) {
  ------------------
  |  Branch (526:6): [True: 969, False: 22]
  ------------------
  527|       |		/* restore the first result */
  528|    969|		blkid_probe_chain_reset_values(pr, chn);
  529|    969|		blkid_probe_append_values_list(pr, &vals);
  530|    969|		chn->idx = idx;
  531|    969|	}
  532|       |
  533|       |	/*
  534|       |	 * The RAID device could be partitioned. The problem are RAID1 devices
  535|       |	 * where the partition table is visible from underlying devices. We
  536|       |	 * have to ignore such partition tables.
  537|       |	 */
  538|    991|	if (chn->idx >= 0 && idinfos[chn->idx]->usage & BLKID_USAGE_RAID)
  ------------------
  |  |  345|    991|#define BLKID_USAGE_RAID		(1 << 2)
  ------------------
  |  Branch (538:6): [True: 991, False: 0]
  |  Branch (538:23): [True: 11, False: 980]
  ------------------
  539|     11|		pr->prob_flags |= BLKID_PROBE_FL_IGNORE_PT;
  ------------------
  |  |  250|     11|#define BLKID_PROBE_FL_IGNORE_PT (1 << 1)	/* ignore partition table */
  ------------------
  540|       |
  541|    991|	rc = BLKID_PROBE_OK;
  ------------------
  |  |  465|    991|#define BLKID_PROBE_OK	0
  ------------------
  542|  5.99k|done:
  543|  5.99k|	blkid_probe_free_values_list(&vals);
  544|  5.99k|	return rc;
  545|    991|}

vxfs.c:blkid32_to_cpu:
  143|    318|{
  144|    318|	if (e == BLKID_ENDIANNESS_LITTLE)
  ------------------
  |  Branch (144:6): [True: 201, False: 117]
  ------------------
  145|    201|		return le32_to_cpu(i);
  ------------------
  |  |  137|    201|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  146|    117|	else if (e == BLKID_ENDIANNESS_BIG)
  ------------------
  |  Branch (146:11): [True: 117, False: 0]
  ------------------
  147|    117|		return be32_to_cpu(i);
  ------------------
  |  |  141|    117|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  148|      0|	abort();
  149|    318|}

swap.c:probe_swap:
   96|    363|{
   97|    363|	const unsigned char *buf;
   98|       |
   99|    363|	if (!mag)
  ------------------
  |  Branch (99:6): [True: 0, False: 363]
  ------------------
  100|      0|		return 1;
  101|       |
  102|       |	/* TuxOnIce keeps valid swap header at the end of the 1st page */
  103|    363|	buf = blkid_probe_get_buffer(pr, 0, TOI_MAGIC_STRLEN);
  ------------------
  |  |   37|    363|#define TOI_MAGIC_STRLEN	(sizeof(TOI_MAGIC_STRING) - 1)
  |  |  ------------------
  |  |  |  |   36|    363|#define TOI_MAGIC_STRING	"\xed\xc3\x02\xe9\x98\x56\xe5\x0c"
  |  |  ------------------
  ------------------
  104|    363|	if (!buf)
  ------------------
  |  Branch (104:6): [True: 0, False: 363]
  ------------------
  105|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (105:10): [True: 0, False: 0]
  ------------------
  106|       |
  107|    363|	if (memcmp(buf, TOI_MAGIC_STRING, TOI_MAGIC_STRLEN) == 0)
  ------------------
  |  |   36|    363|#define TOI_MAGIC_STRING	"\xed\xc3\x02\xe9\x98\x56\xe5\x0c"
  ------------------
              	if (memcmp(buf, TOI_MAGIC_STRING, TOI_MAGIC_STRLEN) == 0)
  ------------------
  |  |   37|    363|#define TOI_MAGIC_STRLEN	(sizeof(TOI_MAGIC_STRING) - 1)
  |  |  ------------------
  |  |  |  |   36|    363|#define TOI_MAGIC_STRING	"\xed\xc3\x02\xe9\x98\x56\xe5\x0c"
  |  |  ------------------
  ------------------
  |  Branch (107:6): [True: 4, False: 359]
  ------------------
  108|      4|		return 1;	/* Ignore swap signature, it's TuxOnIce */
  109|       |
  110|    359|	if (!memcmp(mag->magic, "SWAP-SPACE", mag->len)) {
  ------------------
  |  Branch (110:6): [True: 9, False: 350]
  ------------------
  111|       |		/* swap v0 doesn't support LABEL or UUID */
  112|      9|		blkid_probe_set_version(pr, "0");
  113|      9|		return 0;
  114|       |
  115|      9|	}
  116|       |
  117|    350|	if (!memcmp(mag->magic, "SWAPSPACE2", mag->len))
  ------------------
  |  Branch (117:6): [True: 350, False: 0]
  ------------------
  118|    350|		return swap_set_info(pr, mag, "1");
  119|       |
  120|      0|	return 1;
  121|    350|}
swap.c:swap_set_info:
   60|    580|{
   61|    580|	struct swap_header_v1_2 *hdr;
   62|       |
   63|       |	/* Swap header always located at offset of 1024 bytes */
   64|    580|	hdr = (struct swap_header_v1_2 *) blkid_probe_get_buffer(pr, 1024,
   65|    580|				sizeof(struct swap_header_v1_2));
   66|    580|	if (!hdr)
  ------------------
  |  Branch (66:6): [True: 0, False: 580]
  ------------------
   67|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (67:10): [True: 0, False: 0]
  ------------------
   68|       |
   69|       |	/* SWAPSPACE2 - check for wrong version or zeroed pagecount */
   70|    580|	if (strcmp(version, "1") == 0) {
  ------------------
  |  Branch (70:6): [True: 350, False: 230]
  ------------------
   71|    350|		if (hdr->version != 1 && swab32(hdr->version) != 1) {
  ------------------
  |  |  125|    339|#define swab32(x) bswap_32(x)
  ------------------
  |  Branch (71:7): [True: 339, False: 11]
  |  Branch (71:28): [True: 326, False: 13]
  ------------------
   72|    326|			DBG(LOWPROBE, ul_debug("incorrect swap version"));
  ------------------
  |  |  358|    326|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|    326|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|    326|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|    326|	do { \
  |  |  |  |  |  |  |  |   76|    326|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|    326|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|    326|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 326]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|    326|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 326]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    326|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|    326|		x; \
  |  |  |  |  |  |   85|    326|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   73|    326|			return 1;
   74|    326|		}
   75|     24|		if (hdr->lastpage == 0) {
  ------------------
  |  Branch (75:7): [True: 11, False: 13]
  ------------------
   76|     11|			DBG(LOWPROBE, ul_debug("not set last swap page"));
  ------------------
  |  |  358|     11|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|     11|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|     11|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|     11|	do { \
  |  |  |  |  |  |  |  |   76|     11|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|     11|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|     11|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 11]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|     11|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 11]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|     11|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|     11|		x; \
  |  |  |  |  |  |   85|     11|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   77|     11|			return 1;
   78|     11|		}
   79|     13|		swap_set_info_swap1(pr, mag, hdr);
   80|     13|	}
   81|       |
   82|       |	/* arbitrary sanity check.. is there any garbage down there? */
   83|    243|	if (hdr->padding[32] == 0 && hdr->padding[33] == 0) {
  ------------------
  |  Branch (83:6): [True: 125, False: 118]
  |  Branch (83:31): [True: 75, False: 50]
  ------------------
   84|     75|		if (hdr->volume[0] && blkid_probe_set_label(pr, hdr->volume,
  ------------------
  |  Branch (84:7): [True: 37, False: 38]
  |  Branch (84:25): [True: 0, False: 37]
  ------------------
   85|     37|				sizeof(hdr->volume)) < 0)
   86|      0|			return 1;
   87|     75|		if (blkid_probe_set_uuid(pr, hdr->uuid) < 0)
  ------------------
  |  Branch (87:7): [True: 0, False: 75]
  ------------------
   88|      0|			return 1;
   89|     75|	}
   90|       |
   91|    243|	blkid_probe_set_version(pr, version);
   92|    243|	return 0;
   93|    243|}
swap.c:swap_set_info_swap1:
   42|     13|{
   43|     13|	enum blkid_endianness endianness = le32_to_cpu(hdr->version) == 1 ?
  ------------------
  |  |  137|     13|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (43:37): [True: 7, False: 6]
  ------------------
   44|      7|		BLKID_ENDIANNESS_LITTLE : BLKID_ENDIANNESS_BIG;
   45|     13|	blkid_probe_set_fsendianness(pr, endianness);
   46|       |
   47|     13|	uint32_t pagesize = mag->sboff + mag->len;
   48|     13|	blkid_probe_set_fsblocksize(pr, pagesize);
   49|       |
   50|       |	/* note that "lastpage" in swap header means number of pages used by
   51|       |	 * swap, see mkswap */
   52|     13|	uint32_t lastpage = endianness == BLKID_ENDIANNESS_LITTLE ?
  ------------------
  |  Branch (52:22): [True: 7, False: 6]
  ------------------
   53|      7|		le32_to_cpu(hdr->lastpage) : be32_to_cpu(hdr->lastpage);
  ------------------
  |  |  137|      7|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              		le32_to_cpu(hdr->lastpage) : be32_to_cpu(hdr->lastpage);
  ------------------
  |  |  141|      6|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
   54|     13|	blkid_probe_set_fssize(pr, (uint64_t) pagesize * lastpage);
   55|     13|	blkid_probe_set_fslastblock(pr, lastpage + 1);
   56|     13|}
swap.c:probe_swsuspend:
  124|    230|{
  125|    230|	if (!mag)
  ------------------
  |  Branch (125:6): [True: 0, False: 230]
  ------------------
  126|      0|		return 1;
  127|    230|	if (!memcmp(mag->magic, "S1SUSPEND", mag->len))
  ------------------
  |  Branch (127:6): [True: 28, False: 202]
  ------------------
  128|     28|		return swap_set_info(pr, mag, "s1suspend");
  129|    202|	if (!memcmp(mag->magic, "S2SUSPEND", mag->len))
  ------------------
  |  Branch (129:6): [True: 46, False: 156]
  ------------------
  130|     46|		return swap_set_info(pr, mag, "s2suspend");
  131|    156|	if (!memcmp(mag->magic, "ULSUSPEND", mag->len))
  ------------------
  |  Branch (131:6): [True: 55, False: 101]
  ------------------
  132|     55|		return swap_set_info(pr, mag, "ulsuspend");
  133|    101|	if (!memcmp(mag->magic, TOI_MAGIC_STRING, TOI_MAGIC_STRLEN))
  ------------------
  |  |   36|    101|#define TOI_MAGIC_STRING	"\xed\xc3\x02\xe9\x98\x56\xe5\x0c"
  ------------------
              	if (!memcmp(mag->magic, TOI_MAGIC_STRING, TOI_MAGIC_STRLEN))
  ------------------
  |  |   37|    101|#define TOI_MAGIC_STRLEN	(sizeof(TOI_MAGIC_STRING) - 1)
  |  |  ------------------
  |  |  |  |   36|    101|#define TOI_MAGIC_STRING	"\xed\xc3\x02\xe9\x98\x56\xe5\x0c"
  |  |  ------------------
  ------------------
  |  Branch (133:6): [True: 26, False: 75]
  ------------------
  134|     26|		return swap_set_info(pr, mag, "tuxonice");
  135|     75|	if (!memcmp(mag->magic, "LINHIB0001", mag->len))
  ------------------
  |  Branch (135:6): [True: 75, False: 0]
  ------------------
  136|     75|		return swap_set_info(pr, mag, "linhib0001");
  137|       |
  138|      0|	return 1;	/* no signature detected */
  139|     75|}

sysv.c:probe_xenix:
   78|     64|{
   79|     64|	const struct xenix_super_block *sb;
   80|       |
   81|     64|	sb = blkid_probe_get_sb(pr, mag, struct xenix_super_block);
  ------------------
  |  |  451|     64|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
   82|     64|	if (!sb)
  ------------------
  |  Branch (82:6): [True: 0, False: 64]
  ------------------
   83|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (83:10): [True: 0, False: 0]
  ------------------
   84|     64|	blkid_probe_set_label(pr, sb->s_fname, sizeof(sb->s_fname));
   85|     64|	return 0;
   86|     64|}
sysv.c:probe_sysv:
   95|  5.94k|{
   96|  5.94k|	struct sysv_super_block *sb;
   97|  5.94k|	int blocks[] = {0, 9, 15, 18};
   98|  5.94k|	size_t i;
   99|       |
  100|  29.5k|	for (i = 0; i < ARRAY_SIZE(blocks); i++) {
  ------------------
  |  |  182|  29.5k|#define ARRAY_SIZE(arr) countof(arr)
  ------------------
  |  Branch (100:14): [True: 23.6k, False: 5.90k]
  ------------------
  101|  23.6k|		int off = blocks[i] * SYSV_BLOCK_SIZE + SYSV_BLOCK_SIZE/2;
  ------------------
  |  |   88|  23.6k|#define SYSV_BLOCK_SIZE	1024
  ------------------
              		int off = blocks[i] * SYSV_BLOCK_SIZE + SYSV_BLOCK_SIZE/2;
  ------------------
  |  |   88|  23.6k|#define SYSV_BLOCK_SIZE	1024
  ------------------
  102|       |
  103|  23.6k|		sb = (struct sysv_super_block *)
  104|  23.6k|			blkid_probe_get_buffer(pr,
  105|  23.6k|					off,
  106|  23.6k|					sizeof(struct sysv_super_block));
  107|  23.6k|		if (!sb)
  ------------------
  |  Branch (107:7): [True: 0, False: 23.6k]
  ------------------
  108|      0|			return errno ? -errno : 1;
  ------------------
  |  Branch (108:11): [True: 0, False: 0]
  ------------------
  109|       |
  110|  23.6k|		if (sb->s_magic == cpu_to_le32(0xfd187e20) ||
  ------------------
  |  |  129|  47.3k|#define cpu_to_le32(x) ((uint32_t) htole32(x))
  ------------------
  |  Branch (110:7): [True: 8, False: 23.6k]
  ------------------
  111|  23.6k|		    sb->s_magic == cpu_to_be32(0xfd187e20)) {
  ------------------
  |  |  133|  23.6k|#define cpu_to_be32(x) ((uint32_t) htobe32(x))
  ------------------
  |  Branch (111:7): [True: 27, False: 23.6k]
  ------------------
  112|       |
  113|     35|			if (blkid_probe_set_label(pr, sb->s_fname,
  ------------------
  |  Branch (113:8): [True: 0, False: 35]
  ------------------
  114|     35|						sizeof(sb->s_fname)))
  115|      0|				return 1;
  116|       |
  117|     35|			if (blkid_probe_set_magic(pr,
  ------------------
  |  Branch (117:8): [True: 0, False: 35]
  ------------------
  118|     35|					off + offsetof(struct sysv_super_block,
  119|     35|								s_magic),
  120|     35|					sizeof(sb->s_magic),
  121|     35|					(unsigned char *) &sb->s_magic))
  122|      0|				return 1;
  123|       |
  124|     35|			return 0;
  125|     35|		}
  126|  23.6k|	}
  127|  5.90k|	return 1;
  128|  5.94k|}

ubi.c:probe_ubi:
   37|     34|{
   38|     34|	const struct ubi_ec_hdr *hdr;
   39|       |
   40|     34|	hdr = blkid_probe_get_sb(pr, mag, struct ubi_ec_hdr);
  ------------------
  |  |  451|     34|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
   41|     34|	if (!hdr)
  ------------------
  |  Branch (41:6): [True: 0, False: 34]
  ------------------
   42|      0|		return errno ? -errno : BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  |  Branch (42:10): [True: 0, False: 0]
  ------------------
   43|       |
   44|     34|	if (!ubi_verify_csum(pr, hdr))
  ------------------
  |  Branch (44:6): [True: 34, False: 0]
  ------------------
   45|     34|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|     34|#define BLKID_PROBE_NONE	1
  ------------------
   46|       |
   47|      0|	blkid_probe_sprintf_version(pr, "%u", hdr->version);
   48|      0|	blkid_probe_sprintf_uuid(pr, (unsigned char *)&hdr->image_seq, 4, "%u",
   49|       |				 be32_to_cpu(hdr->image_seq));
  ------------------
  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
   50|      0|	return 0;
   51|     34|}
ubi.c:ubi_verify_csum:
   29|     34|{
   30|     34|	return blkid_probe_verify_csum(pr,
   31|     34|			ul_crc32(~0LL, (unsigned char *) hdr,
   32|     34|				sizeof(*hdr) - sizeof(hdr->hdr_crc)),
   33|       |			be32_to_cpu(hdr->hdr_crc));
  ------------------
  |  |  141|     34|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
   34|     34|}

ubifs.c:probe_ubifs:
  108|     65|{
  109|     65|	const struct ubifs_sb_node *sb;
  110|       |
  111|     65|	sb = blkid_probe_get_sb(pr, mag, struct ubifs_sb_node);
  ------------------
  |  |  451|     65|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
  112|     65|	if (!sb)
  ------------------
  |  Branch (112:6): [True: 0, False: 65]
  ------------------
  113|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (113:10): [True: 0, False: 0]
  ------------------
  114|       |
  115|     65|	if (!ubifs_verify_csum(pr, sb))
  ------------------
  |  Branch (115:6): [True: 64, False: 1]
  ------------------
  116|     64|		return 1;
  117|       |
  118|      1|	blkid_probe_set_uuid(pr, sb->uuid);
  119|      1|	blkid_probe_sprintf_version(pr, "w%"PRIu32"r%"PRIu32,
  120|      1|			le32_to_cpu(sb->fmt_version),
  ------------------
  |  |  137|      1|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  121|      1|			le32_to_cpu(sb->ro_compat_version));
  ------------------
  |  |  137|      1|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  122|      1|	blkid_probe_set_fssize(pr,
  123|      1|			(uint64_t) le32_to_cpu(sb->leb_size)
  ------------------
  |  |  137|      1|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  124|       |			* le32_to_cpu(sb->leb_cnt));
  ------------------
  |  |  137|      1|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  125|      1|	return 0;
  126|     65|}
ubifs.c:ubifs_verify_csum:
   99|     65|{
  100|     65|	size_t csummed_offset = offsetof(struct ubifs_ch, sqnum);
  101|     65|	uint32_t crc = ul_crc32(~0LL,
  102|     65|			(unsigned char *) sb + csummed_offset,
  103|     65|			sizeof(*sb) - csummed_offset);
  104|       |	return blkid_probe_verify_csum(pr, crc, le32_to_cpu(sb->ch.crc));
  ------------------
  |  |  137|     65|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  105|     65|}

udf.c:probe_udf:
  221|    632|{
  222|    632|	struct volume_descriptor *vd;
  223|    632|	struct volume_structure_descriptor *vsd;
  224|    632|	struct logical_vol_integ_descriptor_imp_use *lvidiu;
  225|    632|	uint32_t lvid_len = 0;
  226|    632|	uint32_t lvid_loc = 0;
  227|    632|	uint64_t s_off;
  228|    632|	uint32_t bs;
  229|    632|	uint32_t b;
  230|    632|	uint16_t type;
  231|    632|	uint32_t count;
  232|    632|	uint32_t loc;
  233|    632|	size_t i;
  234|    632|	uint32_t vsd_len;
  235|    632|	uint16_t udf_rev = 0;
  236|    632|	int is_udf = 0;
  237|    632|	int vsd_2048_valid = -1;
  238|    632|	int have_label = 0;
  239|    632|	int have_uuid = 0;
  240|    632|	int have_logvolid = 0;
  241|    632|	int have_volid = 0;
  242|    632|	int have_volsetid = 0;
  243|    632|	int have_applicationid = 0;
  244|    632|	int have_publisherid = 0;
  245|       |
  246|       |	/* Session offset */
  247|    632|	if (blkid_probe_get_hint(pr, "session_offset", &s_off) < 0)
  ------------------
  |  Branch (247:6): [True: 632, False: 0]
  ------------------
  248|    632|		s_off = 0;
  249|       |
  250|       |	/* The block size of a UDF filesystem is that of the underlying
  251|       |	 * storage; we check later on for the special case of image files,
  252|       |	 * which may have any block size valid for UDF filesystem */
  253|    632|	uint32_t pbs[] = { 0, 512, 1024, 2048, 4096 };
  254|    632|	pbs[0] = blkid_probe_get_sectorsize(pr);
  255|       |
  256|  3.47k|	for (i = 0; i < ARRAY_SIZE(pbs); i++) {
  ------------------
  |  |  182|  3.47k|#define ARRAY_SIZE(arr) countof(arr)
  ------------------
  |  Branch (256:14): [True: 2.94k, False: 527]
  ------------------
  257|       |		/* Do not try with block size same as sector size two times */
  258|  2.94k|		if (i != 0 && pbs[0] == pbs[i])
  ------------------
  |  Branch (258:7): [True: 2.31k, False: 632]
  |  Branch (258:17): [True: 629, False: 1.68k]
  ------------------
  259|    629|			continue;
  260|       |
  261|       |		/* Do not try with block size which is not divisor of session offset */
  262|  2.31k|		if (s_off % pbs[i])
  ------------------
  |  Branch (262:7): [True: 0, False: 2.31k]
  ------------------
  263|      0|			continue;
  264|       |
  265|       |		/* ECMA-167 2/8.4, 2/9.1: Each VSD is either 2048 bytes long or
  266|       |		 * its size is same as blocksize (for blocksize > 2048 bytes)
  267|       |		 * plus padded with zeros */
  268|  2.31k|		vsd_len = pbs[i] > 2048 ? pbs[i] : 2048;
  ------------------
  |  Branch (268:13): [True: 527, False: 1.78k]
  ------------------
  269|       |
  270|       |		/* Process 2048 bytes long VSD on first session only once
  271|       |		 * as its location is same for any blocksize */
  272|  2.31k|		if (s_off == 0 && vsd_len == 2048) {
  ------------------
  |  Branch (272:7): [True: 2.31k, False: 0]
  |  Branch (272:21): [True: 1.78k, False: 527]
  ------------------
  273|  1.78k|			if (vsd_2048_valid == 0)
  ------------------
  |  Branch (273:8): [True: 822, False: 967]
  ------------------
  274|    822|				continue;
  275|    967|			if (vsd_2048_valid == 1)
  ------------------
  |  Branch (275:8): [True: 335, False: 632]
  ------------------
  276|    335|				goto anchor;
  277|    967|		}
  278|       |
  279|       |		/* Check for a Volume Structure Descriptor (VSD) */
  280|  2.10k|		for (b = 0; b < 64; b++) {
  ------------------
  |  Branch (280:15): [True: 2.10k, False: 0]
  ------------------
  281|  2.10k|			vsd = (struct volume_structure_descriptor *)
  282|  2.10k|				blkid_probe_get_buffer(pr,
  283|  2.10k|						s_off + UDF_VSD_OFFSET + b * vsd_len,
  ------------------
  |  |  153|  2.10k|#define UDF_VSD_OFFSET			0x8000LL
  ------------------
  284|  2.10k|						sizeof(*vsd));
  285|  2.10k|			if (!vsd)
  ------------------
  |  Branch (285:8): [True: 0, False: 2.10k]
  ------------------
  286|      0|				return errno ? -errno : 1;
  ------------------
  |  Branch (286:12): [True: 0, False: 0]
  ------------------
  287|  2.10k|			if (vsd->id[0] == '\0')
  ------------------
  |  Branch (287:8): [True: 314, False: 1.78k]
  ------------------
  288|    314|				break;
  289|  1.78k|			if (memcmp(vsd->id, "NSR02", 5) == 0 ||
  ------------------
  |  Branch (289:8): [True: 156, False: 1.63k]
  ------------------
  290|  1.63k|			    memcmp(vsd->id, "NSR03", 5) == 0)
  ------------------
  |  Branch (290:8): [True: 192, False: 1.43k]
  ------------------
  291|    348|				goto anchor;
  292|  1.43k|			else if (memcmp(vsd->id, "BEA01", 5) != 0 &&
  ------------------
  |  Branch (292:13): [True: 1.39k, False: 42]
  ------------------
  293|  1.39k|			         memcmp(vsd->id, "BOOT2", 5) != 0 &&
  ------------------
  |  Branch (293:13): [True: 1.33k, False: 66]
  ------------------
  294|  1.33k|			         memcmp(vsd->id, "CD001", 5) != 0 &&
  ------------------
  |  Branch (294:13): [True: 580, False: 751]
  ------------------
  295|    580|			         memcmp(vsd->id, "CDW02", 5) != 0 &&
  ------------------
  |  Branch (295:13): [True: 549, False: 31]
  ------------------
  296|    549|			         memcmp(vsd->id, "TEA01", 5) != 0)
  ------------------
  |  Branch (296:13): [True: 497, False: 52]
  ------------------
  297|       |				/* ECMA-167 2/8.3.1: The volume recognition sequence is
  298|       |				 * terminated by the first sector which is not a valid
  299|       |				 * descriptor.
  300|       |				 * UDF-2.60 2.1.7: UDF 2.00 and lower revisions do not
  301|       |				 * have requirement that NSR descriptor is in Extended Area
  302|       |				 * (between BEA01 and TEA01) and that there is only one
  303|       |				 * Extended Area. So do not stop scanning after TEA01. */
  304|    497|				break;
  305|  1.78k|		}
  306|       |
  307|    811|		if (s_off == 0 && vsd_len == 2048)
  ------------------
  |  Branch (307:7): [True: 811, False: 0]
  |  Branch (307:21): [True: 411, False: 400]
  ------------------
  308|    411|			vsd_2048_valid = 0;
  309|       |
  310|       |		/* NSR was not found, try with next block size */
  311|    811|		continue;
  312|       |
  313|    683|anchor:
  314|    683|		if (s_off == 0 && vsd_len == 2048)
  ------------------
  |  Branch (314:7): [True: 683, False: 0]
  |  Branch (314:21): [True: 556, False: 127]
  ------------------
  315|    556|			vsd_2048_valid = 1;
  316|       |
  317|       |		/* Read Anchor Volume Descriptor (AVDP), detect block size */
  318|    683|		vd = (struct volume_descriptor *)
  319|    683|			blkid_probe_get_buffer(pr, s_off + 256 * pbs[i], sizeof(*vd));
  320|    683|		if (!vd)
  ------------------
  |  Branch (320:7): [True: 0, False: 683]
  ------------------
  321|      0|			return errno ? -errno : 1;
  ------------------
  |  Branch (321:11): [True: 0, False: 0]
  ------------------
  322|       |
  323|       |		/* Check that we read correct sector and detected correct block size */
  324|    683|		if (le32_to_cpu(vd->tag.location) == s_off / pbs[i] + 256) {
  ------------------
  |  |  137|    683|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (324:7): [True: 127, False: 556]
  ------------------
  325|    127|			type = le16_to_cpu(vd->tag.id);
  ------------------
  |  |  136|    127|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  326|    127|			if (type == TAG_ID_AVDP)
  ------------------
  |  |  141|    127|#define TAG_ID_AVDP 2
  ------------------
  |  Branch (326:8): [True: 102, False: 25]
  ------------------
  327|    102|				goto real_blksz;
  328|    127|		}
  329|       |
  330|       |		/* UDF-2.60: 2.2.3: Unclosed sequential Write-Once media may
  331|       |		 * have a single AVDP present at either sector 256 or 512. */
  332|    581|		vd = (struct volume_descriptor *)
  333|    581|			blkid_probe_get_buffer(pr, s_off + 512 * pbs[i], sizeof(*vd));
  334|    581|		if (!vd)
  ------------------
  |  Branch (334:7): [True: 0, False: 581]
  ------------------
  335|      0|			return errno ? -errno : 1;
  ------------------
  |  Branch (335:11): [True: 0, False: 0]
  ------------------
  336|       |
  337|    581|		if (le32_to_cpu(vd->tag.location) == s_off / pbs[i] + 512) {
  ------------------
  |  |  137|    581|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (337:7): [True: 8, False: 573]
  ------------------
  338|      8|			type = le16_to_cpu(vd->tag.id);
  ------------------
  |  |  136|      8|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  339|      8|			if (type == TAG_ID_AVDP)
  ------------------
  |  |  141|      8|#define TAG_ID_AVDP 2
  ------------------
  |  Branch (339:8): [True: 3, False: 5]
  ------------------
  340|      3|				goto real_blksz;
  341|      8|		}
  342|       |
  343|    581|	}
  344|    527|	return 1;
  345|       |
  346|    105|real_blksz:
  347|       |	/* At this stage we detected ISO/IEC 13346 or ECMA-167 filesystem recognition sequence, it does not have to be UDF */
  348|       |
  349|       |	/* Use the actual block size from here on out */
  350|    105|	bs = pbs[i];
  351|       |
  352|       |	/* get descriptor list address and block count;
  353|       |	 * UDF volume descriptor sequence is short (PVD, LVD, USD, IUVD, TD, etc.),
  354|       |	 * cap iteration to avoid DoS from crafted anchor length
  355|       |	 * (the kernel uses UDF_MAX_TD_NESTING=64 for a similar purpose) */
  356|    105|	count = le32_to_cpu(vd->type.anchor.length) / bs;
  ------------------
  |  |  137|    105|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  357|    105|	if (count > 64)
  ------------------
  |  Branch (357:6): [True: 9, False: 96]
  ------------------
  358|      9|		count = 64;
  359|    105|	loc = le32_to_cpu(vd->type.anchor.location);
  ------------------
  |  |  137|    105|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  360|       |
  361|       |	/* pick the primary descriptor from the list and read UDF identifiers */
  362|    177|	for (b = 0; b < count; b++) {
  ------------------
  |  Branch (362:14): [True: 104, False: 73]
  ------------------
  363|    104|		vd = (struct volume_descriptor *)
  364|    104|			blkid_probe_get_buffer(pr,
  365|    104|					((uint64_t) loc + b) * bs,
  366|    104|					sizeof(*vd));
  367|    104|		if (!vd)
  ------------------
  |  Branch (367:7): [True: 3, False: 101]
  ------------------
  368|      3|			return errno ? -errno : 1;
  ------------------
  |  Branch (368:11): [True: 0, False: 3]
  ------------------
  369|    101|		type = le16_to_cpu(vd->tag.id);
  ------------------
  |  |  136|    101|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  370|    101|		if (type == 0)
  ------------------
  |  Branch (370:7): [True: 6, False: 95]
  ------------------
  371|      6|			break;
  372|     95|		if (le32_to_cpu(vd->tag.location) != loc + b)
  ------------------
  |  |  137|     95|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (372:7): [True: 20, False: 75]
  ------------------
  373|     20|			break;
  374|     75|		if (type == TAG_ID_TD)
  ------------------
  |  |  144|     75|#define TAG_ID_TD   8
  ------------------
  |  Branch (374:7): [True: 3, False: 72]
  ------------------
  375|      3|			break;
  376|     72|		if (type == TAG_ID_PVD) {
  ------------------
  |  |  140|     72|#define TAG_ID_PVD  1
  ------------------
  |  Branch (376:7): [True: 29, False: 43]
  ------------------
  377|     29|			if (!have_volid && is_charset_udf(vd->type.primary.desc_charset)) {
  ------------------
  |  |   22|     29|#define is_charset_udf(charspec) ((charspec).type == 0 && strncmp((charspec).info, "OSTA Compressed Unicode", sizeof((charspec).info)) == 0)
  |  |  ------------------
  |  |  |  Branch (22:35): [True: 18, False: 11]
  |  |  |  Branch (22:59): [True: 0, False: 18]
  |  |  ------------------
  ------------------
  |  Branch (377:8): [True: 29, False: 0]
  ------------------
  378|      0|				int enc = udf_cid_to_enc(vd->type.primary.ident.cid);
  ------------------
  |  |   24|      0|#define udf_cid_to_enc(cid) ((cid) == 8 ? UL_ENCODE_LATIN1 : (cid) == 16 ? UL_ENCODE_UTF16BE : -1)
  |  |  ------------------
  |  |  |  Branch (24:30): [True: 0, False: 0]
  |  |  |  Branch (24:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  379|      0|				uint8_t clen = vd->type.primary.ident.clen;
  380|      0|				if (clen > 0)
  ------------------
  |  Branch (380:9): [True: 0, False: 0]
  ------------------
  381|      0|					--clen;
  382|      0|				if (clen > sizeof(vd->type.primary.ident.c))
  ------------------
  |  Branch (382:9): [True: 0, False: 0]
  ------------------
  383|      0|					clen = sizeof(vd->type.primary.ident.c);
  384|      0|				if (enc != -1)
  ------------------
  |  Branch (384:9): [True: 0, False: 0]
  ------------------
  385|      0|					have_volid = !blkid_probe_set_utf8_id_label(pr, "VOLUME_ID",
  386|      0|							vd->type.primary.ident.c, clen, enc);
  387|      0|			}
  388|     29|			if (!have_uuid && is_charset_udf(vd->type.primary.desc_charset)) {
  ------------------
  |  |   22|     29|#define is_charset_udf(charspec) ((charspec).type == 0 && strncmp((charspec).info, "OSTA Compressed Unicode", sizeof((charspec).info)) == 0)
  |  |  ------------------
  |  |  |  Branch (22:35): [True: 18, False: 11]
  |  |  |  Branch (22:59): [True: 0, False: 18]
  |  |  ------------------
  ------------------
  |  Branch (388:8): [True: 29, False: 0]
  ------------------
  389|       |				/* VolumeSetIdentifier in UDF 2.01 specification:
  390|       |				 * =================================================================================
  391|       |				 * 2.2.2.5 dstring VolumeSetIdentifier
  392|       |				 *
  393|       |				 * Interpreted as specifying the identifier for the volume set.
  394|       |				 *
  395|       |				 * The first 16 characters of this field should be set to a unique value. The
  396|       |				 * remainder of the field may be set to any allowed value. Specifically, software
  397|       |				 * generating volumes conforming to this specification shall not set this field to a
  398|       |				 * fixed or trivial value. Duplicate disks which are intended to be identical may
  399|       |				 * contain the same value in this field.
  400|       |				 *
  401|       |				 * NOTE: The intended purpose of this is to guarantee Volume Sets with unique
  402|       |				 * identifiers. The first 8 characters of the unique part should come from a CS0
  403|       |				 * hexadecimal representation of a 32-bit time value. The remaining 8 characters
  404|       |				 * are free for implementation use.
  405|       |				 * =================================================================================
  406|       |				 *
  407|       |				 * Implementation in libblkid:
  408|       |				 * The first 16 (Unicode) characters of VolumeSetIdentifier are encoded to UTF-8
  409|       |				 * and then first 16 UTF-8 bytes are used to generate UUID. If all 16 bytes are
  410|       |				 * hexadecimal digits then their lowercase variants are used as UUID. If one of
  411|       |				 * the first 8 bytes (time value) is not hexadecimal digit then first 8 bytes are
  412|       |				 * encoded to their hexadecimal representations, resulting in 16 characters and
  413|       |				 * set as UUID. If all first 8 bytes (time value) are hexadecimal digits but some
  414|       |				 * remaining not then lowercase variant of the first 8 bytes are used as first
  415|       |				 * part of UUID and next 4 bytes encoded in hexadecimal representations (resulting
  416|       |				 * in 8 characters) are used as second part of UUID string.
  417|       |				 */
  418|      0|				unsigned char uuid[17];
  419|      0|				if (gen_uuid_from_volset_id(uuid, &vd->type.primary.volset_id) == 0)
  ------------------
  |  Branch (419:9): [True: 0, False: 0]
  ------------------
  420|      0|					have_uuid = !blkid_probe_strncpy_uuid(pr, uuid, sizeof(uuid));
  421|      0|			}
  422|     29|			if (!have_volsetid && is_charset_udf(vd->type.primary.desc_charset)) {
  ------------------
  |  |   22|     29|#define is_charset_udf(charspec) ((charspec).type == 0 && strncmp((charspec).info, "OSTA Compressed Unicode", sizeof((charspec).info)) == 0)
  |  |  ------------------
  |  |  |  Branch (22:35): [True: 18, False: 11]
  |  |  |  Branch (22:59): [True: 0, False: 18]
  |  |  ------------------
  ------------------
  |  Branch (422:8): [True: 29, False: 0]
  ------------------
  423|      0|				int enc = udf_cid_to_enc(vd->type.primary.volset_id.cid);
  ------------------
  |  |   24|      0|#define udf_cid_to_enc(cid) ((cid) == 8 ? UL_ENCODE_LATIN1 : (cid) == 16 ? UL_ENCODE_UTF16BE : -1)
  |  |  ------------------
  |  |  |  Branch (24:30): [True: 0, False: 0]
  |  |  |  Branch (24:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  424|      0|				uint8_t clen = vd->type.primary.volset_id.clen;
  425|      0|				if (clen > 0)
  ------------------
  |  Branch (425:9): [True: 0, False: 0]
  ------------------
  426|      0|					--clen;
  427|      0|				if (clen > sizeof(vd->type.primary.volset_id.c))
  ------------------
  |  Branch (427:9): [True: 0, False: 0]
  ------------------
  428|      0|					clen = sizeof(vd->type.primary.volset_id.c);
  429|      0|				if (enc != -1)
  ------------------
  |  Branch (429:9): [True: 0, False: 0]
  ------------------
  430|      0|					have_volsetid = !blkid_probe_set_utf8_id_label(pr, "VOLUME_SET_ID",
  431|      0|							vd->type.primary.volset_id.c, clen, enc);
  432|      0|			}
  433|     29|			if (!have_applicationid) {
  ------------------
  |  Branch (433:8): [True: 29, False: 0]
  ------------------
  434|       |				/* UDF-2.60: 2.2.2.9: This field specifies a valid Entity Identifier identifying the application that last wrote this field */
  435|     29|				const unsigned char *app_id = (const unsigned char *)vd->type.primary.app_id;
  436|     29|				size_t app_id_len = strnlen(vd->type.primary.app_id, sizeof(vd->type.primary.app_id));
  437|     29|				if (app_id_len > 0 && app_id[0] == '*') {
  ------------------
  |  Branch (437:9): [True: 16, False: 13]
  |  Branch (437:27): [True: 3, False: 13]
  ------------------
  438|      3|					app_id++;
  439|      3|					app_id_len--;
  440|      3|				}
  441|       |				/* When Application Identifier is not set then use Developer ID from Implementation Identifier */
  442|     29|				if (app_id_len == 0) {
  ------------------
  |  Branch (442:9): [True: 13, False: 16]
  ------------------
  443|       |					/* UDF-2.60: 2.1.5.2: "*Developer ID" refers to an Entity Identifier that uniquely identifies the current implementation */
  444|     13|					app_id = (const unsigned char *)vd->type.primary.imp_id;
  445|     13|					app_id_len = strnlen(vd->type.primary.imp_id, sizeof(vd->type.primary.imp_id));
  446|     13|					if (app_id_len > 0 && app_id[0] == '*') {
  ------------------
  |  Branch (446:10): [True: 10, False: 3]
  |  Branch (446:28): [True: 0, False: 10]
  ------------------
  447|      0|						app_id++;
  448|      0|						app_id_len--;
  449|      0|					}
  450|     13|				}
  451|     29|				if (app_id_len > 0) {
  ------------------
  |  Branch (451:9): [True: 26, False: 3]
  ------------------
  452|       |					/* UDF-2.60: 2.1.5.2: Values used by UDF for this field are specified in terms of ASCII character strings */
  453|     26|					have_applicationid = !blkid_probe_set_id_label(pr, "APPLICATION_ID", app_id, app_id_len);
  454|     26|				}
  455|     29|			}
  456|     43|		} else if (type == TAG_ID_LVD) {
  ------------------
  |  |  143|     43|#define TAG_ID_LVD  6
  ------------------
  |  Branch (456:14): [True: 20, False: 23]
  ------------------
  457|     20|			if (!lvid_len || !lvid_loc) {
  ------------------
  |  Branch (457:8): [True: 20, False: 0]
  |  Branch (457:21): [True: 0, False: 0]
  ------------------
  458|     20|				uint32_t num_partition_maps = le32_to_cpu(vd->type.logical.num_partition_maps);
  ------------------
  |  |  137|     20|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  459|       |				/* ECMA-167 3/10.6.12: If num_partition_maps is 0, then no LVID is specified */
  460|     20|				if (num_partition_maps) {
  ------------------
  |  Branch (460:9): [True: 15, False: 5]
  ------------------
  461|     15|					lvid_len = le32_to_cpu(vd->type.logical.lvid_length);
  ------------------
  |  |  137|     15|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  462|     15|					lvid_loc = le32_to_cpu(vd->type.logical.lvid_location);
  ------------------
  |  |  137|     15|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  463|     15|				}
  464|     20|			}
  465|     20|			if (!is_udf || !udf_rev) {
  ------------------
  |  Branch (465:8): [True: 20, False: 0]
  |  Branch (465:19): [True: 0, False: 0]
  ------------------
  466|       |				/* UDF-2.60: 2.2.4.3: This field shall indicate that the contents of
  467|       |				 * this logical volume conforms to the domain defined in this document.
  468|       |				 * This distinguish UDF from all other ISO/IEC 13346 and ECMA-167 filesystems. */
  469|     20|				if (strncmp(vd->type.logical.domain_id, "*OSTA UDF Compliant", sizeof(vd->type.logical.domain_id)) == 0) {
  ------------------
  |  Branch (469:9): [True: 0, False: 20]
  ------------------
  470|      0|					is_udf = 1;
  471|       |					/* UDF-2.60: 2.1.5.3: UDF revision field shall indicate revision of UDF document
  472|       |					 * We use maximal value from this field and from LVIDIU fields for ID_FS_VERSION */
  473|      0|					if (!udf_rev)
  ------------------
  |  Branch (473:10): [True: 0, False: 0]
  ------------------
  474|      0|						udf_rev = le16_to_cpu(vd->type.logical.udf_rev);
  ------------------
  |  |  136|      0|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  475|      0|				}
  476|     20|			}
  477|     20|			if ((!have_logvolid || !have_label) && is_charset_udf(vd->type.logical.desc_charset)) {
  ------------------
  |  |   22|     20|#define is_charset_udf(charspec) ((charspec).type == 0 && strncmp((charspec).info, "OSTA Compressed Unicode", sizeof((charspec).info)) == 0)
  |  |  ------------------
  |  |  |  Branch (22:35): [True: 9, False: 11]
  |  |  |  Branch (22:59): [True: 0, False: 9]
  |  |  ------------------
  ------------------
  |  Branch (477:9): [True: 20, False: 0]
  |  Branch (477:27): [True: 0, False: 0]
  ------------------
  478|       |				/* LogicalVolumeIdentifier in UDF 2.01 specification:
  479|       |				 * ===============================================================
  480|       |				 * 2. Basic Restrictions & Requirements
  481|       |				 *
  482|       |				 * Logical Volume Descriptor
  483|       |				 *
  484|       |				 * There shall be exactly one prevailing Logical Volume
  485|       |				 * Descriptor recorded per Volume Set.
  486|       |				 *
  487|       |				 * The LogicalVolumeIdentifier field shall not be null and
  488|       |				 * should contain an identifier that aids in the identification of
  489|       |				 * the logical volume. Specifically, software generating
  490|       |				 * volumes conforming to this specification shall not set this
  491|       |				 * field to a fixed or trivial value. Duplicate disks, which are
  492|       |				 * intended to be identical, may contain the same value in this
  493|       |				 * field. This field is extremely important in logical volume
  494|       |				 * identification when multiple media are present within a
  495|       |				 * jukebox. This name is typically what is displayed to the user.
  496|       |				 * ===============================================================
  497|       |				 *
  498|       |				 * Implementation in libblkid:
  499|       |				 * The LogicalVolumeIdentifier field is used for LABEL. MS Windows
  500|       |				 * read Volume Label also from LogicalVolumeIdentifier. Grub2 read
  501|       |				 * LABEL also from this field. Program newfs_udf (from UDFclient)
  502|       |				 * when formatting disk set this field from user option Disc Name.
  503|       |				 */
  504|      0|				int enc = udf_cid_to_enc(vd->type.logical.logvol_id.cid);
  ------------------
  |  |   24|      0|#define udf_cid_to_enc(cid) ((cid) == 8 ? UL_ENCODE_LATIN1 : (cid) == 16 ? UL_ENCODE_UTF16BE : -1)
  |  |  ------------------
  |  |  |  Branch (24:30): [True: 0, False: 0]
  |  |  |  Branch (24:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  505|      0|				uint8_t clen = vd->type.logical.logvol_id.clen;
  506|      0|				if (clen > 0)
  ------------------
  |  Branch (506:9): [True: 0, False: 0]
  ------------------
  507|      0|					--clen;
  508|      0|				if (clen > sizeof(vd->type.logical.logvol_id.c))
  ------------------
  |  Branch (508:9): [True: 0, False: 0]
  ------------------
  509|      0|					clen = sizeof(vd->type.logical.logvol_id.c);
  510|      0|				if (enc != -1) {
  ------------------
  |  Branch (510:9): [True: 0, False: 0]
  ------------------
  511|      0|					if (!have_label)
  ------------------
  |  Branch (511:10): [True: 0, False: 0]
  ------------------
  512|      0|						have_label = !blkid_probe_set_utf8label(pr,
  513|      0|								vd->type.logical.logvol_id.c, clen, enc);
  514|      0|					if (!have_logvolid)
  ------------------
  |  Branch (514:10): [True: 0, False: 0]
  ------------------
  515|      0|						have_logvolid = !blkid_probe_set_utf8_id_label(pr, "LOGICAL_VOLUME_ID",
  516|      0|								vd->type.logical.logvol_id.c, clen, enc);
  517|      0|				}
  518|      0|			}
  519|     23|		} else if (type == TAG_ID_IUVD) {
  ------------------
  |  |  142|     23|#define TAG_ID_IUVD 4
  ------------------
  |  Branch (519:14): [True: 8, False: 15]
  ------------------
  520|      8|			if (!have_publisherid && strncmp(vd->type.imp_use_volume.lvi_id, "*UDF LV Info", sizeof(vd->type.imp_use_volume.lvi_id)) == 0 && is_charset_udf(vd->type.imp_use_volume.lvi_charset)) {
  ------------------
  |  |   22|      0|#define is_charset_udf(charspec) ((charspec).type == 0 && strncmp((charspec).info, "OSTA Compressed Unicode", sizeof((charspec).info)) == 0)
  |  |  ------------------
  |  |  |  Branch (22:35): [True: 0, False: 0]
  |  |  |  Branch (22:59): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (520:8): [True: 8, False: 0]
  |  Branch (520:29): [True: 0, False: 8]
  ------------------
  521|       |				/* UDF-2.60: 2.2.7.2.3: Field LVInfo1 could contain information such as Owner Name
  522|       |				 * More UDF generating tools set this field to person who creating the filesystem
  523|       |				 * therefore its meaning is similar to ISO9660 Publisher Identifier. So for
  524|       |				 * compatibility with iso9660 superblock code export this field via PUBLISHER_ID.
  525|       |				 */
  526|      0|				int enc = udf_cid_to_enc(vd->type.imp_use_volume.lvinfo1.cid);
  ------------------
  |  |   24|      0|#define udf_cid_to_enc(cid) ((cid) == 8 ? UL_ENCODE_LATIN1 : (cid) == 16 ? UL_ENCODE_UTF16BE : -1)
  |  |  ------------------
  |  |  |  Branch (24:30): [True: 0, False: 0]
  |  |  |  Branch (24:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  527|      0|				uint8_t clen = vd->type.imp_use_volume.lvinfo1.clen;
  528|      0|				if (clen > 0)
  ------------------
  |  Branch (528:9): [True: 0, False: 0]
  ------------------
  529|      0|					--clen;
  530|      0|				if (clen > sizeof(vd->type.imp_use_volume.lvinfo1.c))
  ------------------
  |  Branch (530:9): [True: 0, False: 0]
  ------------------
  531|      0|					clen = sizeof(vd->type.imp_use_volume.lvinfo1.c);
  532|      0|				if (enc != -1)
  ------------------
  |  Branch (532:9): [True: 0, False: 0]
  ------------------
  533|      0|					have_publisherid = !blkid_probe_set_utf8_id_label(pr, "PUBLISHER_ID",
  534|      0|								vd->type.imp_use_volume.lvinfo1.c, clen, enc);
  535|      0|			}
  536|      8|		}
  537|     72|		if (is_udf && have_volid && have_uuid && have_volsetid && have_logvolid && have_label && lvid_len && lvid_loc && have_applicationid && have_publisherid)
  ------------------
  |  Branch (537:7): [True: 0, False: 72]
  |  Branch (537:17): [True: 0, False: 0]
  |  Branch (537:31): [True: 0, False: 0]
  |  Branch (537:44): [True: 0, False: 0]
  |  Branch (537:61): [True: 0, False: 0]
  |  Branch (537:78): [True: 0, False: 0]
  |  Branch (537:92): [True: 0, False: 0]
  |  Branch (537:104): [True: 0, False: 0]
  |  Branch (537:116): [True: 0, False: 0]
  |  Branch (537:138): [True: 0, False: 0]
  ------------------
  538|      0|			break;
  539|     72|	}
  540|       |
  541|    102|	if (!is_udf) {
  ------------------
  |  Branch (541:6): [True: 102, False: 0]
  ------------------
  542|       |		/* We detected some other ISO/IEC 13346 or ECMA-167 filesystem, not UDF */
  543|    102|		return 1;
  544|    102|	}
  545|       |
  546|       |	/* Pick the first logical volume integrity descriptor and read UDF revision */
  547|      0|	if (lvid_loc && lvid_len >= sizeof(*vd)) {
  ------------------
  |  Branch (547:6): [True: 0, False: 0]
  |  Branch (547:18): [True: 0, False: 0]
  ------------------
  548|      0|		vd = (struct volume_descriptor *)
  549|      0|			blkid_probe_get_buffer(pr,
  550|      0|					(uint64_t) lvid_loc * bs,
  551|      0|					sizeof(*vd));
  552|      0|		if (!vd)
  ------------------
  |  Branch (552:7): [True: 0, False: 0]
  ------------------
  553|      0|			return errno ? -errno : 1;
  ------------------
  |  Branch (553:11): [True: 0, False: 0]
  ------------------
  554|      0|		type = le16_to_cpu(vd->tag.id);
  ------------------
  |  |  136|      0|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  555|      0|		if (type == TAG_ID_LVID &&
  ------------------
  |  |  145|      0|#define TAG_ID_LVID 9
  ------------------
  |  Branch (555:7): [True: 0, False: 0]
  ------------------
  556|      0|		    le32_to_cpu(vd->tag.location) == lvid_loc &&
  ------------------
  |  |  137|      0|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (556:7): [True: 0, False: 0]
  ------------------
  557|      0|		    UDF_LVIDIU_LENGTH(*vd) >= sizeof(*lvidiu)) {
  ------------------
  |  |  166|      0|#define UDF_LVIDIU_LENGTH(vd) (le32_to_cpu((vd).type.logical_vol_integ.imp_use_length))
  |  |  ------------------
  |  |  |  |  137|      0|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  ------------------
  |  Branch (557:7): [True: 0, False: 0]
  ------------------
  558|       |			/* ECMA-167 3/8.8.2: There is stored sequence of LVIDs and valid is just last
  559|       |			 * one. So correctly we should jump to next_lvid_location and read next LVID
  560|       |			 * until we find last one. This could be time consuming process and could
  561|       |			 * lead to scanning lot of disk blocks. Because we use LVID only for UDF
  562|       |			 * version, in the worst case we would report only wrong ID_FS_VERSION. */
  563|      0|			uint16_t lvidiu_udf_rev;
  564|      0|			lvidiu = (struct logical_vol_integ_descriptor_imp_use *)
  565|      0|				blkid_probe_get_buffer(pr,
  566|      0|						(uint64_t) lvid_loc * bs + UDF_LVIDIU_OFFSET(*vd),
  ------------------
  |  |  165|      0|#define UDF_LVIDIU_OFFSET(vd) (sizeof((vd).tag) + sizeof((vd).type.logical_vol_integ) + (uint64_t) 8 * le32_to_cpu((vd).type.logical_vol_integ.num_partitions))
  |  |  ------------------
  |  |  |  |  137|      0|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  ------------------
  567|      0|						sizeof(*lvidiu));
  568|      0|			if (!lvidiu)
  ------------------
  |  Branch (568:8): [True: 0, False: 0]
  ------------------
  569|      0|				return errno ? -errno : 1;
  ------------------
  |  Branch (569:12): [True: 0, False: 0]
  ------------------
  570|       |			/* UDF-2.60: 2. Basic Restrictions & Requirements:
  571|       |			 * The Minimum UDF Read Revision value shall be at most #0250
  572|       |			 * for all media with a UDF 2.60 file system.
  573|       |			 * Because some 2.60 implementations put 2.50 into both LVIDIU
  574|       |			 * fields and 2.60 into LVD, use maximal value from LVD,
  575|       |			 * Minimum UDF Read Revision and Minimum UDF Write Revision for
  576|       |			 * ID_FS_VERSION to distinguish between UDF 2.50 and UDF 2.60 discs. */
  577|      0|			lvidiu_udf_rev = le16_to_cpu(lvidiu->min_udf_read_rev);
  ------------------
  |  |  136|      0|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  578|      0|			if (lvidiu_udf_rev && udf_rev < lvidiu_udf_rev)
  ------------------
  |  Branch (578:8): [True: 0, False: 0]
  |  Branch (578:26): [True: 0, False: 0]
  ------------------
  579|      0|				udf_rev = lvidiu_udf_rev;
  580|      0|			lvidiu_udf_rev = le16_to_cpu(lvidiu->min_udf_write_rev);
  ------------------
  |  |  136|      0|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  581|      0|			if (lvidiu_udf_rev && udf_rev < lvidiu_udf_rev)
  ------------------
  |  Branch (581:8): [True: 0, False: 0]
  |  Branch (581:26): [True: 0, False: 0]
  ------------------
  582|      0|				udf_rev = lvidiu_udf_rev;
  583|      0|		}
  584|      0|	}
  585|       |
  586|      0|	if (udf_rev)
  ------------------
  |  Branch (586:6): [True: 0, False: 0]
  ------------------
  587|       |		/* UDF revision is stored as decimal number in hexadecimal format.
  588|       |		 * E.g. number 0x0150 is revision 1.50, number 0x0201 is revision 2.01. */
  589|      0|		blkid_probe_sprintf_version(pr, "%x.%02x", (unsigned int)(udf_rev >> 8), (unsigned int)(udf_rev & 0xFF));
  590|       |
  591|      0|	blkid_probe_set_fsblocksize(pr, bs);
  592|      0|	blkid_probe_set_block_size(pr, bs);
  593|       |
  594|      0|	return 0;
  595|      0|}

ufs.c:probe_ufs:
  168|  5.94k|{
  169|  5.94k|	int offsets[] = { 0, 8, 64, 256 };
  170|  5.94k|	uint32_t mags[] = {
  171|  5.94k|		UFS2_MAGIC, UFS_MAGIC, UFS_MAGIC_FEA, UFS_MAGIC_LFN,
  ------------------
  |  |  160|  5.94k|#define UFS2_MAGIC			0x19540119
  ------------------
              		UFS2_MAGIC, UFS_MAGIC, UFS_MAGIC_FEA, UFS_MAGIC_LFN,
  ------------------
  |  |  159|  5.94k|#define UFS_MAGIC			0x00011954
  ------------------
              		UFS2_MAGIC, UFS_MAGIC, UFS_MAGIC_FEA, UFS_MAGIC_LFN,
  ------------------
  |  |  161|  5.94k|#define UFS_MAGIC_FEA			0x00195612
  ------------------
              		UFS2_MAGIC, UFS_MAGIC, UFS_MAGIC_FEA, UFS_MAGIC_LFN,
  ------------------
  |  |  162|  5.94k|#define UFS_MAGIC_LFN			0x00095014
  ------------------
  172|  5.94k|		UFS_MAGIC_SEC, UFS_MAGIC_4GB
  ------------------
  |  |  163|  5.94k|#define UFS_MAGIC_SEC			0x00612195
  ------------------
              		UFS_MAGIC_SEC, UFS_MAGIC_4GB
  ------------------
  |  |  164|  5.94k|#define UFS_MAGIC_4GB			0x05231994
  ------------------
  173|  5.94k|	};
  174|  5.94k|	size_t i;
  175|  5.94k|	uint32_t magic;
  176|  5.94k|	struct ufs_super_block *ufs;
  177|  5.94k|	int is_be;
  178|       |
  179|  29.1k|	for (i = 0; i < ARRAY_SIZE(offsets); i++) {
  ------------------
  |  |  182|  29.1k|#define ARRAY_SIZE(arr) countof(arr)
  ------------------
  |  Branch (179:14): [True: 23.3k, False: 5.78k]
  ------------------
  180|  23.3k|		uint32_t magLE, magBE;
  181|  23.3k|		size_t y;
  182|       |
  183|  23.3k|		ufs = (struct ufs_super_block *)
  184|  23.3k|				blkid_probe_get_buffer(pr,
  185|  23.3k|					offsets[i] * 1024,
  186|  23.3k|					sizeof(struct ufs_super_block));
  187|  23.3k|		if (!ufs)
  ------------------
  |  Branch (187:7): [True: 0, False: 23.3k]
  ------------------
  188|      0|			return errno ? -errno : 1;
  ------------------
  |  Branch (188:11): [True: 0, False: 0]
  ------------------
  189|       |
  190|  23.3k|		magBE = be32_to_cpu(ufs->fs_magic);
  ------------------
  |  |  141|  23.3k|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  191|  23.3k|		magLE = le32_to_cpu(ufs->fs_magic);
  ------------------
  |  |  137|  23.3k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  192|       |
  193|   162k|		for (y = 0; y < ARRAY_SIZE(mags); y++) {
  ------------------
  |  |  182|   162k|#define ARRAY_SIZE(arr) countof(arr)
  ------------------
  |  Branch (193:15): [True: 139k, False: 23.1k]
  ------------------
  194|   139k|			if (magLE == mags[y] || magBE == mags[y]) {
  ------------------
  |  Branch (194:8): [True: 78, False: 139k]
  |  Branch (194:28): [True: 79, False: 139k]
  ------------------
  195|    157|				magic = mags[y];
  196|    157|				is_be = (magBE == mags[y]);
  197|    157|				goto found;
  198|    157|			}
  199|   139k|		}
  200|  23.3k|	}
  201|       |
  202|  5.78k|	return 1;
  203|       |
  204|    157|found:
  205|    157|	if (magic == UFS2_MAGIC) {
  ------------------
  |  |  160|    157|#define UFS2_MAGIC			0x19540119
  ------------------
  |  Branch (205:6): [True: 30, False: 127]
  ------------------
  206|     30|		blkid_probe_set_version(pr, "2");
  207|     30|		blkid_probe_set_label(pr, ufs->fs_u11.fs_u2.fs_volname,
  208|     30|				sizeof(ufs->fs_u11.fs_u2.fs_volname));
  209|     30|	} else
  210|    127|		blkid_probe_set_version(pr, "1");
  211|    157|	if (ufs->fs_id[0] || ufs->fs_id[1])
  ------------------
  |  Branch (211:6): [True: 93, False: 64]
  |  Branch (211:23): [True: 48, False: 16]
  ------------------
  212|    141|	{
  213|    141|		if (is_be)
  ------------------
  |  Branch (213:7): [True: 66, False: 75]
  ------------------
  214|     66|			blkid_probe_sprintf_uuid(pr,
  215|     66|					 (unsigned char *) &ufs->fs_id,
  216|     66|						 sizeof(ufs->fs_id),
  217|     66|						 "%08x%08x",
  218|     66|						 be32_to_cpu(ufs->fs_id[0]),
  ------------------
  |  |  141|     66|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  219|     66|						 be32_to_cpu(ufs->fs_id[1]));
  ------------------
  |  |  141|     66|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  220|     75|		else
  221|     75|			blkid_probe_sprintf_uuid(pr,
  222|     75|					 (unsigned char *) &ufs->fs_id,
  223|     75|						 sizeof(ufs->fs_id),
  224|     75|						 "%08x%08x",
  225|     75|						 le32_to_cpu(ufs->fs_id[0]),
  ------------------
  |  |  137|     75|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  226|     75|						 le32_to_cpu(ufs->fs_id[1]));
  ------------------
  |  |  137|     75|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  227|    141|	}
  228|       |
  229|    157|	if (blkid_probe_set_magic(pr,
  ------------------
  |  Branch (229:6): [True: 0, False: 157]
  ------------------
  230|    157|			(offsets[i] * 1024) +
  231|    157|				offsetof(struct ufs_super_block, fs_magic),
  232|    157|			sizeof(ufs->fs_magic),
  233|    157|			(unsigned char *) &ufs->fs_magic))
  234|      0|		return 1;
  235|       |
  236|    157|	uint32_t bsize = 0;
  237|    157|	if (!is_be)
  ------------------
  |  Branch (237:6): [True: 78, False: 79]
  ------------------
  238|     78|		bsize = le32_to_cpu(ufs->fs_fsize);
  ------------------
  |  |  137|     78|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  239|     79|	else
  240|     79|		bsize = be32_to_cpu(ufs->fs_fsize);
  ------------------
  |  |  141|     79|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  241|       |
  242|    157|	blkid_probe_set_fsblocksize(pr, bsize);
  243|    157|	blkid_probe_set_block_size(pr, bsize);
  244|    157|	blkid_probe_set_fsendianness(pr, is_be ?
  ------------------
  |  Branch (244:35): [True: 79, False: 78]
  ------------------
  245|     79|			BLKID_ENDIANNESS_BIG : BLKID_ENDIANNESS_LITTLE);
  246|       |
  247|    157|	return 0;
  248|    157|}

vdo.c:probe_vdo:
   27|     27|{
   28|     27|	const struct vdo_super_block *vsb;
   29|       |
   30|     27|	vsb = blkid_probe_get_sb(pr, mag, struct vdo_super_block);
  ------------------
  |  |  451|     27|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
   31|     27|	if (!vsb)
  ------------------
  |  Branch (31:6): [True: 0, False: 27]
  ------------------
   32|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (32:10): [True: 0, False: 0]
  ------------------
   33|       |
   34|     27|	blkid_probe_set_uuid(pr, vsb->sb_uuid);
   35|     27|	return 0;
   36|     27|}

blkid_probe_is_vfat:
  278|    255|{
  279|    255|	const struct vfat_super_block *vs;
  280|    255|	const struct msdos_super_block *ms;
  281|    255|	const struct blkid_idmag *mag = NULL;
  282|    255|	int rc;
  283|       |
  284|    255|	rc = blkid_probe_get_idmag(pr, &vfat_idinfo, NULL, &mag);
  285|    255|	if (rc < 0)
  ------------------
  |  Branch (285:6): [True: 0, False: 255]
  ------------------
  286|      0|		return rc;	/* error */
  287|    255|	if (rc != BLKID_PROBE_OK || !mag)
  ------------------
  |  |  465|    510|#define BLKID_PROBE_OK	0
  ------------------
  |  Branch (287:6): [True: 0, False: 255]
  |  Branch (287:30): [True: 0, False: 255]
  ------------------
  288|      0|		return 0;
  289|       |
  290|    255|	ms = blkid_probe_get_sb(pr, mag, struct msdos_super_block);
  ------------------
  |  |  451|    255|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
  291|    255|	if (!ms)
  ------------------
  |  Branch (291:6): [True: 0, False: 255]
  ------------------
  292|      0|		return errno ? -errno : 0;
  ------------------
  |  Branch (292:10): [True: 0, False: 0]
  ------------------
  293|    255|	vs = blkid_probe_get_sb(pr, mag, struct vfat_super_block);
  ------------------
  |  |  451|    255|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
  294|    255|	if (!vs)
  ------------------
  |  Branch (294:6): [True: 0, False: 255]
  ------------------
  295|      0|		return errno ? -errno : 0;
  ------------------
  |  Branch (295:10): [True: 0, False: 0]
  ------------------
  296|       |
  297|    255|	return fat_valid_superblock(pr, mag, ms, vs, NULL, NULL, NULL);
  298|    255|}
vfat.c:fat_valid_superblock:
  190|  3.70k|{
  191|  3.70k|	uint16_t sector_size, dir_entries, reserved;
  192|  3.70k|	uint32_t __sect_count, __fat_size, dir_size, __cluster_count, fat_length;
  193|  3.70k|	uint32_t max_count;
  194|       |
  195|       |	/* extra check for FATs without magic strings */
  196|  3.70k|	if (mag->len <= 2) {
  ------------------
  |  Branch (196:6): [True: 1.47k, False: 2.22k]
  ------------------
  197|       |		/* Old floppies have a valid MBR signature */
  198|  1.47k|		if (ms->ms_pmagic[0] != 0x55 || ms->ms_pmagic[1] != 0xAA)
  ------------------
  |  Branch (198:7): [True: 144, False: 1.33k]
  |  Branch (198:35): [True: 11, False: 1.32k]
  ------------------
  199|    155|			return 0;
  200|       |
  201|       |		/*
  202|       |		 * OS/2 and apparently DFSee will place a FAT12/16-like
  203|       |		 * pseudo-superblock in the first 512 bytes of non-FAT
  204|       |		 * filesystems --- at least JFS and HPFS, and possibly others.
  205|       |		 * So we explicitly check for those filesystems at the
  206|       |		 * FAT12/16 filesystem magic field identifier, and if they are
  207|       |		 * present, we rule this out as a FAT filesystem, despite the
  208|       |		 * FAT-like pseudo-header.
  209|       |		 */
  210|  1.32k|		if ((memcmp(ms->ms_magic, "JFS     ", 8) == 0) ||
  ------------------
  |  Branch (210:7): [True: 23, False: 1.30k]
  ------------------
  211|  1.30k|		    (memcmp(ms->ms_magic, "HPFS    ", 8) == 0)) {
  ------------------
  |  Branch (211:7): [True: 34, False: 1.26k]
  ------------------
  212|     57|			DBG(LOWPROBE, ul_debug("\tJFS/HPFS detected"));
  ------------------
  |  |  358|     57|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|     57|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|     57|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|     57|	do { \
  |  |  |  |  |  |  |  |   76|     57|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|     57|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|     57|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 57]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|     57|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 57]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|     57|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|     57|		x; \
  |  |  |  |  |  |   85|     57|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  213|     57|			return 0;
  214|     57|		}
  215|  1.32k|	}
  216|       |
  217|       |	/* fat counts(Linux kernel expects at least 1 FAT table) */
  218|  3.49k|	if (!ms->ms_fats)
  ------------------
  |  Branch (218:6): [True: 1.19k, False: 2.30k]
  ------------------
  219|  1.19k|		return 0;
  220|  2.30k|	if (!ms->ms_reserved)
  ------------------
  |  Branch (220:6): [True: 106, False: 2.19k]
  ------------------
  221|    106|		return 0;
  222|  2.19k|	if (!(0xf8 <= ms->ms_media || ms->ms_media == 0xf0))
  ------------------
  |  Branch (222:8): [True: 1.39k, False: 804]
  |  Branch (222:32): [True: 20, False: 784]
  ------------------
  223|    784|		return 0;
  224|  1.41k|	if (!is_power_of_2(ms->ms_cluster_size))
  ------------------
  |  Branch (224:6): [True: 349, False: 1.06k]
  ------------------
  225|    349|		return 0;
  226|       |
  227|  1.06k|	sector_size = unaligned_le16(&ms->ms_sector_size);
  ------------------
  |  |  125|  1.06k|		(((unsigned char *) x)[0] + (((unsigned char *) x)[1] << 8))
  ------------------
  228|  1.06k|	if (!is_power_of_2(sector_size) ||
  ------------------
  |  Branch (228:6): [True: 172, False: 890]
  ------------------
  229|    890|	    sector_size < 512 || sector_size > 4096)
  ------------------
  |  Branch (229:6): [True: 24, False: 866]
  |  Branch (229:27): [True: 3, False: 863]
  ------------------
  230|    199|		return 0;
  231|       |
  232|    863|	dir_entries = unaligned_le16(&ms->ms_dir_entries);
  ------------------
  |  |  125|    863|		(((unsigned char *) x)[0] + (((unsigned char *) x)[1] << 8))
  ------------------
  233|    863|	reserved =  le16_to_cpu(ms->ms_reserved);
  ------------------
  |  |  136|    863|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  234|    863|	__sect_count = unaligned_le16(&ms->ms_sectors);
  ------------------
  |  |  125|    863|		(((unsigned char *) x)[0] + (((unsigned char *) x)[1] << 8))
  ------------------
  235|       |
  236|    863|	if (__sect_count == 0)
  ------------------
  |  Branch (236:6): [True: 413, False: 450]
  ------------------
  237|    413|		__sect_count = le32_to_cpu(ms->ms_total_sect);
  ------------------
  |  |  137|    413|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  238|       |
  239|    863|	fat_length = le16_to_cpu(ms->ms_fat_length);
  ------------------
  |  |  136|    863|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  240|    863|	if (fat_length == 0)
  ------------------
  |  Branch (240:6): [True: 665, False: 198]
  ------------------
  241|    665|		fat_length = le32_to_cpu(vs->vs_fat32_length);
  ------------------
  |  |  137|    665|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  242|       |
  243|    863|	__fat_size = fat_length * ms->ms_fats;
  244|    863|	dir_size = ((dir_entries * sizeof(struct vfat_dir_entry)) +
  245|    863|					(sector_size-1)) / sector_size;
  246|       |
  247|    863|	__cluster_count = (__sect_count - (reserved + __fat_size + dir_size)) /
  248|    863|							ms->ms_cluster_size;
  249|    863|	if (!ms->ms_fat_length && vs->vs_fat32_length)
  ------------------
  |  Branch (249:6): [True: 665, False: 198]
  |  Branch (249:28): [True: 637, False: 28]
  ------------------
  250|    637|		max_count = FAT32_MAX;
  ------------------
  |  |  114|    637|#define FAT32_MAX 0x0FFFFFF6
  ------------------
  251|    226|	else
  252|    226|		max_count = __cluster_count > FAT12_MAX ? FAT16_MAX : FAT12_MAX;
  ------------------
  |  |  112|    226|#define FAT12_MAX 0xFF4
  ------------------
              		max_count = __cluster_count > FAT12_MAX ? FAT16_MAX : FAT12_MAX;
  ------------------
  |  |  113|    197|#define FAT16_MAX 0xFFF4
  ------------------
              		max_count = __cluster_count > FAT12_MAX ? FAT16_MAX : FAT12_MAX;
  ------------------
  |  |  112|     29|#define FAT12_MAX 0xFF4
  ------------------
  |  Branch (252:15): [True: 197, False: 29]
  ------------------
  253|       |
  254|    863|	if (__cluster_count > max_count)
  ------------------
  |  Branch (254:6): [True: 100, False: 763]
  ------------------
  255|    100|		return 0;
  256|       |
  257|    763|	if (fat_size)
  ------------------
  |  Branch (257:6): [True: 620, False: 143]
  ------------------
  258|    620|		*fat_size = __fat_size;
  259|    763|	if (cluster_count)
  ------------------
  |  Branch (259:6): [True: 620, False: 143]
  ------------------
  260|    620|		*cluster_count = __cluster_count;
  261|    763|	if (sect_count)
  ------------------
  |  Branch (261:6): [True: 620, False: 143]
  ------------------
  262|    620|		*sect_count = __sect_count;
  263|       |
  264|    763|	if (blkid_probe_is_bitlocker(pr))
  ------------------
  |  Branch (264:6): [True: 11, False: 752]
  ------------------
  265|     11|		return 0;
  266|       |
  267|    752|	return 1;	/* valid */
  268|    763|}
vfat.c:probe_vfat:
  303|  3.44k|{
  304|  3.44k|	const struct vfat_super_block *vs;
  305|  3.44k|	const struct msdos_super_block *ms;
  306|  3.44k|	const unsigned char *vol_label = NULL;
  307|  3.44k|	const unsigned char *boot_label = NULL;
  308|  3.44k|	const unsigned char *vol_serno = NULL;
  309|  3.44k|	unsigned char vol_label_buf[11];
  310|  3.44k|	uint16_t sector_size = 0, reserved;
  311|  3.44k|	uint32_t cluster_count, fat_size, sect_count;
  312|  3.44k|	const char *version = NULL;
  313|       |
  314|  3.44k|	ms = blkid_probe_get_sb(pr, mag, struct msdos_super_block);
  ------------------
  |  |  451|  3.44k|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
  315|  3.44k|	if (!ms)
  ------------------
  |  Branch (315:6): [True: 0, False: 3.44k]
  ------------------
  316|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (316:10): [True: 0, False: 0]
  ------------------
  317|       |
  318|  3.44k|	vs = blkid_probe_get_sb(pr, mag, struct vfat_super_block);
  ------------------
  |  |  451|  3.44k|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
  319|  3.44k|	if (!vs)
  ------------------
  |  Branch (319:6): [True: 0, False: 3.44k]
  ------------------
  320|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (320:10): [True: 0, False: 0]
  ------------------
  321|       |
  322|  3.44k|	if (!fat_valid_superblock(pr, mag, ms, vs, &cluster_count, &fat_size,
  ------------------
  |  Branch (322:6): [True: 2.83k, False: 618]
  ------------------
  323|  3.44k|				&sect_count))
  324|  2.83k|		return 1;
  325|       |
  326|    618|	sector_size = unaligned_le16(&ms->ms_sector_size);
  ------------------
  |  |  125|    618|		(((unsigned char *) x)[0] + (((unsigned char *) x)[1] << 8))
  ------------------
  327|    618|	reserved =  le16_to_cpu(ms->ms_reserved);
  ------------------
  |  |  136|    618|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  328|       |
  329|    618|	if (ms->ms_fat_length) {
  ------------------
  |  Branch (329:6): [True: 117, False: 501]
  ------------------
  330|       |		/* the label may be an attribute in the root directory */
  331|    117|		uint64_t root_start = ((uint64_t) reserved + fat_size) * sector_size;
  332|    117|		uint32_t root_dir_entries = unaligned_le16(&vs->vs_dir_entries);
  ------------------
  |  |  125|    117|		(((unsigned char *) x)[0] + (((unsigned char *) x)[1] << 8))
  ------------------
  333|       |
  334|    117|		if (search_fat_label(pr, root_start, root_dir_entries, vol_label_buf))
  ------------------
  |  Branch (334:7): [True: 6, False: 111]
  ------------------
  335|      6|			vol_label = vol_label_buf;
  336|       |
  337|    117|		if (ms->ms_ext_boot_sign == 0x29)
  ------------------
  |  Branch (337:7): [True: 5, False: 112]
  ------------------
  338|      5|			boot_label = ms->ms_label;
  339|       |
  340|    117|		if (ms->ms_ext_boot_sign == 0x28 || ms->ms_ext_boot_sign == 0x29)
  ------------------
  |  Branch (340:7): [True: 1, False: 116]
  |  Branch (340:39): [True: 5, False: 111]
  ------------------
  341|      6|			vol_serno = ms->ms_serno;
  342|       |
  343|    117|		blkid_probe_set_value(pr, "SEC_TYPE", (unsigned char *) "msdos",
  344|    117|                              sizeof("msdos"));
  345|       |
  346|    117|		if (cluster_count < FAT12_MAX)
  ------------------
  |  |  112|    117|#define FAT12_MAX 0xFF4
  ------------------
  |  Branch (346:7): [True: 20, False: 97]
  ------------------
  347|     20|			version = "FAT12";
  348|     97|		else if (cluster_count < FAT16_MAX)
  ------------------
  |  |  113|     97|#define FAT16_MAX 0xFFF4
  ------------------
  |  Branch (348:12): [True: 96, False: 1]
  ------------------
  349|     96|			version = "FAT16";
  350|       |
  351|    501|	} else if (vs->vs_fat32_length) {
  ------------------
  |  Branch (351:13): [True: 495, False: 6]
  ------------------
  352|    495|		const unsigned char *buf;
  353|    495|		uint16_t fsinfo_sect;
  354|    495|		int maxloop = 100;
  355|       |
  356|       |		/* Search the FAT32 root dir for the label attribute */
  357|    495|		uint32_t buf_size = vs->vs_cluster_size * sector_size;
  358|    495|		uint32_t start_data_sect = reserved + fat_size;
  359|    495|		uint32_t entries = ((uint64_t) le32_to_cpu(vs->vs_fat32_length)
  ------------------
  |  |  137|    495|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  360|    495|					* sector_size) / sizeof(uint32_t);
  361|    495|		uint32_t next = le32_to_cpu(vs->vs_root_cluster);
  ------------------
  |  |  137|    495|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  362|       |
  363|  6.10k|		while (next && next < entries && --maxloop) {
  ------------------
  |  Branch (363:10): [True: 5.99k, False: 113]
  |  Branch (363:18): [True: 5.81k, False: 179]
  |  Branch (363:36): [True: 5.75k, False: 52]
  ------------------
  364|  5.75k|			uint32_t next_sect_off;
  365|  5.75k|			uint64_t next_off, fat_entry_off;
  366|  5.75k|			int count;
  367|       |
  368|  5.75k|			next_sect_off = (next - 2) * vs->vs_cluster_size;
  369|  5.75k|			next_off = ((uint64_t) start_data_sect + next_sect_off) *
  370|  5.75k|				sector_size;
  371|       |
  372|  5.75k|			count = buf_size / sizeof(struct vfat_dir_entry);
  373|       |
  374|  5.75k|			if (search_fat_label(pr, next_off, count, vol_label_buf)) {
  ------------------
  |  Branch (374:8): [True: 25, False: 5.73k]
  ------------------
  375|     25|				vol_label = vol_label_buf;
  376|     25|				break;
  377|     25|			}
  378|       |
  379|       |			/* get FAT entry */
  380|  5.73k|			fat_entry_off = ((uint64_t) reserved * sector_size) +
  381|  5.73k|				(next * sizeof(uint32_t));
  382|  5.73k|			buf = blkid_probe_get_buffer(pr, fat_entry_off, buf_size);
  383|  5.73k|			if (buf == NULL)
  ------------------
  |  Branch (383:8): [True: 126, False: 5.60k]
  ------------------
  384|    126|				break;
  385|       |
  386|       |			/* set next cluster */
  387|  5.60k|			next = le32_to_cpu(*((uint32_t *) buf)) & 0x0fffffff;
  ------------------
  |  |  137|  5.60k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  388|  5.60k|		}
  389|       |
  390|    495|		version = "FAT32";
  391|       |
  392|    495|		if (vs->vs_ext_boot_sign == 0x29)
  ------------------
  |  Branch (392:7): [True: 7, False: 488]
  ------------------
  393|      7|			boot_label = vs->vs_label;
  394|       |
  395|    495|		vol_serno = vs->vs_serno;
  396|       |
  397|       |		/*
  398|       |		 * FAT32 should have a valid signature in the fsinfo block,
  399|       |		 * but also allow all bytes set to '\0', because some volumes
  400|       |		 * do not set the signature at all.
  401|       |		 */
  402|    495|		fsinfo_sect = le16_to_cpu(vs->vs_fsinfo_sector);
  ------------------
  |  |  136|    495|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  403|    495|		if (fsinfo_sect) {
  ------------------
  |  Branch (403:7): [True: 484, False: 11]
  ------------------
  404|    484|			struct fat32_fsinfo *fsinfo;
  405|       |
  406|    484|			buf = blkid_probe_get_buffer(pr,
  407|    484|					(uint64_t) fsinfo_sect * sector_size,
  408|    484|					sizeof(struct fat32_fsinfo));
  409|    484|			if (buf == NULL)
  ------------------
  |  Branch (409:8): [True: 111, False: 373]
  ------------------
  410|    111|				return errno ? -errno : 1;
  ------------------
  |  Branch (410:12): [True: 0, False: 111]
  ------------------
  411|       |
  412|    373|			fsinfo = (struct fat32_fsinfo *) buf;
  413|    373|			if (memcmp(fsinfo->signature1, "\x52\x52\x61\x41", 4) != 0 &&
  ------------------
  |  Branch (413:8): [True: 368, False: 5]
  ------------------
  414|    368|			    memcmp(fsinfo->signature1, "\x52\x52\x64\x41", 4) != 0 &&
  ------------------
  |  Branch (414:8): [True: 364, False: 4]
  ------------------
  415|    364|			    memcmp(fsinfo->signature1, "\x00\x00\x00\x00", 4) != 0)
  ------------------
  |  Branch (415:8): [True: 203, False: 161]
  ------------------
  416|    203|				return 1;
  417|    170|			if (memcmp(fsinfo->signature2, "\x72\x72\x41\x61", 4) != 0 &&
  ------------------
  |  Branch (417:8): [True: 169, False: 1]
  ------------------
  418|    169|			    memcmp(fsinfo->signature2, "\x00\x00\x00\x00", 4) != 0)
  ------------------
  |  Branch (418:8): [True: 105, False: 64]
  ------------------
  419|    105|				return 1;
  420|    170|		}
  421|    495|	}
  422|       |
  423|    199|	if (boot_label && memcmp(boot_label, no_name, 11) != 0)
  ------------------
  |  Branch (423:6): [True: 8, False: 191]
  |  Branch (423:20): [True: 7, False: 1]
  ------------------
  424|      7|		blkid_probe_set_id_label(pr, "LABEL_FATBOOT", boot_label, 11);
  425|       |
  426|    199|	if (vol_label)
  ------------------
  |  Branch (426:6): [True: 8, False: 191]
  ------------------
  427|      8|		blkid_probe_set_label(pr, vol_label, 11);
  428|       |
  429|       |	/* We can't just print them as %04X, because they are unaligned */
  430|    199|	if (vol_serno)
  ------------------
  |  Branch (430:6): [True: 82, False: 117]
  ------------------
  431|     82|		blkid_probe_sprintf_uuid(pr, vol_serno, 4, "%02X%02X-%02X%02X",
  432|     82|			vol_serno[3], vol_serno[2], vol_serno[1], vol_serno[0]);
  433|    199|	if (version)
  ------------------
  |  Branch (433:6): [True: 192, False: 7]
  ------------------
  434|    192|		blkid_probe_set_version(pr, version);
  435|       |
  436|    199|	blkid_probe_set_fsblocksize(pr, vs->vs_cluster_size * sector_size);
  437|    199|	blkid_probe_set_block_size(pr, sector_size);
  438|    199|	blkid_probe_set_fssize(pr, (uint64_t) sector_size * sect_count);
  439|       |
  440|    199|	return 0;
  441|    618|}
vfat.c:search_fat_label:
  131|  5.87k|{
  132|  5.87k|	const struct vfat_dir_entry *ent, *dir = NULL;
  133|  5.87k|	uint32_t i;
  134|       |
  135|  5.87k|	DBG(LOWPROBE, ul_debug("\tlook for label in root-dir "
  ------------------
  |  |  358|  5.87k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  5.87k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  5.87k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  5.87k|	do { \
  |  |  |  |  |  |  |  |   76|  5.87k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  5.87k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  5.87k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 5.87k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  5.87k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 5.87k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  5.87k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  5.87k|		x; \
  |  |  |  |  |  |   85|  5.87k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  136|  5.87k|			"(entries: %"PRIu32", offset: %"PRIu64")", entries, offset));
  137|       |
  138|  5.87k|	if (!blkid_probe_is_tiny(pr)) {
  ------------------
  |  Branch (138:6): [True: 5.87k, False: 0]
  ------------------
  139|       |		/* large disk, read whole root directory */
  140|  5.87k|		dir = (struct vfat_dir_entry *)
  141|  5.87k|			blkid_probe_get_buffer(pr,
  142|  5.87k|					offset,
  143|  5.87k|					(uint64_t) entries *
  144|  5.87k|						sizeof(struct vfat_dir_entry));
  145|  5.87k|		if (!dir)
  ------------------
  |  Branch (145:7): [True: 2.89k, False: 2.98k]
  ------------------
  146|  2.89k|			return 0;
  147|  5.87k|	}
  148|       |
  149|   121k|	for (i = 0; i < entries; i++) {
  ------------------
  |  Branch (149:14): [True: 120k, False: 348]
  ------------------
  150|       |		/*
  151|       |		 * The root directory could be relatively large (4-16kB).
  152|       |		 * Fortunately, the LABEL is usually the first entry in the
  153|       |		 * directory. On tiny disks we call read() per entry.
  154|       |		 */
  155|   120k|		if (!dir)
  ------------------
  |  Branch (155:7): [True: 0, False: 120k]
  ------------------
  156|      0|			ent = (struct vfat_dir_entry *)
  157|      0|				blkid_probe_get_buffer(pr,
  158|      0|					(uint64_t) offset + (i *
  159|      0|						sizeof(struct vfat_dir_entry)),
  160|      0|					sizeof(struct vfat_dir_entry));
  161|   120k|		else
  162|   120k|			ent = &dir[i];
  163|       |
  164|   120k|		if (!ent || ent->name[0] == 0x00)
  ------------------
  |  Branch (164:7): [True: 0, False: 120k]
  |  Branch (164:15): [True: 2.60k, False: 118k]
  ------------------
  165|  2.60k|			break;
  166|       |
  167|   118k|		if ((ent->name[0] == FAT_ENTRY_FREE) ||
  ------------------
  |  |  120|   118k|#define FAT_ENTRY_FREE			0xe5
  ------------------
  |  Branch (167:7): [True: 627, False: 117k]
  ------------------
  168|   117k|		    (ent->cluster_high != 0 || ent->cluster_low != 0) ||
  ------------------
  |  Branch (168:8): [True: 113k, False: 4.14k]
  |  Branch (168:34): [True: 1.90k, False: 2.24k]
  ------------------
  169|  2.24k|		    ((ent->attr & FAT_ATTR_MASK) == FAT_ATTR_LONG_NAME))
  ------------------
  |  |  119|  2.24k|#define FAT_ATTR_MASK			0x3f
  ------------------
              		    ((ent->attr & FAT_ATTR_MASK) == FAT_ATTR_LONG_NAME))
  ------------------
  |  |  118|  2.24k|#define FAT_ATTR_LONG_NAME		0x0f
  ------------------
  |  Branch (169:7): [True: 342, False: 1.90k]
  ------------------
  170|   116k|			continue;
  171|       |
  172|  1.90k|		if ((ent->attr & (FAT_ATTR_VOLUME_ID | FAT_ATTR_DIR)) ==
  ------------------
  |  |  116|  1.90k|#define FAT_ATTR_VOLUME_ID		0x08
  ------------------
              		if ((ent->attr & (FAT_ATTR_VOLUME_ID | FAT_ATTR_DIR)) ==
  ------------------
  |  |  117|  1.90k|#define FAT_ATTR_DIR			0x10
  ------------------
  |  Branch (172:7): [True: 31, False: 1.87k]
  ------------------
  173|  1.90k|		    FAT_ATTR_VOLUME_ID) {
  ------------------
  |  |  116|  1.90k|#define FAT_ATTR_VOLUME_ID		0x08
  ------------------
  174|     31|			DBG(LOWPROBE, ul_debug("\tfound fs LABEL at entry %"PRIu32, i));
  ------------------
  |  |  358|     31|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|     31|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|     31|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|     31|	do { \
  |  |  |  |  |  |  |  |   76|     31|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|     31|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|     31|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 31]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|     31|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 31]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|     31|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|     31|		x; \
  |  |  |  |  |  |   85|     31|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  175|     31|			memcpy(out, ent->name, 11);
  176|     31|			if (out[0] == 0x05)
  ------------------
  |  Branch (176:8): [True: 5, False: 26]
  ------------------
  177|      5|				out[0] = 0xE5;
  178|     31|			return 1;
  179|     31|		}
  180|  1.90k|	}
  181|  2.95k|	return 0;
  182|  2.98k|}

via_raid.c:probe_viaraid:
   50|  5.99k|{
   51|  5.99k|	uint64_t off;
   52|  5.99k|	struct via_metadata *v;
   53|       |
   54|  5.99k|	if (!S_ISREG(pr->mode) && !blkid_probe_is_wholedisk(pr))
  ------------------
  |  Branch (54:6): [True: 0, False: 5.99k]
  |  Branch (54:28): [True: 0, False: 0]
  ------------------
   55|      0|		return 1;
   56|       |
   57|  5.99k|	off = ((pr->size / 0x200)-1) * 0x200;
   58|       |
   59|  5.99k|	v = (struct via_metadata *)
   60|  5.99k|			blkid_probe_get_buffer(pr,
   61|  5.99k|				off,
   62|  5.99k|				sizeof(struct via_metadata));
   63|  5.99k|	if (!v)
  ------------------
  |  Branch (63:6): [True: 0, False: 5.99k]
  ------------------
   64|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (64:10): [True: 0, False: 0]
  ------------------
   65|       |
   66|  5.99k|	if (le16_to_cpu(v->signature) != VIA_SIGNATURE)
  ------------------
  |  |  136|  5.99k|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
              	if (le16_to_cpu(v->signature) != VIA_SIGNATURE)
  ------------------
  |  |   35|  5.99k|#define VIA_SIGNATURE		0xAA55
  ------------------
  |  Branch (66:6): [True: 5.99k, False: 0]
  ------------------
   67|  5.99k|		return 1;
   68|      0|	if (v->version_number > 2)
  ------------------
  |  Branch (68:6): [True: 0, False: 0]
  ------------------
   69|      0|		return 1;
   70|      0|	if (!blkid_probe_verify_csum(pr, via_checksum(v), v->checksum))
  ------------------
  |  Branch (70:6): [True: 0, False: 0]
  ------------------
   71|      0|		return 1;
   72|       |
   73|      0|	if (blkid_probe_sprintf_version(pr, "%u", v->version_number) != 0)
  ------------------
  |  Branch (73:6): [True: 0, False: 0]
  ------------------
   74|      0|		return 1;
   75|      0|	if (blkid_probe_set_magic(pr, off,
  ------------------
  |  Branch (75:6): [True: 0, False: 0]
  ------------------
   76|      0|				sizeof(v->signature),
   77|      0|				(unsigned char *) &v->signature))
   78|      0|		return 1;
   79|      0|	return 0;
   80|      0|}

vxfs.c:probe_vxfs:
   27|    106|{
   28|    106|	const struct vxfs_super_block *vxs;
   29|    106|	enum blkid_endianness e = mag->hint;
   30|       |
   31|    106|	vxs = blkid_probe_get_sb(pr, mag, struct vxfs_super_block);
  ------------------
  |  |  451|    106|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
   32|    106|	if (!vxs)
  ------------------
  |  Branch (32:6): [True: 0, False: 106]
  ------------------
   33|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (33:10): [True: 0, False: 0]
  ------------------
   34|       |
   35|    106|	blkid_probe_sprintf_version(pr, "%d",
   36|    106|				    (unsigned int)blkid32_to_cpu(e, vxs->vs_version));
   37|    106|	blkid_probe_set_fsblocksize(pr, blkid32_to_cpu(e, vxs->vs_bsize));
   38|    106|	blkid_probe_set_block_size(pr, blkid32_to_cpu(e, vxs->vs_bsize));
   39|    106|	blkid_probe_set_fsendianness(pr, e);
   40|       |
   41|    106|	return 0;
   42|    106|}

xfs.c:probe_xfs:
  243|    476|{
  244|    476|	const struct xfs_super_block *xs;
  245|       |
  246|    476|	xs = blkid_probe_get_sb(pr, mag, struct xfs_super_block);
  ------------------
  |  |  451|    476|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
  247|    476|	if (!xs)
  ------------------
  |  Branch (247:6): [True: 0, False: 476]
  ------------------
  248|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (248:10): [True: 0, False: 0]
  ------------------
  249|       |
  250|    476|	if (!xfs_verify_sb(xs, pr, mag))
  ------------------
  |  Branch (250:6): [True: 443, False: 33]
  ------------------
  251|    443|		return 1;
  252|       |
  253|     33|	if (*xs->sb_fname != '\0')
  ------------------
  |  Branch (253:6): [True: 26, False: 7]
  ------------------
  254|     26|		blkid_probe_set_label(pr, (unsigned char *) xs->sb_fname,
  255|     26|				sizeof(xs->sb_fname));
  256|     33|	blkid_probe_set_uuid(pr, xs->sb_uuid);
  257|     33|	blkid_probe_set_fssize(pr, xfs_fssize(xs));
  258|     33|	blkid_probe_set_fslastblock(pr, be64_to_cpu(xs->sb_dblocks));
  ------------------
  |  |  142|     33|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  259|     33|	blkid_probe_set_fsblocksize(pr, be32_to_cpu(xs->sb_blocksize));
  ------------------
  |  |  141|     33|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  260|       |	blkid_probe_set_block_size(pr, be16_to_cpu(xs->sb_sectsize));
  ------------------
  |  |  140|     33|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  261|     33|	return 0;
  262|    476|}
xfs.c:xfs_verify_sb:
  175|    476|{
  176|    476|	struct xfs_super_block sb, *sbp = &sb;
  177|       |
  178|       |	/* beXX_to_cpu(), but don't convert UUID and fsname! */
  179|    476|	sb_from_disk(ondisk, sbp);
  180|       |
  181|       |	/* sanity checks, we don't want to rely on magic string only */
  182|    476|	if (sbp->sb_agcount <= 0					||
  ------------------
  |  Branch (182:6): [True: 13, False: 463]
  ------------------
  183|    463|	    sbp->sb_sectsize < XFS_MIN_SECTORSIZE			||
  ------------------
  |  |   93|    939|#define XFS_MIN_SECTORSIZE	(1 << XFS_MIN_SECTORSIZE_LOG)
  |  |  ------------------
  |  |  |  |   91|    463|#define XFS_MIN_SECTORSIZE_LOG	9	/* i.e. 512 bytes */
  |  |  ------------------
  ------------------
  |  Branch (183:6): [True: 24, False: 439]
  ------------------
  184|    439|	    sbp->sb_sectsize > XFS_MAX_SECTORSIZE			||
  ------------------
  |  |   94|    915|#define XFS_MAX_SECTORSIZE	(1 << XFS_MAX_SECTORSIZE_LOG)
  |  |  ------------------
  |  |  |  |   92|    439|#define XFS_MAX_SECTORSIZE_LOG	15	/* i.e. 32768 bytes */
  |  |  ------------------
  ------------------
  |  Branch (184:6): [True: 45, False: 394]
  ------------------
  185|    394|	    sbp->sb_sectlog < XFS_MIN_SECTORSIZE_LOG			||
  ------------------
  |  |   91|    870|#define XFS_MIN_SECTORSIZE_LOG	9	/* i.e. 512 bytes */
  ------------------
  |  Branch (185:6): [True: 22, False: 372]
  ------------------
  186|    372|	    sbp->sb_sectlog > XFS_MAX_SECTORSIZE_LOG			||
  ------------------
  |  |   92|    848|#define XFS_MAX_SECTORSIZE_LOG	15	/* i.e. 32768 bytes */
  ------------------
  |  Branch (186:6): [True: 48, False: 324]
  ------------------
  187|    324|	    sbp->sb_sectsize != (1 << sbp->sb_sectlog)			||
  ------------------
  |  Branch (187:6): [True: 8, False: 316]
  ------------------
  188|    316|	    sbp->sb_blocksize < XFS_MIN_BLOCKSIZE			||
  ------------------
  |  |   89|    792|#define XFS_MIN_BLOCKSIZE	(1 << XFS_MIN_BLOCKSIZE_LOG)
  |  |  ------------------
  |  |  |  |   87|    316|#define XFS_MIN_BLOCKSIZE_LOG	9	/* i.e. 512 bytes */
  |  |  ------------------
  ------------------
  |  Branch (188:6): [True: 7, False: 309]
  ------------------
  189|    309|	    sbp->sb_blocksize > XFS_MAX_BLOCKSIZE			||
  ------------------
  |  |   90|    785|#define XFS_MAX_BLOCKSIZE	(1 << XFS_MAX_BLOCKSIZE_LOG)
  |  |  ------------------
  |  |  |  |   88|    309|#define XFS_MAX_BLOCKSIZE_LOG	16	/* i.e. 65536 bytes */
  |  |  ------------------
  ------------------
  |  Branch (189:6): [True: 26, False: 283]
  ------------------
  190|    283|	    sbp->sb_blocklog < XFS_MIN_BLOCKSIZE_LOG			||
  ------------------
  |  |   87|    759|#define XFS_MIN_BLOCKSIZE_LOG	9	/* i.e. 512 bytes */
  ------------------
  |  Branch (190:6): [True: 7, False: 276]
  ------------------
  191|    276|	    sbp->sb_blocklog > XFS_MAX_BLOCKSIZE_LOG			||
  ------------------
  |  |   88|    752|#define XFS_MAX_BLOCKSIZE_LOG	16	/* i.e. 65536 bytes */
  ------------------
  |  Branch (191:6): [True: 9, False: 267]
  ------------------
  192|    267|	    sbp->sb_blocksize != (1ULL << sbp->sb_blocklog)		||
  ------------------
  |  Branch (192:6): [True: 7, False: 260]
  ------------------
  193|    260|	    sbp->sb_inodesize < XFS_DINODE_MIN_SIZE			||
  ------------------
  |  |   98|    736|#define	XFS_DINODE_MIN_SIZE	(1 << XFS_DINODE_MIN_LOG)
  |  |  ------------------
  |  |  |  |   96|    260|#define	XFS_DINODE_MIN_LOG	8
  |  |  ------------------
  ------------------
  |  Branch (193:6): [True: 3, False: 257]
  ------------------
  194|    257|	    sbp->sb_inodesize > XFS_DINODE_MAX_SIZE			||
  ------------------
  |  |   99|    733|#define	XFS_DINODE_MAX_SIZE	(1 << XFS_DINODE_MAX_LOG)
  |  |  ------------------
  |  |  |  |   97|    257|#define	XFS_DINODE_MAX_LOG	11
  |  |  ------------------
  ------------------
  |  Branch (194:6): [True: 3, False: 254]
  ------------------
  195|    254|	    sbp->sb_inodelog < XFS_DINODE_MIN_LOG			||
  ------------------
  |  |   96|    730|#define	XFS_DINODE_MIN_LOG	8
  ------------------
  |  Branch (195:6): [True: 3, False: 251]
  ------------------
  196|    251|	    sbp->sb_inodelog > XFS_DINODE_MAX_LOG			||
  ------------------
  |  |   97|    727|#define	XFS_DINODE_MAX_LOG	11
  ------------------
  |  Branch (196:6): [True: 3, False: 248]
  ------------------
  197|    248|	    sbp->sb_inodesize != (1 << sbp->sb_inodelog)		||
  ------------------
  |  Branch (197:6): [True: 12, False: 236]
  ------------------
  198|    236|	    (sbp->sb_blocklog - sbp->sb_inodelog != sbp->sb_inopblog)	||
  ------------------
  |  Branch (198:6): [True: 3, False: 233]
  ------------------
  199|    233|	    (sbp->sb_rextsize * sbp->sb_blocksize > XFS_MAX_RTEXTSIZE)	||
  ------------------
  |  |  101|    233|#define	XFS_MAX_RTEXTSIZE	(1024 * 1024 * 1024)	/* 1GB */
  ------------------
  |  Branch (199:6): [True: 10, False: 223]
  ------------------
  200|    223|	    (sbp->sb_rextsize * sbp->sb_blocksize < XFS_MIN_RTEXTSIZE)	||
  ------------------
  |  |  103|    223|#define	XFS_MIN_RTEXTSIZE	(4 * 1024)		/* 4kB */
  ------------------
  |  Branch (200:6): [True: 3, False: 220]
  ------------------
  201|    220|	    (sbp->sb_imax_pct > 100 /* zero sb_imax_pct is valid */)	||
  ------------------
  |  Branch (201:6): [True: 3, False: 217]
  ------------------
  202|    217|	    sbp->sb_dblocks == 0					||
  ------------------
  |  Branch (202:6): [True: 3, False: 214]
  ------------------
  203|    214|	    sbp->sb_dblocks > XFS_MAX_DBLOCKS(sbp)			||
  ------------------
  |  |  106|    690|#define XFS_MAX_DBLOCKS(s) ((uint64_t)(s)->sb_agcount * (s)->sb_agblocks)
  ------------------
  |  Branch (203:6): [True: 71, False: 143]
  ------------------
  204|    143|	    sbp->sb_dblocks < XFS_MIN_DBLOCKS(sbp))
  ------------------
  |  |  107|    143|#define XFS_MIN_DBLOCKS(s) ((uint64_t)((s)->sb_agcount - 1) *	\
  |  |  108|    143|			 (s)->sb_agblocks + XFS_MIN_AG_BLOCKS)
  |  |  ------------------
  |  |  |  |  105|    143|#define XFS_MIN_AG_BLOCKS	64
  |  |  ------------------
  ------------------
  |  Branch (204:6): [True: 101, False: 42]
  ------------------
  205|    434|		return 0;
  206|       |
  207|     42|	if ((sbp->sb_versionnum & 0x0f) == 5) {
  ------------------
  |  Branch (207:6): [True: 9, False: 33]
  ------------------
  208|      9|		uint32_t expected, crc;
  209|      9|		const unsigned char *csummed;
  210|       |
  211|      9|		if (!(sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT))
  ------------------
  |  |  110|      9|#define XFS_SB_VERSION_MOREBITSBIT	0x8000
  ------------------
  |  Branch (211:7): [True: 3, False: 6]
  ------------------
  212|      3|			return 0;
  213|      6|		if (!(sbp->sb_features2 & XFS_SB_VERSION2_CRCBIT))
  ------------------
  |  |  111|      6|#define XFS_SB_VERSION2_CRCBIT		0x00000100
  ------------------
  |  Branch (213:7): [True: 3, False: 3]
  ------------------
  214|      3|			return 0;
  215|       |
  216|      3|		expected = sbp->sb_crc;
  217|      3|		csummed = blkid_probe_get_sb_buffer(pr, mag, sbp->sb_sectsize);
  218|      3|		if (!csummed)
  ------------------
  |  Branch (218:7): [True: 0, False: 3]
  ------------------
  219|      0|			return 0;
  220|       |
  221|      3|		crc = ul_crc32c_exclude_offset(~0LL, csummed, sbp->sb_sectsize,
  222|      3|			                       offsetof(struct xfs_super_block, sb_crc),
  223|      3|			                       sizeof_member(struct xfs_super_block, sb_crc));
  ------------------
  |  |  260|      3|#define sizeof_member(TYPE, MEMBER) sizeof(((TYPE *)0)->MEMBER)
  ------------------
  224|      3|		crc = bswap_32(crc ^ ~0LL);
  225|       |
  226|      3|		if (!blkid_probe_verify_csum(pr, crc, expected))
  ------------------
  |  Branch (226:7): [True: 3, False: 0]
  ------------------
  227|      3|			return 0;
  228|      3|	}
  229|       |
  230|     33|	return 1;
  231|     42|}
xfs.c:sb_from_disk:
  116|    476|{
  117|       |
  118|    476|	to->sb_magicnum = be32_to_cpu(from->sb_magicnum);
  ------------------
  |  |  141|    476|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  119|    476|	to->sb_blocksize = be32_to_cpu(from->sb_blocksize);
  ------------------
  |  |  141|    476|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  120|    476|	to->sb_dblocks = be64_to_cpu(from->sb_dblocks);
  ------------------
  |  |  142|    476|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  121|    476|	to->sb_rblocks = be64_to_cpu(from->sb_rblocks);
  ------------------
  |  |  142|    476|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  122|    476|	to->sb_rextents = be64_to_cpu(from->sb_rextents);
  ------------------
  |  |  142|    476|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  123|    476|	to->sb_logstart = be64_to_cpu(from->sb_logstart);
  ------------------
  |  |  142|    476|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  124|    476|	to->sb_rootino = be64_to_cpu(from->sb_rootino);
  ------------------
  |  |  142|    476|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  125|    476|	to->sb_rbmino = be64_to_cpu(from->sb_rbmino);
  ------------------
  |  |  142|    476|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  126|    476|	to->sb_rsumino = be64_to_cpu(from->sb_rsumino);
  ------------------
  |  |  142|    476|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  127|    476|	to->sb_rextsize = be32_to_cpu(from->sb_rextsize);
  ------------------
  |  |  141|    476|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  128|    476|	to->sb_agblocks = be32_to_cpu(from->sb_agblocks);
  ------------------
  |  |  141|    476|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  129|    476|	to->sb_agcount = be32_to_cpu(from->sb_agcount);
  ------------------
  |  |  141|    476|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  130|    476|	to->sb_rbmblocks = be32_to_cpu(from->sb_rbmblocks);
  ------------------
  |  |  141|    476|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  131|    476|	to->sb_logblocks = be32_to_cpu(from->sb_logblocks);
  ------------------
  |  |  141|    476|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  132|    476|	to->sb_versionnum = be16_to_cpu(from->sb_versionnum);
  ------------------
  |  |  140|    476|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  133|    476|	to->sb_sectsize = be16_to_cpu(from->sb_sectsize);
  ------------------
  |  |  140|    476|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  134|    476|	to->sb_inodesize = be16_to_cpu(from->sb_inodesize);
  ------------------
  |  |  140|    476|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  135|    476|	to->sb_inopblock = be16_to_cpu(from->sb_inopblock);
  ------------------
  |  |  140|    476|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  136|    476|	to->sb_blocklog = from->sb_blocklog;
  137|    476|	to->sb_sectlog = from->sb_sectlog;
  138|    476|	to->sb_inodelog = from->sb_inodelog;
  139|    476|	to->sb_inopblog = from->sb_inopblog;
  140|    476|	to->sb_agblklog = from->sb_agblklog;
  141|    476|	to->sb_rextslog = from->sb_rextslog;
  142|    476|	to->sb_inprogress = from->sb_inprogress;
  143|    476|	to->sb_imax_pct = from->sb_imax_pct;
  144|    476|	to->sb_icount = be64_to_cpu(from->sb_icount);
  ------------------
  |  |  142|    476|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  145|    476|	to->sb_ifree = be64_to_cpu(from->sb_ifree);
  ------------------
  |  |  142|    476|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  146|    476|	to->sb_fdblocks = be64_to_cpu(from->sb_fdblocks);
  ------------------
  |  |  142|    476|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  147|    476|	to->sb_frextents = be64_to_cpu(from->sb_frextents);
  ------------------
  |  |  142|    476|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  148|    476|	to->sb_uquotino = be64_to_cpu(from->sb_uquotino);
  ------------------
  |  |  142|    476|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  149|    476|	to->sb_gquotino = be64_to_cpu(from->sb_gquotino);
  ------------------
  |  |  142|    476|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  150|    476|	to->sb_qflags = be16_to_cpu(from->sb_qflags);
  ------------------
  |  |  140|    476|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  151|    476|	to->sb_flags = from-> sb_flags;
  152|    476|	to->sb_shared_vn = from-> sb_shared_vn;
  153|    476|	to->sb_inoalignmt = be32_to_cpu(from->sb_inoalignmt);
  ------------------
  |  |  141|    476|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  154|    476|	to->sb_unit = be32_to_cpu(from->sb_unit);
  ------------------
  |  |  141|    476|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  155|    476|	to->sb_width = be32_to_cpu(from->sb_width);
  ------------------
  |  |  141|    476|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  156|    476|	to->sb_dirblklog = from-> sb_dirblklog;
  157|    476|	to->sb_logsectlog = from-> sb_logsectlog;
  158|    476|	to->sb_logsectsize = be16_to_cpu(from->sb_logsectsize);
  ------------------
  |  |  140|    476|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  159|    476|	to->sb_logsunit = be32_to_cpu(from->sb_logsunit);
  ------------------
  |  |  141|    476|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  160|    476|	to->sb_features2 = be32_to_cpu(from->sb_features2);
  ------------------
  |  |  141|    476|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  161|    476|	to->sb_bad_features2 = be32_to_cpu(from->sb_bad_features2);
  ------------------
  |  |  141|    476|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  162|    476|	to->sb_features_compat = be32_to_cpu(from->sb_features_compat);
  ------------------
  |  |  141|    476|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  163|    476|	to->sb_features_ro_compat = be32_to_cpu(from->sb_features_ro_compat);
  ------------------
  |  |  141|    476|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  164|    476|	to->sb_features_incompat = be32_to_cpu(from->sb_features_incompat);
  ------------------
  |  |  141|    476|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  165|    476|	to->sb_features_log_incompat = be32_to_cpu(from->sb_features_log_incompat);
  ------------------
  |  |  141|    476|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  166|    476|	to->sb_crc = be32_to_cpu(from->sb_crc);
  ------------------
  |  |  141|    476|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  167|    476|	to->sb_spino_align = be32_to_cpu(from->sb_spino_align);
  ------------------
  |  |  141|    476|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  168|    476|	to->sb_pquotino = be64_to_cpu(from->sb_pquotino);
  ------------------
  |  |  142|    476|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  169|    476|	to->sb_lsn = be64_to_cpu(from->sb_lsn);
  ------------------
  |  |  142|    476|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  170|       |	to->sb_rrmapino = be64_to_cpu(from->sb_rrmapino);
  ------------------
  |  |  142|    476|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  171|    476|}
xfs.c:xfs_fssize:
  234|     33|{
  235|     33|	uint32_t lsize = xs->sb_logstart ? xs->sb_logblocks : 0;
  ------------------
  |  Branch (235:19): [True: 32, False: 1]
  ------------------
  236|     33|	uint64_t avail_blocks = be64_to_cpu(xs->sb_dblocks) - be32_to_cpu(lsize);
  ------------------
  |  |  142|     33|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
              	uint64_t avail_blocks = be64_to_cpu(xs->sb_dblocks) - be32_to_cpu(lsize);
  ------------------
  |  |  141|     33|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  237|     33|	uint64_t fssize = avail_blocks*be32_to_cpu(xs->sb_blocksize);
  ------------------
  |  |  141|     33|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  238|       |
  239|     33|	return fssize;
  240|     33|}
xfs.c:probe_xfs_log:
  331|  5.94k|{
  332|  5.94k|	int i;
  333|  5.94k|	struct xlog_rec_header *rhead;
  334|  5.94k|	const unsigned char *buf;
  335|       |
  336|  5.94k|	buf = blkid_probe_get_buffer(pr, 0, 256*1024);
  337|  5.94k|	if (!buf)
  ------------------
  |  Branch (337:6): [True: 0, False: 5.94k]
  ------------------
  338|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (338:10): [True: 0, False: 0]
  ------------------
  339|       |
  340|       |	/* check the first 512 512-byte sectors */
  341|  2.55M|	for (i = 0; i < 512; i++) {
  ------------------
  |  Branch (341:14): [True: 2.55M, False: 4.92k]
  ------------------
  342|       |		/* this is regular XFS (maybe with some sectors shift), ignore */
  343|  2.55M|		if (memcmp(&buf[i*512], "XFSB", 4) == 0)
  ------------------
  |  Branch (343:7): [True: 1.01k, False: 2.55M]
  ------------------
  344|  1.01k|			return 1;
  345|       |
  346|  2.55M|		rhead = (struct xlog_rec_header *)&buf[i*512];
  347|       |
  348|  2.55M|		if (xlog_valid_rec_header(rhead)) {
  ------------------
  |  Branch (348:7): [True: 8, False: 2.55M]
  ------------------
  349|      8|			blkid_probe_set_uuid_as(pr, rhead->h_uuid, "LOGUUID");
  350|       |
  351|      8|			if (blkid_probe_set_magic(pr, i * 512,
  ------------------
  |  Branch (351:8): [True: 0, False: 8]
  ------------------
  352|      8|						sizeof(rhead->h_magicno),
  353|      8|						(unsigned char *) &rhead->h_magicno))
  354|      0|				return 1;
  355|       |
  356|      8|			return 0;
  357|      8|		}
  358|  2.55M|	}
  359|       |
  360|  4.92k|	return 1;
  361|  5.94k|}
xfs.c:xlog_valid_rec_header:
  305|  2.55M|{
  306|  2.55M|	uint32_t hlen;
  307|       |
  308|  2.55M|	if (rhead->h_magicno != cpu_to_be32(XLOG_HEADER_MAGIC_NUM))
  ------------------
  |  |  133|  2.55M|#define cpu_to_be32(x) ((uint32_t) htobe32(x))
  ------------------
  |  Branch (308:6): [True: 2.55M, False: 291]
  ------------------
  309|  2.55M|		return 0;
  310|       |
  311|    291|	if (!rhead->h_version ||
  ------------------
  |  Branch (311:6): [True: 58, False: 233]
  ------------------
  312|    233|            (be32_to_cpu(rhead->h_version) & (~XLOG_VERSION_OKBITS)))
  ------------------
  |  |  141|    233|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
                          (be32_to_cpu(rhead->h_version) & (~XLOG_VERSION_OKBITS)))
  ------------------
  |  |  302|    233|#define XLOG_VERSION_OKBITS	(XLOG_VERSION_1 | XLOG_VERSION_2)
  |  |  ------------------
  |  |  |  |  300|    233|#define XLOG_VERSION_1		1
  |  |  ------------------
  |  |               #define XLOG_VERSION_OKBITS	(XLOG_VERSION_1 | XLOG_VERSION_2)
  |  |  ------------------
  |  |  |  |  301|    233|#define XLOG_VERSION_2		2	/* Large IClogs, Log sunit */
  |  |  ------------------
  ------------------
  |  Branch (312:13): [True: 94, False: 139]
  ------------------
  313|    152|		return 0;
  314|       |
  315|       |	/* LR body must have data or it wouldn't have been written */
  316|    139|	hlen = be32_to_cpu(rhead->h_len);
  ------------------
  |  |  141|    139|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  317|    139|	if (hlen <= 0 || hlen > INT_MAX)
  ------------------
  |  Branch (317:6): [True: 26, False: 113]
  |  Branch (317:19): [True: 25, False: 88]
  ------------------
  318|     51|		return 0;
  319|       |
  320|     88|	if (rhead->h_fmt != cpu_to_be32(XLOG_FMT_LINUX_LE) &&
  ------------------
  |  |  133|    176|#define cpu_to_be32(x) ((uint32_t) htobe32(x))
  ------------------
  |  Branch (320:6): [True: 83, False: 5]
  ------------------
  321|     83|	    rhead->h_fmt != cpu_to_be32(XLOG_FMT_LINUX_BE) &&
  ------------------
  |  |  133|    171|#define cpu_to_be32(x) ((uint32_t) htobe32(x))
  ------------------
  |  Branch (321:6): [True: 82, False: 1]
  ------------------
  322|     82|	    rhead->h_fmt != cpu_to_be32(XLOG_FMT_IRIX_BE))
  ------------------
  |  |  133|     82|#define cpu_to_be32(x) ((uint32_t) htobe32(x))
  ------------------
  |  Branch (322:6): [True: 80, False: 2]
  ------------------
  323|     80|		return 0;
  324|       |
  325|      8|	return 1;
  326|     88|}

zonefs.c:probe_zonefs:
   63|     74|{
   64|     74|	const struct zonefs_super *sb;
   65|       |
   66|     74|	sb = (struct zonefs_super *)
   67|     74|		blkid_probe_get_buffer(pr, ZONEFS_SB_OFST,
  ------------------
  |  |   18|     74|#define ZONEFS_SB_OFST		0
  ------------------
   68|     74|				       sizeof(struct zonefs_super));
   69|     74|	if (!sb)
  ------------------
  |  Branch (69:6): [True: 0, False: 74]
  ------------------
   70|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (70:10): [True: 0, False: 0]
  ------------------
   71|       |
   72|     74|	if (!zonefs_verify_csum(pr, sb))
  ------------------
  |  Branch (72:6): [True: 73, False: 1]
  ------------------
   73|     73|		return 1;
   74|       |
   75|      1|	if (sb->s_label[0])
  ------------------
  |  Branch (75:6): [True: 0, False: 1]
  ------------------
   76|      0|		blkid_probe_set_label(pr, (unsigned char *) sb->s_label,
   77|      0|				      sizeof(sb->s_label));
   78|       |
   79|      1|	blkid_probe_set_uuid(pr, sb->s_uuid);
   80|      1|	blkid_probe_set_fsblocksize(pr, ZONEFS_BLOCK_SIZE);
  ------------------
  |  |   20|      1|#define ZONEFS_BLOCK_SIZE	4096U
  ------------------
   81|      1|	blkid_probe_set_block_size(pr, ZONEFS_BLOCK_SIZE);
  ------------------
  |  |   20|      1|#define ZONEFS_BLOCK_SIZE	4096U
  ------------------
   82|       |
   83|      1|	return 0;
   84|     74|}
zonefs.c:zonefs_verify_csum:
   53|     74|{
   54|     74|	uint32_t expected = le32_to_cpu(sb->s_crc);
  ------------------
  |  |  137|     74|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
   55|     74|	uint32_t crc = ul_crc32_exclude_offset(
   56|     74|			~0LL, (unsigned char *) sb, sizeof(*sb),
   57|       |		       offsetof(__typeof__(*sb), s_crc), sizeof(sb->s_crc), 0);
   58|     74|	return blkid_probe_verify_csum(pr, crc, expected);
   59|     74|}

topology.c:topology_free:
  211|  5.99k|{
  212|  5.99k|	free(data);
  213|  5.99k|}

